+ -
当前位置:首页 → 问答吧 → C#用API设置另存为框值的问题,百分求助

C#用API设置另存为框值的问题,百分求助

时间:2011-12-25

来源:互联网

程序要求自动从网站下载,该网站是用表单提交返回下载的。有来路判断,直接下载是无效的。所以思路是用Webbrowers模拟点击提交按钮。

模拟提交按钮后,弹出 保存文件 的消息框,成功用API捕获框体的句柄,并且成功SendMessage点击保存。

然后弹出 另存为 框体 

我现在想做的是找到另存为消息框内 文件名 这个子框体的句柄,并且根据程序的要求更改保存的文件名后提交保存。用spy++找到这个子框体的类名是Edit,但无法用FindWindowEx获取该句柄。。经过几个小时的搜索后,发现解决方式是

c1ptr = FindWindowEx(mainform, IntPtr.Zero, "WorkerW", null);

c2ptr = FindWindowEx(c1ptr, IntPtr.Zero, "ReBarWindow32", null);

c3ptr = FindWindowEx(c2ptr, IntPtr.Zero, "ComboBoxEx32", null);

c4ptr = FindWindowEx(c3ptr, IntPtr.Zero, "ComboBox", null);

filenameptr = FindWindowEx(c4ptr, IntPtr.Zero, "Edit", null);

通过这样的方式,经过


 if (!filenameptr.Equals(IntPtr.Zero))
  {
  results = results + "| 找到文件输入框体";

  SendMessage(filenameptr, WM_SETTEXT, (IntPtr)0, "sdfsdfd"); 

  }

终于提示找到 文件名的输入框体,但用以上的

SendMessage(filenameptr, WM_SETTEXT, (IntPtr)0, "sdfsdfd"); 

死活无效啊。。

救命救命

作者: tangi   发布时间: 2011-12-25

还不如直接用 WebClient, 或者 HttpWebRequest 提交下载请求,何必自己跑去让 WebBrowser 限制。

作者: fangxinggood   发布时间: 2011-12-25

http://topic.csdn.net/u/20080410/16/fe38c3d3-c92a-49f8-9150-e1321ec2ab5b.html

作者: wuyq11   发布时间: 2011-12-25

1楼,说过了他是表单提交且判断来路。。能够用HttpWebRequest 何必大费周折呢

作者: tangi   发布时间: 2011-12-25