from  www.vckbase.com  
 
如何将字符发送到记事本或其它程序中  
(yu_hl发表于2001-8-16  13:28:58)  
 
HWND  hWnd  =  ::FindWindow(  "Notepad  ",  NULL);  
if(hWnd)  
{  
HWND  hEdit  =  FindWindowEx(hWnd,  NULL,    "Edit  ",  NULL);  
if(hEdit)  
::PostMessage(hEdit,  WM_CHAR,  0x41,  0);//发送‘A’到notepad  
}    这ASCII编码就行了, 中文呢? 需要GB2312? 手中没有,往哪查呢?

解决方案 »

  1.   

    如果该程序支持CTRL+V, 可容如下方式模拟:
    HWND hNotepad = ...;::OpenClipboard(hNotepad);
    EmptyClipboard();
    char *ch = "中华人民共和国";
    HGLOBAL hglbCopy = GlobalAlloc(GMEM_MOVEABLE, strlen(ch)); 
    char *lptstrCopy = (char *)GlobalLock(hglbCopy); 
    strcpy(lptstrCopy, ch);
    GlobalUnlock(hglbCopy); 
    SetClipboardData(CF_TEXT, hglbCopy); ::BringWindowToTop(hNotepad);
    keybd_event(VK_CONTROL, 0, KEYEVENTF_EXTENDEDKEY, 0); 
    keybd_event('V', 0, KEYEVENTF_EXTENDEDKEY, 0); 
    keybd_event('V', 0, KEYEVENTF_EXTENDEDKEY|KEYEVENTF_KEYUP, 0);
    keybd_event(VK_CONTROL, 0, KEYEVENTF_EXTENDEDKEY|KEYEVENTF_KEYUP, 0);CloseClipboard();
      

  2.   

    char *ch = "中华人民共和国";HWND  hWnd  =  ::FindWindow(  "Notepad  ",  NULL);  
    if(hWnd)  
    {  
    HWND  hEdit  =  FindWindowEx(hWnd,  NULL,    "Edit  ",  NULL);  
    if(hEdit)  
    for(int i = 0; i < strlen(ch); i ++ )
    ::PostMessage(hEdit,  WM_CHAR,  *(ch+i),  0);//发送‘A’到notepad  
    }    
      

  3.   

    GetFocus 得到有输入焦点的窗口
      

  4.   

    everandforever(Forever) 说的不对, 做了一下,是乱符兄弟们继续啊
      

  5.   

    char *ch = "中华人民共和国";HWND  hWnd  =  ::FindWindow(  "Notepad  ",  NULL);  
    if(hWnd)  
    {  
    HWND  hEdit  =  FindWindowEx(hWnd,  NULL,    "Edit  ",  NULL);  
    if(hEdit)  
    ::SetWindowText( m_edit.m_hWnd, ch );
    }
      

  6.   

    char *ch = "中华人民共和国";HWND  hWnd  =  ::FindWindow(  "Notepad  ",  NULL);  
    if(hWnd)  
    {  
    HWND  hEdit  =  FindWindowEx(hWnd,  NULL,    "Edit  ",  NULL);  
    if(hEdit)  
    ::SetWindowText( hEdit  , ch );
    }
      

  7.   

    char *ch = "中华人民共和国";HWND  hWnd  =  ::FindWindow(  "Notepad  ",  NULL);  
    if(hWnd)  
    {  
    HWND  hEdit  =  FindWindowEx(hWnd,  NULL,    "Edit  ",  NULL);  
    if(hEdit)  
    ::SendMessage( hEdit, WM_SETTEXT, 0, ch );
    }
      

  8.   

    ::SendMessage( hEdit, WM_SETTEXT, 0, (long)ch );
    是对了, 呵呵, 最后一问, 怎么发送回车过去? 键值是多少了? 0x??