zoukankan      html  css  js  c++  java
  • user32的使用

    1. 通过代码查询特定的窗口,并在文本框中输入文字然后单击"OK"按钮
      • 需要查找的Dialog

      • 使用Spy++查看窗口信息

      • 通过代码实现功能
         1     class Program
         2     {
         3         //define method
         4 
         5         /// <summary>
         6         /// 查找顶级窗口,如果有指定的类名和窗口的名字则表示成功返回一个窗口的句柄。否则返回零。
         7         /// </summary>
         8         /// <param name="lpClassName">lpClassName参数指向类名</param>
         9         /// <param name="lpWindowName">lpWindowName指向窗口名</param>
        10         /// <returns></returns>
        11         [DllImport("User32.dll", EntryPoint = "FindWindow")]
        12         private static extern IntPtr FindWindow(string lpClassName, string lpWindowName);
        13 
        14         /// <summary>
        15         /// 在窗口列表中寻找与指定条件相符的第一个子窗口 
        16         /// </summary>
        17         /// <param name="hwndParent">父窗口句柄</param>
        18         /// <param name="hwndChildAfter">子窗口句柄</param>
        19         /// <param name="lpszClass">窗口类名</param>
        20         /// <param name="lpszWindow">窗口名</param>
        21         /// <returns></returns>
        22         [DllImport("user32.dll", EntryPoint = "FindWindowEx")]
        23         private static extern IntPtr FindWindowEx(IntPtr hwndParent, IntPtr hwndChildAfter, string lpszClass, string lpszWindow);
        24 
        25         /// <summary>
        26         /// 该函数将指定的消息发送到一个或多个窗口
        27         /// </summary>
        28         /// <param name="hWnd">接收消息的窗口句柄</param>
        29         /// <param name="Msg">指定被发送的消息类型</param>
        30         /// <param name="wParam"></param>
        31         /// <param name="lParam">发送的消息</param>
        32         /// <returns></returns>
        33         [DllImport("User32.dll", EntryPoint = "SendMessage")]
        34         private static extern int SendMessage(IntPtr hWnd, int Msg, IntPtr wParam, string lParam);
        35 
        36         //define message type
        37         private const int WM_GETTEXT = 0x000D;
        38         private const int WM_SETTEXT = 0x000C;
        39         private const int WM_CLICK = 0x00F5;
        40 
        41         public static void Main() 
        42         {
        43             SearchWindow();
        44         }
        45 
        46         private static void SearchWindow()
        47         {
        48             //主窗口类型名及窗口名
        49             string lpszParentClassName = ""; 
        50             string lpszParentWindowName = "Print To File";
        51             //主窗口句柄
        52             IntPtr ParenthWnd = new IntPtr(0);
        53             //子窗口句柄
        54             IntPtr EdithWnd = new IntPtr(0);
        55 
        56             //查到主窗体,得到整个窗体 
        57             ParenthWnd = FindWindow(null, lpszParentWindowName);
        58             //判断这个窗体是否有效 
        59             if (!ParenthWnd.Equals(IntPtr.Zero))
        60             {
        61                 //得到FileName这个子窗体,并设置其内容 
        62                 EdithWnd = FindWindowEx(ParenthWnd, EdithWnd, "Edit", "");
        63                 if (!EdithWnd.Equals(IntPtr.Zero))
        64                 {
        65                     //调用SendMessage方法设置其内容 
        66                     SendMessage(EdithWnd, WM_SETTEXT, (IntPtr)0, "你需要输入的文本");
        67                 }
        68                 //得到OK这个子窗体,并设置其内容 
        69                 EdithWnd = FindWindowEx(ParenthWnd, EdithWnd, "Button", "OK");
        70                 if (!EdithWnd.Equals(IntPtr.Zero))
        71                 {
        72                     SendMessage(EdithWnd, WM_CLICK, (IntPtr)0, "");
        73                 }
        74             }
        75         } 
        76     }
  • 相关阅读:
    VUE初始化
    Flask基础
    算法面试题整理
    python基础数据类型整理
    Cookies 和 Session
    Django 第一天
    初入社会八个月总结
    CSS常用选择器
    分享一点漂亮的扁平化网页
    几个漂亮的网页设计
  • 原文地址:https://www.cnblogs.com/JustYong/p/4048683.html
Copyright © 2011-2022 走看看