在Vc下如何使用sendmessage模拟Ctrl+V键
可做粘贴操作,(不用WM_PASTE)
请给出详细可用代码,键盘资料很难查,急!急!

解决方案 »

  1.   

    直接操作剪贴版也可以吧。。这里有一段代码:
    VOID WINAPI EditPaste(VOID) 

        PLABELBOX pbox; 
        HGLOBAL   hglb; 
        LPTSTR    lptstr; 
        PLABELBOX pboxCopy; 
        int cx, cy; 
        HWND hwnd; 
     
        pbox = hwndSelected == NULL ? NULL : 
            (PLABELBOX) GetWindowLong(hwndSelected, 0); 
     
        // If the application is in edit mode, 
        // get the clipboard text. 
     
        if (pbox != NULL && pbox->fEdit) 
        { 
            if (!IsClipboardFormatAvailable(CF_TEXT)) 
                return; 
            if (!OpenClipboard(hwndMain)) 
                return; 
     
            hglb = GetClipboardData(CF_TEXT); 
            if (hglb != NULL) 
            { 
                lptstr = GlobalLock(hglb); 
                if (lptstr != NULL) 
                { 
                    // Call the application-defined ReplaceSelection 
                    // function to insert the text and repaint the 
                    // window. 
     
                    ReplaceSelection(hwndSelected, pbox, lptstr); 
                    GlobalUnlock(hglb); 
                } 
            } 
            CloseClipboard(); 
     
            return; 
        } 
     
        // If the application is not in edit mode, 
        // create a label window. 
     
        if (!IsClipboardFormatAvailable(uLabelFormat)) 
            return; 
        if (!OpenClipboard(hwndMain)) 
            return; 
     
        hglb = GetClipboardData(uLabelFormat); 
        if (hglb != NULL) 
        { 
            pboxCopy = GlobalLock(hglb); 
            if (pboxCopy != NULL) 
            { 
                cx = pboxCopy->rcText.right + CX_MARGIN; 
                cy = pboxCopy->rcText.top * 2 + cyText; 
     
                hwnd = CreateWindowEx( 
                    WS_EX_NOPARENTNOTIFY | WS_EX_TRANSPARENT, 
                    atchClassChild, NULL, WS_CHILD, 0, 0, cx, cy, 
                    hwndMain, NULL, hinst, NULL 
                ); 
                if (hwnd != NULL) 
                { 
                    pbox = (PLABELBOX) GetWindowLong(hwnd, 0); 
                    memcpy(pbox, pboxCopy, sizeof(LABELBOX)); 
                    ShowWindow(hwnd, SW_SHOWNORMAL); 
                    SetFocus(hwnd); 
                } 
                GlobalUnlock(hglb); 
            } 
        } 
        CloseClipboard(); 

    参阅msdn:
    msdn library-windows开发-windows基本服务-进程间通讯-sdk文档-interprocess communication-clipboard-clipboard-using clipboard
      

  2.   

    厉害,可我只能用Ctrl+V来模拟粘贴操作
      

  3.   

    keybd_event(VK_CONTROL,0,0,0);
    keybd_event('V',0,0,0);  Sleep(10);
    keybd_event('V', 0, KEYEVENTF_KEYUP, 0);
    keybd_event(VK_CONTROL, 0, KEYEVENTF_KEYUP,0);
      

  4.   

    成了,感谢jishiping(JSP 季世平) ,以后要向
    各为多多学习