望高手指点一下:我想用C#写一个程序,当我把鼠标放到其他程序的输入框中时,可以取得这个输入框的当前句柄及这个文本框的caption值。希望路过的高手指点一下,无比感谢
解决方案 »
- 关于C#的性能系列问题二:正则表达式多了一行不相关的Regex.IsMatch代码性能反而提升70%,求解释
- 使用ado.net的olddb的方式读取excel的为何没有第一行
- C# 在aspx页面中执行SQL
- 求一遍历文件的算法
- 怎么把@@error函数的值返回到C#的程序中啊
- 400分求学习计划2
- 水晶报表打印数据集内容问题!
- 急:在线待答:如何在code-behind文件中访问aspx中用javascript写的一段脚本?
- 关于在WINFORM中加入WEB页的问题?急急
- vs.net中的正则表达式
- 我办个人网站的目的:主要是学习软件开发,顺便试销自己写的两个共享软件。听说备案很麻烦,怎么办
- 现在下载哪个devexpress for vs2005的控件包能安装,好用?
public static extern bool SetForegroundWindow(IntPtr hWnd);
[DllImport("User32.dll", EntryPoint = "FindWindow")] //找窗体
private static extern IntPtr FindWindow(string lpClassName,string lpWindowName);
[DllImport("user32.dll", EntryPoint = "FindWindowEx")] //找子窗体
private static extern IntPtr FindWindowEx(IntPtr hwndParent,IntPtr hwndChildAfter, string lpszClass, string lpszWindow);
[DllImport("User32.dll", EntryPoint = "SendMessage")] //用于发送信息给窗体 等待返回消息
private static extern int SendMessage(IntPtr hWnd, int Msg, IntPtr wParam, string lParam);
[DllImport("user32.dll")] //用于发送信息给窗体 加入消息列队 不等待返回消息
private static extern int PostMessage(IntPtr hwnd, uint wMsg, IntPtr wParam, uint lParam);
const int WM_SETTEXT = 0x000C;
const int WM_CLICK = 0x00F5;
//下面的这些参数都可以用Spy++查到
string lpszParentClass = "TfLogin"; //整个窗口的类名
string lpszParentWindow = "用户登录"; //窗口标题
string lpszClass = "TEdit"; //需要查找的子窗口的类名,也就是输入框
string lpszClassname = ""; //需要查找的子窗口的标题
string lpszClass_Submit = "Button"; //需要查找的Button的类名
string lpszName_Submit = "登录"; //需要查找的Button的标题
string text = "pass";
IntPtr ParenthWnd = new IntPtr(0);
IntPtr EdithWnd = new IntPtr(0);
IntPtr CWnd = new IntPtr(0);
//查到窗体,得到整个窗体
ParenthWnd = FindWindow(lpszParentClass, lpszParentWindow);
//判断这个窗体是否有效
if (!ParenthWnd.Equals(IntPtr.Zero))
{
//得到User Name这个子窗体,并设置其内容
EdithWnd = FindWindowEx(ParenthWnd, EdithWnd, lpszClass, lpszClassname);
if (!EdithWnd.Equals(IntPtr.Zero))
{
SendMessage(EdithWnd, WM_SETTEXT, IntPtr.Zero, text);
}
}
//得到Button这个子窗体,并触发它的Click事件
CWnd = FindWindowEx(ParenthWnd, CWnd, lpszClass_Submit, lpszName_Submit);
if (!CWnd.Equals(IntPtr.Zero))
{
SendMessage(CWnd, WM_CLICK, (IntPtr)0, "0");
}
}