findwindow自动关闭文件保存框的问题

来源:百度知道 编辑:UC知道 时间:2024/05/31 09:34:54
因为要做一个网站自动登陆,然后下载文件的程序,当到了文件下载这一块的时候,运用到了findwindow和SendMessage方法来自动进行关闭对话框的操作,但是当我填写完文件名,并且点击确定的时候,因为文件已经存在就会弹出是否要覆盖文件的警告框,点击确定的SendMessage方法就在这个时候停住了。(弹出对话框后,程序不跑了,手动点了确定后,SendMessage方法才会完成)因为对这些函数的接口不太了解,所以请高人指点,代码如下
。。。
string lpszParent1Window = "文件保存";
string lpszClass_Submit = "Button";
string lpszClass_ComBox = "ComboBox";
string lpszClass_ComBoxEx32 = "ComboBoxEx32";
string lpszClass_Edit = "Edit";
string lpszName1_Submit = "保存(&S)";
string lpszName2_Submit = "取消";
string lpszName3_Submit = "是(&Y)";
IntPtr ParenthWnd = new IntPtr(0);
IntPtr Parenth1Wnd = new IntPtr(0);
IntPtr EdithWnd = new IntPtr(0);
IntPtr Edith2Wnd = new IntPtr(0);
if (!Parenth1Wnd.Equals(IntPtr.Zero))
{
EdithWnd = FindWindowEx(Parenth1Wnd, (IntPtr)0, "ComboBoxEx32", String.Empty);
EdithWnd = FindWindowEx(EdithWnd,

因为是用SendMessage()发送消息,所以要等WM_CLICK消息处理完,SendMessage才会返回,而处理WM_CLICK消息时弹出了要求确认覆盖的对话框,所以程序就在SendMessage(EdithWnd, WM_CLICK, (IntPtr)0, ""); 这里停住了。
如果要非阻塞式地发消息,要用PostMessage()API函数。

事实上,要实现自动按按钮的目的,还可以用SendKeys.Send()方法,发送回车键,Alt+S键,Alt+Y键等(但先要用SetForegroundWindow()API函数把要按按钮的对话框设为前景窗口)。