user32的使用
2024-08-28 01:24:27
- 通过代码查询特定的窗口,并在文本框中输入文字然后单击"OK"按钮
- 需要查找的Dialog
- 使用Spy++查看窗口信息
- 通过代码实现功能
class Program
{
//define method /// <summary>
/// 查找顶级窗口,如果有指定的类名和窗口的名字则表示成功返回一个窗口的句柄。否则返回零。
/// </summary>
/// <param name="lpClassName">lpClassName参数指向类名</param>
/// <param name="lpWindowName">lpWindowName指向窗口名</param>
/// <returns></returns>
[DllImport("User32.dll", EntryPoint = "FindWindow")]
private static extern IntPtr FindWindow(string lpClassName, string lpWindowName); /// <summary>
/// 在窗口列表中寻找与指定条件相符的第一个子窗口
/// </summary>
/// <param name="hwndParent">父窗口句柄</param>
/// <param name="hwndChildAfter">子窗口句柄</param>
/// <param name="lpszClass">窗口类名</param>
/// <param name="lpszWindow">窗口名</param>
/// <returns></returns>
[DllImport("user32.dll", EntryPoint = "FindWindowEx")]
private static extern IntPtr FindWindowEx(IntPtr hwndParent, IntPtr hwndChildAfter, string lpszClass, string lpszWindow); /// <summary>
/// 该函数将指定的消息发送到一个或多个窗口
/// </summary>
/// <param name="hWnd">接收消息的窗口句柄</param>
/// <param name="Msg">指定被发送的消息类型</param>
/// <param name="wParam"></param>
/// <param name="lParam">发送的消息</param>
/// <returns></returns>
[DllImport("User32.dll", EntryPoint = "SendMessage")]
private static extern int SendMessage(IntPtr hWnd, int Msg, IntPtr wParam, string lParam); //define message type
private const int WM_GETTEXT = 0x000D;
private const int WM_SETTEXT = 0x000C;
private const int WM_CLICK = 0x00F5; public static void Main()
{
SearchWindow();
} private static void SearchWindow()
{
//主窗口类型名及窗口名
string lpszParentClassName = "";
string lpszParentWindowName = "Print To File";
//主窗口句柄
IntPtr ParenthWnd = new IntPtr();
//子窗口句柄
IntPtr EdithWnd = new IntPtr(); //查到主窗体,得到整个窗体
ParenthWnd = FindWindow(null, lpszParentWindowName);
//判断这个窗体是否有效
if (!ParenthWnd.Equals(IntPtr.Zero))
{
//得到FileName这个子窗体,并设置其内容
EdithWnd = FindWindowEx(ParenthWnd, EdithWnd, "Edit", "");
if (!EdithWnd.Equals(IntPtr.Zero))
{
//调用SendMessage方法设置其内容
SendMessage(EdithWnd, WM_SETTEXT, (IntPtr), "你需要输入的文本");
}
//得到OK这个子窗体,并设置其内容
EdithWnd = FindWindowEx(ParenthWnd, EdithWnd, "Button", "OK");
if (!EdithWnd.Equals(IntPtr.Zero))
{
SendMessage(EdithWnd, WM_CLICK, (IntPtr), "");
}
}
}
}
最新文章
- ajax函数封装
- Unity调用Android类方法
- 使用AXIS2客户端调用 WEBSERVICE
- Visual Studio 2015 社区版.专业版.企业版[含安装密钥Pro&;Ent]
- C语言动态存储分配
- 推荐两款Xcode插件:KSImageNamed &; ColorSense
- windows查看端口占用情况及查杀进程
- Go as continuous delivery tool for .NET
- angular2项目添加ng2-bootstrap
- 初试 Vue.js
- msyql多软件连接
- C#连接sql server windows 和 sqlserver 身份验证的两种连接字符串
- 纯 CSS 实现高度与宽度成比例的效果
- Python开发——3.基本数据类型之列表、元组和字典
- css 横向滚动条webkit-scrollbar
- SSI服务端包含技术
- 深入浅出MS SQL——编辑table 出错
- Spring+Mybatis+Dubbo报错java.lang.reflect.MalformedParameterizedTypeException
- DevExpress的DateEdit设置显示日期和时间
- HTML5获取地理经纬度并通过百度接口得到实时位置