如何模拟 ctr+v 等快捷剑?最好有测试源码。
先谢维快

解决方案 »

  1.   

    发消息,对于SDI类型的程序比较好用。以下示例向记事本中发送F1相关消息,其它消息参见注释。具体消息可通过SPY++得到。STARTUPINFO si;
    PROCESS_INFORMATION pi;

    ZeroMemory(&si, sizeof(si));
    si.cb = sizeof(si);
    si.dwFlags = STARTF_USESHOWWINDOW;//隐藏窗口;
    si.wShowWindow = SW_HIDE;
    ZeroMemory(&pi, sizeof(pi));if(!CreateProcess(NULL, "D:\\WINNT\\NOTEPAD.EXE", 
    NULL, NULL, FALSE, CREATE_NEW_CONSOLE, NULL, NULL, &si, &pi))
    {
      AfxMessageBox("运行NOTEPAD失败!请确认执行文件是否存在。");
    }
    else
    {
      Sleep(1000);PostThreadMessage(pi.dwThreadId, WM_SYSKEYDOWN, VK_F1, 1);
    PostThreadMessage(pi.dwThreadId, WM_SYSKEYUP, VK_F1, 1);//Ctrl + V
    //PostThreadMessage(pi.dwThreadId, WM_SYSKEYDOWN, VK_CONTROL, 0x1);
    //PostThreadMessage(pi.dwThreadId, WM_SYSKEYDOWN, 'V', 0x1);
    //PostThreadMessage(pi.dwThreadId, WM_CHAR, 0x16, 0x1);//Ctrl + P
    //PostThreadMessage(pi.dwThreadId, WM_SYSKEYDOWN, VK_CONTROL, 0x1);
    //PostThreadMessage(pi.dwThreadId, WM_SYSKEYDOWN, 'P', 0x1);
    //PostThreadMessage(pi.dwThreadId, WM_CHAR, 0x10, 0x1);//Ctrl + O
    //PostThreadMessage(pi.dwThreadId, WM_SYSKEYDOWN, VK_CONTROL, 0x1);
    //PostThreadMessage(pi.dwThreadId, WM_SYSKEYDOWN, 'O', 0x1);
    //PostThreadMessage(pi.dwThreadId, WM_CHAR, 0xF, 0x1);//Ctrl + S
    //PostThreadMessage(pi.dwThreadId, WM_SYSKEYDOWN, VK_CONTROL, 0x1);
    //PostThreadMessage(pi.dwThreadId, WM_SYSKEYDOWN, 'S', 0x1);
    //PostThreadMessage(pi.dwThreadId, WM_CHAR, 0x13, 0x1);//Ctrl + X
    //PostThreadMessage(pi.dwThreadId, WM_SYSKEYDOWN, VK_CONTROL, 0x1);
    //PostThreadMessage(pi.dwThreadId, WM_SYSKEYDOWN, 'X', 0x1);
    //PostThreadMessage(pi.dwThreadId, WM_CHAR, 0x18, 0x1);}
      

  2.   

    ::PostMessage( hWnd, WM_PASTE, 0, 0 );