我下载了一个冗余文件删除的工具,但是只能一部部删除,如图我在MFC中新建立一个工程模拟一下键盘按键来自动完成删除操作,代码如下:
HWND DeleKEY;
DeleKEY=::FindWindow(NULL,"Windows Installer 冗余文件清理工具");
if (DeleKEY==NULL)
{
MessageBox("窗口寻找失败");
return;
}
        ::SetForegroundWindow(DeleKEY);
 Sleep(50);
::keybd_event(89,0,0,0);
::keybd_event(89,0,KEYEVENTF_KEYUP,0);
运行了一下成功激活了窗口但是按键Y好像并没有作用(键盘下按下Y是可以的删除的,程序中模拟就不行了),只是激活了而已,求大牛分析一下我程序中的错误。MFC

解决方案 »

  1.   

    ::keybd_event(89,0,0,0);
    ::keybd_event(89,0,KEYEVENTF_KEYUP,0);测试后,输出y是没问题的.
      

  2.   

    FindWindow。你可以通过FindWindowEx找到是,否按钮的句柄,直接发按下消息给它.
      

  3.   

    ::PostMessage(按钮句柄,BM_CLICK,0,0);
      

  4.   

    DWORD dwPos = MAKEWPARAM ( x, y ); 你希望用鼠标点击的位置。// 在屏幕的这x,y位置点击鼠标。
    PostThreadMessage (dwThreadID, WM_LBUTTONDOWN, dwPos, 0); 
    PostThreadMessage (dwThreadID, WM_LBUTTONUP, dwPos, 0);// 然后按键盘的 Delete 键
    PostThreadMessage (dwThreadID, WM_CHAR, (WPARAM)VK_DELETE, 0);
      

  5.   

    在点击和按delete键之间最好加上一个延迟。
      

  6.   

    谢谢了我已经得出结论在win8下不兼容而已