我在程序使用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(),都没有成功!!!急死人了。

解决方案 »

  1.   

    WM_CHAR这个消息改动为别的试试看,比如WM_KEYDOWN。
      

  2.   

    PostMessage(hWnd,WM_KEYDOWN,65,0);
        PostMessage(hWnd, WM_CHAR, 65, 0);
        PostMessage(hWnd,WM_KEYUP,65,0);
    there is error as before!!thanks
      

  3.   

    你可以看看CEdit的WM_KEYDOWN的WPARAM 和 LPARAM 这两个也有用。再说,你应该把消息传送给记事本里面的CEDIT的HWND。
      

  4.   

    我怎样才能应该把消息传送给记事本里面的CEDIT的HWND呢?我不知道怎样得到他,他应该是主窗口的一个child吧,FindWindowEx()我得不到他的HWND,请指点一下迷津。谢谢