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), "");
      }
      }
      }
      }

最新文章

  1. ajax函数封装
  2. Unity调用Android类方法
  3. 使用AXIS2客户端调用 WEBSERVICE
  4. Visual Studio 2015 社区版.专业版.企业版[含安装密钥Pro&amp;Ent]
  5. C语言动态存储分配
  6. 推荐两款Xcode插件:KSImageNamed &amp; ColorSense
  7. windows查看端口占用情况及查杀进程
  8. Go as continuous delivery tool for .NET
  9. angular2项目添加ng2-bootstrap
  10. 初试 Vue.js
  11. msyql多软件连接
  12. C#连接sql server windows 和 sqlserver 身份验证的两种连接字符串
  13. 纯 CSS 实现高度与宽度成比例的效果
  14. Python开发——3.基本数据类型之列表、元组和字典
  15. css 横向滚动条webkit-scrollbar
  16. SSI服务端包含技术
  17. 深入浅出MS SQL——编辑table 出错
  18. Spring+Mybatis+Dubbo报错java.lang.reflect.MalformedParameterizedTypeException
  19. DevExpress的DateEdit设置显示日期和时间
  20. HTML5获取地理经纬度并通过百度接口得到实时位置

热门文章

  1. 理解 ES6 Generator-next()方法
  2. #leetcode刷题之路9- 回文数
  3. 编译安装开源免费中文分词scws
  4. thinkphp5 分页带参数的解决办法
  5. Vue2+VueRouter2+webpack+vue-cil构建完整项目实例(附:详细步骤截图)
  6. PHP一些常用魔术方法
  7. Spark知识点
  8. centos7上部署新版 jumpserver 跳板机服务
  9. Go语言的标准net库使用
  10. HASH算法小结