SPY++是一个编程用的工具。在VS2005的开发工具中包括了。大体的功能就是可以查看当前所有窗口的句柄、TITLE、窗口类等信息。 你所要求的这些功能,离开SPY++是不太好调试的。取得窗口句柄使用 [DllImport("User32.dll")] public static extern int FindWindow(string strClassName, string strWindowName); [DllImport("User32.dll")] public static extern int FindWindowEx(int hwndParent, int hwndChildAfter, string strClassName, string strWindowName);这两个函数。后面一个比前面的功能更强大。 第一个函数的功能是返回窗口的句柄(INT),第一个参数是窗口类通过SPY++可以查到(Windows Class Name),第二个是窗口的名称即CAPTION。 在不知道Classname的情况下可以把null传入第一个参数。 第二个函数的功能类似但有一些特别的功能,它多了二个参数,第一个参数是父窗口的句柄。在windows中窗体是嵌套关系的,如果你传递了这个参数(不为0),那么在查找窗口时就只会查找这个父窗口的子窗口。查找他们符合下面的条件的窗口。第二个参数一般用0吧。你要自动输入值,这个得根据你的具体需要,比如你输入的内容是什么?如果是输入文本用key_event是可以的。具体的你应该多查MSDN看。触发按钮与自动输入是一回事情,使用mouse_event就可以了。
2.SendMessage发送消息,SET_TEXT,
3.keybd_event
你所要求的这些功能,离开SPY++是不太好调试的。取得窗口句柄使用 [DllImport("User32.dll")]
public static extern int FindWindow(string strClassName, string strWindowName);
[DllImport("User32.dll")]
public static extern int FindWindowEx(int hwndParent, int hwndChildAfter, string strClassName, string strWindowName);这两个函数。后面一个比前面的功能更强大。
第一个函数的功能是返回窗口的句柄(INT),第一个参数是窗口类通过SPY++可以查到(Windows Class Name),第二个是窗口的名称即CAPTION。
在不知道Classname的情况下可以把null传入第一个参数。
第二个函数的功能类似但有一些特别的功能,它多了二个参数,第一个参数是父窗口的句柄。在windows中窗体是嵌套关系的,如果你传递了这个参数(不为0),那么在查找窗口时就只会查找这个父窗口的子窗口。查找他们符合下面的条件的窗口。第二个参数一般用0吧。你要自动输入值,这个得根据你的具体需要,比如你输入的内容是什么?如果是输入文本用key_event是可以的。具体的你应该多查MSDN看。触发按钮与自动输入是一回事情,使用mouse_event就可以了。
{
int h1 = 0, h2 = 0,h3;
h1 = FindWindow(null, "运行"); //这要修改为窗口标题
if (h1 != 0)
{
h2 = FindWindowEx(h1, 0, "ComboBox", null);
if (h2 != 0)
{
SendMessage(h2, WM_SETTEXT, 0, "Regedit.exe");
h3 = FindWindowEx(h1, 0, null, "确定"); //这要修改为按钮文本
if (h3 != 0)
{
SendMessage(h3, WM_CLICK, 0, null);
}
else
{
MessageBox.Show("h3==0");
}
}
else
{
MessageBox.Show("h2==0");
}
}
else
{
MessageBox.Show("h1==0");
}
}