用DELPHI控制下载弹出窗口,并点击保存为何不行

szchenzb 2014-02-26 04:19:22
我用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;
...全文
728 12 打赏 收藏 转发到动态 举报
AI 作业
写回复
用AI写文章
12 条回复
切换为时间正序
请发表友善的回复…
发表回复
lght 2014-03-20
  • 打赏
  • 举报
回复
引用 11 楼 szchenzb 的回复:
[quote=引用 10 楼 lght 的回复:] 试试模拟快捷键
谢谢!我也模拟了CTRL+S也不执行,不知为啥?只是能定位到按钮“保存”上,但不执行任何按键[/quote] 怎么是Ctrl+S呢,是Alt+S啊
szchenzb 2014-03-19
  • 打赏
  • 举报
回复
引用 10 楼 lght 的回复:
试试模拟快捷键
谢谢!我也模拟了CTRL+S也不执行,不知为啥?只是能定位到按钮“保存”上,但不执行任何按键
lght 2014-03-18
  • 打赏
  • 举报
回复
试试模拟快捷键
szchenzb 2014-03-18
  • 打赏
  • 举报
回复
引用 8 楼 simonhehe 的回复:
模拟回车事件: keybd_event(VK_RETURN, MapVirtualKey(VK_RETURN, 0),0,0); keybd_event(VK_RETURN, MapVirtualKey(VK_RETURN, 0),KEYEVENTF_KEYUP,0);
这些都试过了就是不行,不知道是不是我调用的主程序一定要先隐藏起来才行还是什么问题,因为这些在我的另一个程序控制PDF阅读器都能正常运行,但就控制不了“下载保存”这种弹出式窗口
sololie 2014-03-16
  • 打赏
  • 举报
回复
看看子窗口的句柄找对了没有,用spy++照一下然后对比一下窗口句柄 hc
simonhehe 2014-03-16
  • 打赏
  • 举报
回复
模拟回车事件: keybd_event(VK_RETURN, MapVirtualKey(VK_RETURN, 0),0,0); keybd_event(VK_RETURN, MapVirtualKey(VK_RETURN, 0),KEYEVENTF_KEYUP,0);
szchenzb 2014-03-13
  • 打赏
  • 举报
回复
看起来高手都归隐了,自己顶一下
szchenzb 2014-02-28
  • 打赏
  • 举报
回复
引用 3 楼 lyhoo163 的回复:
这是代码运行机制不同步造成的,特别是写文件(下载)时特出。建议使用线程。
请教一下应如何使用线程来执行?
szchenzb 2014-02-28
  • 打赏
  • 举报
回复
引用 2 楼 mytion 的回复:
是IE的下载框?如果是那很有可能于COM有关


是的,



运行我的程序只能把焦点停在保存按钮上,就是不执行下面的模拟键盘按键,请多多指教!
lyhoo163 2014-02-28
  • 打赏
  • 举报
回复
这是代码运行机制不同步造成的,特别是写文件(下载)时特出。建议使用线程。
mytion 2014-02-27
  • 打赏
  • 举报
回复
是IE的下载框?如果是那很有可能于COM有关
szchenzb 2014-02-26
  • 打赏
  • 举报
回复
把下载窗口设成当前窗口也不行

1,183

社区成员

发帖
与我相关
我的任务
社区描述
Delphi Windows SDK/API
社区管理员
  • Windows SDK/API社区
加入社区
  • 近7日
  • 近30日
  • 至今
社区公告
暂无公告

试试用AI创作助手写篇文章吧