//我用以下代码时,成功地在记事本上看到了U,
char x='U';
::PostMessage(hWnd,WM_CHAR,x,1);//我用以下代码时,在记事本上看到了乱码,我的工程环境为VS2008+Unicode
char x='勤';
::PostMessage(hWnd,WM_CHAR,x,1);//我尝试用TCHAR x='勤',在记事本中看到的也是乱码!:(我现在的问题是如何才能给记事本发送中文信息呢?难道PostMessage()办不到吗?:(我在MSDN里,看了下SendMessae(),其参数和PostMessage()是一样的,困惑中!...

解决方案 »

  1.   


    HWND hWnd = ::FindWindow(_T("Notepad"), NULL);
    if(hWnd)
    {
    HWND hEdit = ::FindWindowEx(hWnd, NULL, _T("Edit"), NULL);
    WCHAR buf = L'勤';
    ::PostMessage(hEdit, WM_CHAR, (WPARAM)buf, 0);
    }
      

  2.   

    记事本?首先记事本就要以UNICODE方式创建吧,不然怎么支持呢?
      

  3.   

    HWND hNotepad = ::FindWindow(NULL,"无标题 - 记事本");
    if(hNotepad)
    {
    HWND hEdit = ::FindWindowEx(hNotepad,NULL,"Edit",NULL);
    if (hEdit)
    {
    char szValue[16]={0};
    sprintf(szValue,"%s","共产党");
    ::SendMessage(hEdit,WM_SETTEXT,0,(LPARAM)szValue);
    }
    }
    经测试可用。VC6 SPY++
      

  4.   

    char x='勤'; // 这个中文怎么可能只占用一个字节呢?你用字符串好了!!或者用2楼的方法。另外,你看到的乱码不一定就表示接收到的数据是错误的噢,跟编码的显示格式也是有关系的。
      

  5.   

    测试通过HWND hWnd = ::FindWindow(_T("Notepad"), NULL);
        if(hWnd)
        {
            HWND hEdit = ::FindWindowEx(hWnd, NULL, _T("Edit"), NULL);
    char buf[] = "我是中国人123";
    char *p; p = buf;

    while (*p)
    ::PostMessage(hEdit, WM_CHAR, (WPARAM)(unsigned char)*p++, 0);    }
      

  6.   

    谢谢大家的建议,现在问题已经解决了,综合大家的代码,我最终的代码是:
    TCHAR x[]=TEXT("测试成功");
    ::SendMessage(hWnd,WM_SETTEXT,0,(LPARAM)(LPCTSTR)x);