模拟windows窗体点击,你是高手给俺说说呗!

编程有钱人了 2009-06-03 04:52:02
偶是搞web滴(asp.net),对于winform 我比较盲(c#.net)
假设有个按钮 如:QQ聊天框的“发送消息”按钮 怎么抓到它并点击,还有如果IE浏览器打开一个网页 里面也有个按钮,怎么模拟点击

偶也去百度,Google了 但是俺看不懂他们写的啥意思!俺就看你写的

告诉俺呗你是好人!!!

怎么编写个软件 模拟鼠标点击windows窗体中的按钮,浏览器中的按钮你能解决吗?(最好是能带上注释)
其他人有知道的吗?

...全文
420 43 打赏 收藏 转发到动态 举报
写回复
用AI写文章
43 条回复
切换为时间正序
请发表友善的回复…
发表回复
赵4老师 2009-11-30
  • 打赏
  • 举报
回复
AutoHotKey
lgpguoping 2009-11-26
  • 打赏
  • 举报
回复
可以用flash模拟windows窗体中的按钮画面,在利用flash的编程对你想象的画面控制,IE 对flash的支持也比较好,flash完成会自动生成网页文件html,让flash的消息传输出来用
trace();
用asp调用传出来的信息。和vb编程差不多
我姓区不姓区 2009-06-05
  • 打赏
  • 举报
回复
楼主真厚道,我啥忙没帮上都给了我5分
ChrisAK 2009-06-04
  • 打赏
  • 举报
回复
[Quote=引用 31 楼 tmxk2002 的回复:]
呵呵,这个东西我以前的同事实现过,用vb做的,模拟鼠标点击界面,但定位鼠标点击位置很麻烦,不同的分辨率,不通的显示器,都会不一样,而且必须让ie全频,否则都会点击不正确。效率也是问题
[/Quote]
所以说类似的功能尽量不要用模拟鼠标键盘的方法.一个是定位困难,另外还要求被
操作的窗体必须占用焦点,会严重影响用户的操作.

一般来说Web可以通过WebBrowser调用脚本,winform只要底层是使用Windows
标准控件的,获得窗体句柄后基本都可以通过SendMessage来模拟键盘和鼠标的录
入.不过有些控件如果要读取或设置它们的内容就比较麻烦,比如ListView之类的
东东,要涉及到跨进程的内存操作.但使用消息来模拟操作没有定位的限制,也不会
影响到用户的操作.
小猪飞飞 2009-06-04
  • 打赏
  • 举报
回复
万变不离其中,找到那个控件,无论是句柄或者是实际对象,总之找到了,就好办了.
PS:不建议模拟鼠标,问题多多,
用对象.click
或者,模拟找到句柄,设定光标,然后模拟回车,搞定,代码有,但不好给,抱歉.
wangxiao2008 2009-06-04
  • 打赏
  • 举报
回复
webBrowser1.Navigate(url);
IHTMLDocument2 doc = (IHTMLDocument2)webBrowser1.Document;
IHTMLElement btn = (IHTMLElement)doc.all.item("submit", 0);
btn.click();

zgke 2009-06-04
  • 打赏
  • 举报
回复
[Quote=引用 31 楼 tmxk2002 的回复:]
呵呵,这个东西我以前的同事实现过,用vb做的,模拟鼠标点击界面,但定位鼠标点击位置很麻烦,不同的分辨率,不通的显示器,都会不一样,而且必须让ie全频,否则都会点击不正确。效率也是问题
[/Quote]

你先打开IE记录下窗体的小大..再打开还控制那么大小.
xuefly09 2009-06-04
  • 打赏
  • 举报
回复
偶要学习!
  • 打赏
  • 举报
回复
呵呵,这个东西我以前的同事实现过,用vb做的,模拟鼠标点击界面,但定位鼠标点击位置很麻烦,不同的分辨率,不通的显示器,都会不一样,而且必须让ie全频,否则都会点击不正确。效率也是问题
我姓区不姓区 2009-06-04
  • 打赏
  • 举报
回复
[Quote=引用 27 楼 wangjun8868 的回复:]
引用 13 楼 ChrisAK 的回复:
引用 12 楼 wangjun8868 的回复:
引用 8 楼 ChrisAK 的回复:
windows下模拟键盘和鼠标用
keybd_event

mouse_event

如果只是发送一般的键盘用
System.Windows.Forms.SendKeys.
另外如果是WebBrowser里的按钮的话用鼠标键盘模拟反而容易出错.
直接获取按钮的HtmlElement引发click更好.


我能获得HtmlElement的click  但是没啥反应!!!!!click  只是它的一个事件属性  没有实实在…
[/Quote]

good!!
发出来大家共享一下吧~~~
wzuomin 2009-06-04
  • 打赏
  • 举报
回复
我用下面这段代码也能实现126信箱的自动登录,呵呵。


element = Me.TheWebBrowser.Document.GetElementById("user")
If element IsNot Nothing Then element.InnerText = “myname”
element = Me.TheWebBrowser.Document.GetElementById("password")
If element IsNot Nothing Then
element.InnerText = “123456”
element.Focus()
SendKeys.SendWait("{ENTER}")
IsCheckForAutoLogin = False
End If
jinjazz 2009-06-04
  • 打赏
  • 举报
回复
winform的用api ,webbrowser的用dom对象执行脚本
编程有钱人了 2009-06-04
  • 打赏
  • 举报
回复
[Quote=引用 13 楼 ChrisAK 的回复:]
引用 12 楼 wangjun8868 的回复:
引用 8 楼 ChrisAK 的回复:
windows下模拟键盘和鼠标用
keybd_event

mouse_event

如果只是发送一般的键盘用
System.Windows.Forms.SendKeys.
另外如果是WebBrowser里的按钮的话用鼠标键盘模拟反而容易出错.
直接获取按钮的HtmlElement引发click更好.


我能获得HtmlElement的click 但是没啥反应!!!!!click 只是它的一个事件属性 没有实实在在点击难歌按钮怎么…
[/Quote]

哈哈解决了

做了个测试,成功实现网易邮箱的自动化登录 嘿嘿 好高兴哦
likegod 2009-06-04
  • 打赏
  • 举报
回复
楼主,建议学习一下windows钩子编程相关知识。
wenzilj 2009-06-04
  • 打赏
  • 举报
回复
Web 貌似可以写 JS脚本注入吧。

Winform 估计得用底层API了。 没做过。
zgke 2009-06-04
  • 打赏
  • 举报
回复
发消息对IE来说是没效果的.

[DllImport("user32.dll")]
public static extern long SetCursorPos(int x, int y);

[DllImport("user32.dll", EntryPoint = "mouse_event")]
public static extern long Mouse_Event(int dwFlags, int dx, int dy, int cButtons, int dwExtraInfo);



dwFlags:
左键 2=Down 4=Up
右键 8=Down 16=Up

dx:dy:
当前鼠标位置的移动量 并且在 dwFlags 为1的时候有效果


cButtons: 0
dwExtraInfo :0
使用方法

Zgke.SysInfo.WindowsAPI.Win32API.SetCursorPos(807,271);
Zgke.SysInfo.WindowsAPI.Win32API.Mouse_Event(2, 0, 0, 0, 0);
Zgke.SysInfo.WindowsAPI.Win32API.Mouse_Event(4, 0, 0, 0,0);



悔说话的哑巴 2009-06-04
  • 打赏
  • 举报
回复
要加密,后要解秘?
TkingCN 2009-06-04
  • 打赏
  • 举报
回复
看了 你的说法 感觉你的意思是想用 按键精灵吧
顶一下 好嘞
编程有钱人了 2009-06-04
  • 打赏
  • 举报
回复
[Quote=引用 19 楼 ojlovecd 的回复:]
汗……
很不幸的告诉你,我也是搞web的……
winform我了解的不一定比你多……
我觉得用windows api应该可以模拟吧,具体我也不了解,实话实说,我真的不会
[/Quote]
你这样高手都不会 还有谁会啊啊不过也要谢谢你
redleafe 2009-06-04
  • 打赏
  • 举报
回复
学习下,希望给出解决方法,让大家一起学习下。
加载更多回复(22)

110,571

社区成员

发帖
与我相关
我的任务
社区描述
.NET技术 C#
社区管理员
  • C#
  • Web++
  • by_封爱
加入社区
  • 近7日
  • 近30日
  • 至今
社区公告

让您成为最强悍的C#开发者

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