c#使用spy进行模拟操作

很无奈,写了很长时间,最后保存时网页失去响应,真是要命呢。本来想就此放弃了,但是想还是粗略的重写一次吧,希望日后可以对朋友有一定的帮助。

Microsoft.Spy工具是一个基础工具,我们简要介绍一下使用方法:

spy在vs有自带的,也可以在网下直接下载。

打开spy工具,主界面如下:

今天我们使用vnc作为一个示例

目标是在server内写入192.168.2.200,并点击Options第二个按钮

第一步,如何获取vnc窗体,使用spy进行窗体查找

拖动查找工具图标到需要的界面上。

这样我们就可以找到需要的窗体。

FindWindow 可以查找第一个主窗体,使和类名或标题。

FindWindowEx可以查找窗体下的控件。

SendMessage向窗体发送消息。

使和窗口搜索查找控件。

 1  [DllImport("user32.dll", EntryPoint = "FindWindow", SetLastError = true)]
 2         //参数1:指的是类名。参数2,指的是窗口的标题名。两者至少要知道1个
 3         public static extern IntPtr FindWindow(string lpClassName, string lpWindowName);
 4
 5
 6         [DllImport("user32.dll", SetLastError = true, CharSet = CharSet.Auto)]
 7         public static extern IntPtr FindWindowEx(IntPtr parentHandle, IntPtr childAfter, string lclassName, string windowTitle);
 8
 9         [DllImport("user32.dll", EntryPoint = "SendMessage", SetLastError = true, CharSet = CharSet.Auto)]
10         public static extern IntPtr SendMessage(IntPtr hwnd, uint wMsg, int wParam, string lParam);
11
12         [DllImport("user32.dll", EntryPoint = "SendMessage", SetLastError = true, CharSet = CharSet.Auto)]
13         public static extern IntPtr SendMessage(IntPtr hwnd, uint wMsg, int wParam, int lParam);
 1 IntPtr win =FindWindow(null, "VNC Viewer : Connection Details");
 2              if (win != IntPtr.Zero)
 3              {
 4                  IntPtr winComboBox = FindWindowEx(win, new IntPtr(), "ComboBox", null);
 5                  if (winComboBox != IntPtr.Zero)
 6                  {
 7                      IntPtr winEdit = FindWindowEx(winComboBox, new IntPtr(), "Edit", null);
 8
 9                      IntPtr resultEdit = SendMessage(winEdit, 0xC, 0, "192.168.2.100");
10
11
12                      //获取第一个按钮
13                      IntPtr button1 = FindWindowEx(win, new IntPtr(), "Button", "&Options...");
14
15                      if(button1 != IntPtr.Zero)
16                         SendMessage(button1, 0xF5, 0, 0); //点击事件
17
18                      if (winEdit != IntPtr.Zero)
19                      {
20                          MessageBox.Show("找到编辑框");
21                      }
22                      //MessageBox.Show("找到下拉框");
23                  }
24                  else
25                  {
26                      //MessageBox.Show("没有找到下拉框");
27                  }
28
29
30                  MessageBox.Show("已经找到窗体");
31              }
32              else
33              {
34                  MessageBox.Show("没有找到窗体");
35              }
36         }

执行结果如下:

如果多个按钮,又没有标题,则只能一个一个的获取,如下

如果哪位朋友还有其它方法,还请多多指教。

1 IntPtr button1 = FindWindowEx(win, new IntPtr(), "Button", null);
2 IntPtr button2 = FindWindowEx(win, button1, "Button", null);
时间: 2024-08-06 11:57:05

c#使用spy进行模拟操作的相关文章

jQuery 高级事件(模拟操作)

一.模拟操作 在事件触发的时候,有时我们需要一些模拟用户行为的操作.例如:当网页加载完毕后 自行点击一个按钮触发一个事件,而不是用户去点击 //点击按钮事件 $('input').click(function(){ alert('我的第一次点击来自模拟!'); }); //模拟用户点击行为 $('input').trigger('click'); //可以合并两个方法 $('input').click(function(){ alert('我的第一次点击来自模拟!'); }).trigger('

JavaScript之jQuery-4 jQuery事件(页面加载后执行、事件处理、事件冒泡、事件对象、模拟操作)

一.jQuery 页面加载后执行 代码执行的时机选择 - $(document).ready()方法和 window.onload事件具有相似的功能,但是在执行时机方面是有区别的 - window.onload 事件是在网页中所有的元素(包括元素的所有关联文件)完全加载到浏览器后才执行 - $(document).ready()方法注册的事件处理程序,在DOM完全加载后就可以调用 - 一般来讲, $(document).ready()的执行要优于window.onload事件 - 需要注意的是,

