c#使用spy进行模拟操作
很无奈,写了很长时间,最后保存时网页失去响应,真是要命呢。本来想就此放弃了,但是想还是粗略的重写一次吧,希望日后可以对朋友有一定的帮助。
Microsoft.Spy工具是一个基础工具,我们简要介绍一下使用方法:
spy在vs有自带的,也可以在网下直接下载。
打开spy工具,主界面如下:

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

目标是在server内写入192.168.2.200,并点击Options第二个按钮
第一步,如何获取vnc窗体,使用spy进行窗体查找

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

这样我们就可以找到需要的窗体。
FindWindow 可以查找第一个主窗体,使和类名或标题。
FindWindowEx可以查找窗体下的控件。
SendMessage向窗体发送消息。


使和窗口搜索查找控件。
[DllImport("user32.dll", EntryPoint = "FindWindow", SetLastError = true)]
//参数1:指的是类名。参数2,指的是窗口的标题名。两者至少要知道1个
public static extern IntPtr FindWindow(string lpClassName, string lpWindowName);
[DllImport("user32.dll", SetLastError = true, CharSet = CharSet.Auto)]
public static extern IntPtr FindWindowEx(IntPtr parentHandle, IntPtr childAfter, string lclassName, string windowTitle);
[DllImport("user32.dll", EntryPoint = "SendMessage", SetLastError = true, CharSet = CharSet.Auto)]
public static extern IntPtr SendMessage(IntPtr hwnd, uint wMsg, int wParam, string lParam);
[DllImport("user32.dll", EntryPoint = "SendMessage", SetLastError = true, CharSet = CharSet.Auto)]
public static extern IntPtr SendMessage(IntPtr hwnd, uint wMsg, int wParam, int lParam);
IntPtr win =FindWindow(null, "VNC Viewer : Connection Details");
if (win != IntPtr.Zero)
{
IntPtr winComboBox = FindWindowEx(win, new IntPtr(), "ComboBox", null);
if (winComboBox != IntPtr.Zero)
{
IntPtr winEdit = FindWindowEx(winComboBox, new IntPtr(), "Edit", null); IntPtr resultEdit = SendMessage(winEdit, 0xC, , "192.168.2.100"); //获取第一个按钮
IntPtr button1 = FindWindowEx(win, new IntPtr(), "Button", "&Options..."); if(button1 != IntPtr.Zero)
SendMessage(button1, 0xF5, , ); //点击事件 if (winEdit != IntPtr.Zero)
{
MessageBox.Show("找到编辑框");
}
//MessageBox.Show("找到下拉框");
}
else
{
//MessageBox.Show("没有找到下拉框");
} MessageBox.Show("已经找到窗体");
}
else
{
MessageBox.Show("没有找到窗体");
}
}
执行结果如下:

如果多个按钮,又没有标题,则只能一个一个的获取,如下
如果哪位朋友还有其它方法,还请多多指教。
IntPtr button1 = FindWindowEx(win, new IntPtr(), "Button", null);
IntPtr button2 = FindWindowEx(win, button1, "Button", null);
c#使用spy进行模拟操作的更多相关文章
- adb模拟操作之event
首语: 我们都知道,adb可以对模拟器和root过的真机进行很多操作,例如:模拟点击,输入,截图,手机和PC,数据互传等.这篇要说的就是adb操作模拟器或者真机的输入输出. 0x01 问题 使用adb ...
- jquery模拟操作——trigger()函数
在页面中很多效果需要触发才能实现,比如click后的弹窗.但有时我们无法点击或是跳过用户触发,就像网页中那些可恶的广告弹窗 trigger函数可以实现模拟操作.譬如常用的点击动作,我们可以这样, $( ...
- jQuery中的模拟操作
jQuery中的模拟操作主要是通过trigger来触发,相当于页面加载完成后不需要用户点击按钮,就可以自动触发页面中的相关事件. trigger(type,[data])可以用来模拟触发自定义事件的触 ...
- 剑指Offer——Java实现栈和队列的互模拟操作
剑指Offer--Java实现栈和队列的互模拟操作 栈模拟队列 题目:JAVA实现用两个栈来实现一个队列,完成队列的Push和Pop操作.队列中的元素为int类型. 思路:其实就是把队列正常入 ...
- jQuery 模拟操作
1.常用模拟 有时,需要通过模拟用户操作,来达到单击的效果.例如在用户进入页面后,就触发 click 事件,而不需要用户去主动单击.在 jQuery 中,可以使用 trigger() 方法完成模拟操作 ...
- 第一百七十一节,jQuery,高级事件,模拟操作,命名空间,事件委托,on、off 和 one
jQuery,高级事件,模拟操作,命名空间,事件委托,on.off 和 one 学习要点: 1.模拟操作 2.命名空间 3.事件委托 4.on.off 和 one jQuery 不但封装了大量常用的事 ...
- jq模拟操作
1.常用模拟 trigger() $('#btn').trigger('click'); 当页面加载完,点击事件就会完成 上面也可以简写成:$('#btn').click(); 2.触发自定义事件 t ...
- Android自动化框架 模拟操作 模拟测试
转自:http://bbs2.c114.net/home.php?mod=space&uid=1025779&do=blog&id=5322 几种常见的Android自动化测试 ...
- <JAVA图像学习笔记>十字路口交通模拟--操作系统模拟课后小项目
项目的要求很简单: 模拟出十字路口的交通控制情况: 秒. 当东西(或南北)方向红灯时,所有车辆(除了消防车.救护车.警车)均排队等待,当东西(或南北)方向绿灯时,所有车辆按序行驶(不准超车). 制作这 ...
随机推荐
- UVAlive3523 Knights of the Round Table(bcc)
题目链接:http://acm.hust.edu.cn/vjudge/problem/viewProblem.action?id=18122 [思路] 点-双连通分量 求出bcc,判断每个bcc是否为 ...
- AFNetworking (3.1.0) 源码解析 <三>
今天要介绍的是Reachability文件夹下的AFNetworkReachabilityManager类.通过字面意思我们就可以知道AFNetworkReachabilityManager是用来监测 ...
- 建立企业内部mavenserver并使用Android Studio公布公共项目
由于Android Studio使用了Gradle构建工具,在library依赖的处理上是将被依赖的library作为一个module引入(拥有一份完整的library拷贝),而Eclipse的ADT ...
- HDU 2853 Assignment(KM最大匹配好题)
HDU 2853 Assignment 题目链接 题意:如今有N个部队和M个任务(M>=N),每一个部队完毕每一个任务有一点的效率,效率越高越好.可是部队已经安排了一定的计划,这时须要我们尽量用 ...
- [CSS3 + HTML5] Modernizr
Modernizr is a library for detecting whether the user's browsers have certain features and based on ...
- 从JPG中获取缩略图
using System; using System.Drawing; using System.Collections; using System.ComponentModel; using Sys ...
- akka
akka学习 http://www.cnblogs.com/libaoheng/archive/2012/03/19/2406836.html
- Examples_08_07
http://yarin.iteye.com/?page=4 Activity01.java package com.yarin.android.Examples_08_07; import andr ...
- __dopostback的用法 . 编辑
在.NET中,所有的服务器控件提交到服务器的时候,都会调用__doPostBack这个函数,所以灵活运用这个函数对于我们的帮助还是很大的. 比如,在我们写程序的时候经常会需要动态的生成一些控件,最简单 ...
- 神器-Sublime Text 3 代码编辑器安装与使用
一.软件获取 1.软件下载地址:http://www.sublimetext.com/3. 2.注册机和汉化下载:http://files.cnblogs.com/files/1312mn/subli ...