1. 通过代码查询特定的窗口,并在文本框中输入文字然后单击"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), "");
      }
      }
      }
      }

user32的使用的更多相关文章

  1. C#中可直接调用WIN32的API函数--USER32.DLL

    Win32的API函数可以直接在C#中直接调用,在做WinForm时还是很有帮助的.有时候直接调用Win32的API,可以很高效的实现想要的效果. using System; using System ...

  2. Winform API "user32.dll"中的函数

    命名空间:System.Runtime.InteropServices /// <summary> /// 该函数检索一指定窗口的客户区域或整个屏幕的显示设备上下文环境的句柄,以后可以在G ...

  3. 整理分享C#通过user32.dll模拟物理按键操作的代码

    对系统模拟按键方面的知识和按键映射代码做了一下梳理,在这里分享出来,适用于开发自动操作工具和游戏外挂. 主代码: public const int KEYEVENTF_EXTENDEDKEY = 0x ...

  4. 【转】c# 调用windows API(user32.dll)

    using System; using System.Collections.Generic; using System.Linq; using System.Text; using System.R ...

  5. Python 调用 user32.dll

    import ctypes h = ctypes.windll.LoadLibrary("C:\\Windows\\System32\\user32.dll") h.Message ...

  6. user32.dll

    user32.dll中的所有函数 using System; using System.Collections.Generic; using System.Linq; using System.Tex ...

  7. C# 之 user32函数库

    using System; using System.Collections.Generic; using System.Linq; using System.Text; using System.R ...

  8. 【WinAPI】User32.dll注释

    #region User32.dll 函数 /// <summary> /// 该函数检索一指定窗口的客户区域或整个屏幕的显示设备上下文环境的句柄,以后可以在GDI函数中使用该句柄来在设备 ...

  9. 【整理】c# 调用windows API(user32.dll)

    User32.dll提供了很多可供调用的接口,大致如下(转自http://blog.csdn.net/zhang399401/article/details/6978803) using System ...

  10. Win32 API中的user32.dll中的ShowWindow方法参数整理

    在使用ShowWindow方法来设置窗体的状态时,由于不知道参数值,用起来非常容易混乱,所以整理了以下其参数的枚举值,方便以后的的使用.   public class User32API { #reg ...

随机推荐

  1. git设置.gitignore文件

    .gitignore用来忽略某些git仓库中不需要上传到远程仓库的文件,例如target目录.下面说一下步骤. 1.在项目根目录中通过右键Git Bash,打开控制命令台,新建一个.gitignore ...

  2. 【Win10分区教程】

    Win10怎么分区?如何为Win10硬盘分区? 注:本教程适用于Win7.Win8.Win8.1和Win10系 到了Windows10时代,TB级硬盘已经很普及了,那么在Win10系统下如何为这些大容 ...

  3. visio studio code 用chrom启动打开本地html

    { // 使用 IntelliSense 了解相关属性. // 悬停以查看现有属性的描述. // 欲了解更多信息,请访问: https://go.microsoft.com/fwlink/?linki ...

  4. http状态码(status_codes)

    首先:1XX 接受的请求正在处理,2XX请求正常处理完毕,3XX需要进行附加操作以完成请求(重定向?),4XX服务器无法处理请求(也就是客户端请求错误),5XX服务器处理请求出错. 当然不仅仅是一张图 ...

  5. MongoDB在单机上搭建分片副本集群(windows)

    ------------------------------1.安装MongoDB...... ------------------------------2.准备好文件夹 --config:配置文件 ...

  6. ecshop漏洞修复 以及如何加固ecshop网站安全?

    由于8月份的ECSHOP通杀漏洞被国内安全厂商爆出后,众多使用ecshop程序源码的用户大面积的受到了网站被篡改,最明显的就是外贸站点被跳转到一些仿冒的网站上去,导致在谷歌的用户订单量迅速下降,从百度 ...

  7. python2.7入门---正则表达式

        正则表达式是一个特殊的字符序列,它能帮助你方便的检查一个字符串是否与某种模式匹配.Python 自1.5版本起增加了re 模块,它提供 Perl 风格的正则表达式模式.re 模块使 Pytho ...

  8. Android使用butterknife注解出现nullPointerException解决

    1.下载butterknife加入到你的libs中,构建到你的项目中,此时还不能注解成功,必须进行2配置 2.选择你的项目右键---->properties----->java compi ...

  9. 从C到C++ (1)

    从C到C++ 一. bool类型 bool取值false和true,是0和1的区别: false可以代表0,但true有很多种,并非只有1. 二. const限定符 常量在定义后就不能修改,所以定义时 ...

  10. 【好帖】 Mark

    1. 管理篇 2. 程序员选择公司的8个标准 3. 实用工具 4. 离职跳槽 5. DBA 6. 做一个网站多少钱? 7. 十大算法 8. 寻求用户评价App的正确方法 9. 工程师忽略的隐形成本 1 ...