我在程序使用PostMessage向一个打开的应用程序发送一个消息的时候,WM_CLOSE消息发送成功了,但我想向它发送字符消息的时候好象有问题,不知道为什么,盼高手指点:(以记事本为例)
HWND hWnd;
LPCTSTR lpClassName=NULL;
LPCTSTR lpWindowName="未定标题 - 记事本";
hWnd=FindWindow(lpClassName,lpWindowName);
if(hWnd==NULL)
{
AfxMessageBox("havn't found the window!");
return 1;
}
PostMessage(hWnd, WM_CLOSE, 0, 0);
在发送字符消息如:PostMessage(hWnd, WM_CHAR, 'A', 0); 以后在记事本里看不见有发送过去的字符‘A’,为什么呢?
##################################################################
之后 我又添加了下面这些代码希望做到线程绑定:还是不行!
DWORD FormThreadID = GetCurrentThreadId();
DWORD CWndThreadID = GetWindowThreadProcessId(hWnd, NULL);
AttachThreadInput(CWndThreadID, FormThreadID, true);
hWnd = GetFocus();
PostMessage(hWnd,WM_KEYDOWN,65,0);
PostMessage(hWnd, WM_CHAR, 65, 0);
PostMessage(hWnd,WM_KEYUP,65,0);
AttachThreadInput(CWndThreadID, FormThreadID, false);
然后挖出又试了SetFocus(),都没有成功!!!急死人了。
HWND hWnd;
LPCTSTR lpClassName=NULL;
LPCTSTR lpWindowName="未定标题 - 记事本";
hWnd=FindWindow(lpClassName,lpWindowName);
if(hWnd==NULL)
{
AfxMessageBox("havn't found the window!");
return 1;
}
PostMessage(hWnd, WM_CLOSE, 0, 0);
在发送字符消息如:PostMessage(hWnd, WM_CHAR, 'A', 0); 以后在记事本里看不见有发送过去的字符‘A’,为什么呢?
##################################################################
之后 我又添加了下面这些代码希望做到线程绑定:还是不行!
DWORD FormThreadID = GetCurrentThreadId();
DWORD CWndThreadID = GetWindowThreadProcessId(hWnd, NULL);
AttachThreadInput(CWndThreadID, FormThreadID, true);
hWnd = GetFocus();
PostMessage(hWnd,WM_KEYDOWN,65,0);
PostMessage(hWnd, WM_CHAR, 65, 0);
PostMessage(hWnd,WM_KEYUP,65,0);
AttachThreadInput(CWndThreadID, FormThreadID, false);
然后挖出又试了SetFocus(),都没有成功!!!急死人了。
PostMessage(hWnd, WM_CHAR, 65, 0);
PostMessage(hWnd,WM_KEYUP,65,0);
there is error as before!!thanks