2012-04-03 64 views
1

可能重複:
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); 

當我離開編輯控制時,父窗口隱藏/禁用編輯控件。

此代碼僅在單擊編輯控件的同時代碼正在運行時才起作用....但如何使其以編程方式完全自動插入文本而無需單擊編輯控件。可以在後臺完成這一切嗎?

+0

不再!好吧,我爲你Google它... MSDN上的WM_CHAR:'通過TranslateMessage函數翻譯WM_KEYDOWN消息時發佈到帶有鍵盤焦點的窗口'。 '帶鍵盤焦點!' – 2012-04-03 10:58:26

+0

使用'WM_CHAR'而不是'WM_SETTEXT'仍然是虛假的。問題實際上全是關於目標應用程序的行爲,當您離開它時隱藏或禁用編輯控件。但你沒有提到這一點。毫無疑問,它會在下面的評論中再次出現。請不要一直問同樣的問題。你上次沒有得到答案,因爲問題很糟糕。提出同樣的問題只會讓我們生氣。 – 2012-04-03 11:45:12

+0

@David Heffernan 如果你知道我想要什麼,那麼你爲什麼不發佈你的答案,並告訴我不要讓我們生氣.....如果你不知道或不想幫忙,那就走開。 P.S .:是的,當我離開編輯控制時,它隱藏/禁用編輯控件。 – Jigberto 2012-04-03 12:20:55

回答

0

Edit_SetText怎麼樣?

+0

我試過了,即使點擊編輯控件,其他建議也不能工作? – Jigberto 2012-04-03 11:36:26

+0

我的建議是,你不要問同樣的問題兩次。順便說一句,我已經回答了你的其他問題。 – karlphillip 2012-04-04 13:16:28