投资现货白银开户模拟操作

您好,我这边是海交所518号会员单位海棠投资,公司目前推荐现货白银理财投资,买涨买跌T+0随时获利,22小时连续交易不限次数,适合各类人群,涨跌1个点15元-150元可选,无资金门槛小投入大回报.建设银行三方托管,资金提取分秒到账.提前设好止盈止损,自主跟单操作,风险可控.    公司宣传片:[img]file:///C:/DOCUME~1/ADMINI~1/LOCALS~1/Temp/[email protected][GWU0353$FOVS.png[/img]http://v.youku.

Android自动化框架 模拟操作 模拟测试

转自:http://bbs2.c114.net/home.php?mod=space&uid=1025779&do=blog&id=5322 几种常见的Android自动化测试框架及其应用 随着Android应用得越来越广,越来越多的公司推出了自己移动应用测试平台.例如,百度的MTC.东软易测云.Testin云测试平台…….由于自己所在项目组就是做终端测试工具的,故抽空了解了下几种常见的基于UI层面的自动化测试工具.趁晚上有空总结下,好记心不如烂笔头呀! 一 常见Android自动

<JAVA图像学习笔记>十字路口交通模拟--操作系统模拟课后小项目

项目的要求很简单: 模拟出十字路口的交通控制情况: 考虑东.西.南.北四个方向,每条路分为两个车道,每个路口设置一盏显示灯.为简单起见, 每种灯显示时间为8秒. 当东西(或南北)方向红灯时,所有车辆(除了消防车.救护车.警车)均排队等待,当东西(或南北)方向绿灯时,所有车辆按序行驶(不准超车). 制作这个小框体程序我选择的平台是JAVA,实现结果效果图如下所示: 首先分析整个项目题目上的要求,在十字路口上通过的车辆可以抽象为两类:普通车辆和特殊车辆(包括警车,消防车,救护车等),所谓普通的车辆和

[自动化-脚本]001.自动领淘金币:Anyweb模拟操作

通过模拟手工操作的方法领取淘金币.该方法万能且通用,有能力的还可以自行修改脚本. 工具 软件下载 anywebscript.com 方法/步骤 1.安装软件如图所示 2.设置脚本: (1)进入网站:[脚本商店\模拟点击领取淘金币]并复制脚本 (2)打开软件的“新建”按钮 (3)将脚本粘贴到“功能代码”处 3.测试脚本: (1)设置用户名.密码: 方法一:可以直接在脚本中改(仅供测试使用) 方法二:把脚本的用户名.密码那两行去掉,并在下面的测试框中输入用户名.密码(实际使用时请采用方法二) (2)

使用HttpWebrequest对网站进行模拟操作(附登陆百度demo)

这篇文章是在博客园正式的第一篇文章. 不出意外以后将在web的方向发展,前段时间把老早以前做过的webqq机器人重做了一遍,算是对winform的告别吧,巩固了C#方面的知识. 本篇主要介绍了我对模拟http请求方式的介绍和理解.(博客的样式是自己写的,有木有感觉好看呢(•‾??‾?•)??°) 首先看一个get请求 1 public string GetHtml(string url, string Referer, Encoding encode, bool SaveCookie) 2 {

Robotium进行apk模拟操作用到的工具

本来想利用Robotium实现自动登录的,后来发现效率实在太低,不过还是记录一下中间用到的几个工具或文件吧. Robotium操作对象的apk需要跟测试包使用相同的签名.为了调试方便,准备把操作对象的APK打上debug签名.网上找到的方式一个是脚本签名,一个是re-sign.jar,脚本签名方式,我跑起来一直出错,re-sign.jar也总是提示CreateProcess出错,不太想去深究原因了.另外走了一条路:把debug.keystore转成debug.pk8,debug.x509.pem

使用uiautomator在手机上模拟操作的设置

1.手机上默认编码为utf-8,所以需要把项目设置成utf-8的编码: 2.打开手机开发者模式,手机第一次跟电脑连接的话,需要下载驱动,才能弹出允许调试框,在电脑端用应用宝等软件连接手机会自动下载驱动: 3.使用adb devices查看手机是否授权成功: 4.打好jar包,把jar包push到手机中  adb push weixin.jar /data/local/tmp/ 5.使用adb操作手机执行jar包    adb shell uiautomator runtest weixin.ja