سؤال

مرحبًا ، أحاول كتابة رسالة في Notepad دون الحاجة إلى الحصول عليها كنافذة تركيز (نافذة المقدمة).

هذا ما لدي حتى الآن:

    const UInt32 WM_KEYDOWN = 0x0100;
    const int VK_F5 = 0x74;

    [DllImport("user32.dll")]
    static extern bool PostMessage(IntPtr hWnd, UInt32 Msg, int wParam, int lParam);
    [STAThread]

    private void button2_Click(object sender, EventArgs e)
    {
            Process[] processes = Process.GetProcessesByName("Notepad");

            foreach (Process proc in processes)
                PostMessage(proc.MainWindowHandle, VK_TAB, VK_S, 0);

    }

ولكن هذا لا يكتب S في المفكرة. عندما أستخدم VK_F5 ، فإنه يعرض التاريخ/الوقت وعندما أستخدم VK_F1 الذي يعرض نافذة المساعدة ولكنه لا يكتب S.

لقد فكرت في استخدام Sendkey ولكن هذا يتطلب مني أن أستهدف المفكرة.

سيكون موضع تقدير أي مساعدة.

شكرًا.

هل كانت مفيدة؟

المحلول

إذا كنت تستخدم VK_F5 ، فسيقوم بإدراج التاريخ ، فهذا يعني أن إجراء إرسال رسالة الإرسال يعمل.

المشكلة هي وجهة الرسالة ، فأنت ترسل الرسائل إلى مقبض نافذة المفكرة ،

إذا كنت تريد كتابة المفاتيح في منطقة النص ، فأنت بحاجة إلى الحصول على مقبض التحكم في منطقة النص لتطبيق المفكرة وإرسال الرسالة إليه

مرخصة بموجب: CC-BY-SA مع الإسناد
لا تنتمي إلى StackOverflow
scroll top