我用DELPHI想在弹出文件下载窗口后直接模拟点击保存按钮,但不成功,只能把焦点停在保存按钮上,之后的动作不执行,请各位高手帮忙指点,代码如下:procedure TForm1.Button1Click(Sender: TObject);
var 
        H,hc:   HWND; 
        i:integer; 
  begin
        h   :=   findwindow(nil, '文件下载');
        if   H   >   0   then
        begin
//        FindWindowEx(h,0, 'Button', '保存(&S)')
                hc   :=   FindWindowEx(h,0, 'Button', '保存(&S)');
                if   hc> 0   then
                begin
//        windows.SetForegroundWindow(h);
                        SendMessage(hc,   WM_LBUTTONDOWN,   0,   0);
//                          Sleep(20);
                        SendMessage(hc,   WM_LBUTTONUP,   0,   0);
//                          Sleep(20);
//                        SendMessage(hc,   BM_CLICK,   0,   0);
//                          Sleep(20);
                        PostMessage(hc,   BM_CLICK,   0,   0);//        PostMessage(hc,   WM_KEYDOWN,   VK_RETURN,   0);                         SendMessage(hc,   WM_LBUTTONDOWN,   0,   0);
//                        SendMessage(hc,   VK_RETURN,   0,   0);
//       keybd_event(VK_RETURN, 0, KEYEVENTF_KEYUP, 0);
//PostMessage(hc,VK_RETURN,13,0);
{  SendMessage(hc, WM_LBUTTONDOWN ,MK_LBUTTON, MAKELPARAM (100, 200)); SendMessage(WM_COMMAND, ID_FILE_SAVE_AS, 0);
 keybd_event(VK_MENU, 0, 0, 0);  
keybd_event(VK_RETURN, 0, 0, 0);  keybd_event(VK_RETURN, 0, KEYEVENTF_KEYUP, 0);  
keybd_event(VK_MENU, 0, KEYEVENTF_KEYUP, 0); 
  SendMessage(hc, WM_LBUTTONUP, MK_LBUTTON, MAKELPARAM(100,200));
}                end
        end;   
end;

解决方案 »

  1.   

    是IE的下载框?如果是那很有可能于COM有关
      

  2.   

    看看子窗口的句柄找对了没有,用spy++照一下然后对比一下窗口句柄 hc
      

  3.   

    模拟回车事件:
    keybd_event(VK_RETURN, MapVirtualKey(VK_RETURN, 0),0,0);
    keybd_event(VK_RETURN, MapVirtualKey(VK_RETURN, 0),KEYEVENTF_KEYUP,0);
      

  4.   


    这些都试过了就是不行,不知道是不是我调用的主程序一定要先隐藏起来才行还是什么问题,因为这些在我的另一个程序控制PDF阅读器都能正常运行,但就控制不了“下载保存”这种弹出式窗口
      

  5.   


    谢谢!我也模拟了CTRL+S也不执行,不知为啥?只是能定位到按钮“保存”上,但不执行任何按键
      

  6.   


    谢谢!我也模拟了CTRL+S也不执行,不知为啥?只是能定位到按钮“保存”上,但不执行任何按键怎么是Ctrl+S呢,是Alt+S啊