可能重複:
Using SendMessage to enter text into an edit control belonging to another processSendMessage函數編輯controI C++
我想建立在DirectX窗口的編輯控件文本編程。我可以得到正確的編輯控制手柄,但是隻有當我點擊編輯控件時才插入文本,如何在不點擊編輯控件的情況下插入文本。我這樣做:
HWND hWnd = FindWindow(NULL,"Game");
HWND edit = FindWindowEx(hWnd, NULL, "Edit", NULL);
SendMessage(edit, WM_CHAR, (TCHAR) 'H', 0);
Sleep(100);
SendMessage(edit, WM_CHAR, (TCHAR) 'E', 0);
Sleep(100);
SendMessage(edit, WM_CHAR, (TCHAR) 'L', 0);
Sleep(100);
SendMessage(edit, WM_CHAR, (TCHAR) 'L', 0);
Sleep(100);
SendMessage(edit, WM_CHAR, (TCHAR) 'O', 0);
Sleep(100);
當我離開編輯控制時,父窗口隱藏/禁用編輯控件。
此代碼僅在單擊編輯控件的同時代碼正在運行時才起作用....但如何使其以編程方式完全自動插入文本而無需單擊編輯控件。可以在後臺完成這一切嗎?
不再!好吧,我爲你Google它... MSDN上的WM_CHAR:'通過TranslateMessage函數翻譯WM_KEYDOWN消息時發佈到帶有鍵盤焦點的窗口'。 '帶鍵盤焦點!' – 2012-04-03 10:58:26
使用'WM_CHAR'而不是'WM_SETTEXT'仍然是虛假的。問題實際上全是關於目標應用程序的行爲,當您離開它時隱藏或禁用編輯控件。但你沒有提到這一點。毫無疑問,它會在下面的評論中再次出現。請不要一直問同樣的問題。你上次沒有得到答案,因爲問題很糟糕。提出同樣的問題只會讓我們生氣。 – 2012-04-03 11:45:12
@David Heffernan 如果你知道我想要什麼,那麼你爲什麼不發佈你的答案,並告訴我不要讓我們生氣.....如果你不知道或不想幫忙,那就走開。 P.S .:是的,當我離開編輯控制時,它隱藏/禁用編輯控件。 – Jigberto 2012-04-03 12:20:55