1. using System;
  2. using System.Collections.Generic;
  3. using System.ComponentModel;
  4. using System.Data;
  5. using System.Drawing;
  6. using System.Linq;
  7. using System.Runtime.InteropServices;
  8. using System.Text;
  9. using System.Threading.Tasks;
  10. using System.Windows.Forms;
  11.  
  12. namespace cstest
  13. {
  14. public partial class Form1 : Form
  15. {
  16. //定义一个符合WINAPI返回值和参数的委托
  17. public delegate bool CallBack(IntPtr hwnd, int lParam);
  18. //声明符合上述委托的函数(定义一个函数指针)
  19. private static CallBack myCallBack;
  20. public Form1()
  21. {
  22. myCallBack = new CallBack(Report);
  23. InitializeComponent();
  24. GetHandle("C#");
  25. this.textBox1.Multiline = true;
  26. this.textBox1.Dock = DockStyle.Fill;
  27. }
  28.  
  29. private void GetHandle(string windcaption)
  30. {
  31. IntPtr mainHandle = FindWindow(null, windcaption);
  32. if (IntPtr.Zero != mainHandle)
  33. {
  34. AppendText(string.Format("{0}句柄:{1}", windcaption, Convert.ToString((int)mainHandle,)));
  35.  
  36. //EnumChildWindows((int)mainHandle, myCallBack, 0);
  37. //修改窗口标题
  38. SetWindowText((int)mainHandle, "C#");
  39. StringBuilder s = new StringBuilder();
  40. //获取控件标题
  41. int i = GetWindowText(mainHandle, s, s.Capacity);
  42. AppendText(string.Format("句柄{0}的caption:{1}", Convert.ToString((int)mainHandle, ), s.ToString()));
  43. //枚举所有子窗体,并将子窗体句柄传给myCallBack
  44. EnumChildWindows((int)mainHandle, myCallBack, );
  45. }
  46. }
  47.  
  48. private void AppendText(string msg)
  49. {
  50. this.textBox1.AppendText(msg);
  51. this.textBox1.AppendText("\r\n");
  52. }
  53. //根据窗体句柄,输出窗体caption
  54. public bool Report(IntPtr hWnd, int lParam)
  55. {
  56. StringBuilder s = new StringBuilder();
  57. int i = GetWindowText((IntPtr)hWnd, s, s.Capacity);
  58. AppendText(string.Format("句柄{0}的caption:{1}", Convert.ToString((int)hWnd, ), s.ToString()));
  59. return true;
  60. }
  61.  
  62. /// <summary>
  63. /// 获取窗体的句柄函数
  64. /// </summary>
  65. /// <param name="lpClassName">窗口类名</param>
  66. /// <param name="lpWindowName">窗口标题名</param>
  67. /// <returns>返回句柄</returns>
  68. [DllImport("user32.dll", EntryPoint = "FindWindow", SetLastError = true)]
  69. public static extern IntPtr FindWindow(string lpClassName, string lpWindowName);
  70.  
  71. [DllImport("user32.dll")]
  72. public static extern int EnumWindows(CallBack x, int y);
  73.  
  74. [DllImport("user32.dll")]
  75. private static extern IntPtr EnumChildWindows(int hWndParent, CallBack lpEnumFunc, int lParam);
  76.  
  77. [DllImport("user32.dll")]
  78. public static extern int SetWindowText(int handle, string title);
  79.  
  80. [DllImport("user32.dll", EntryPoint = "GetWindowText")]
  81. public static extern int GetWindowText(IntPtr hwnd, StringBuilder lpString,int cch);
  82.  
  83. [DllImport("User32.dll", EntryPoint = "SendMessage")]
  84. private static extern int SendMessage(IntPtr hWnd, int Msg, int wParam, StringBuilder lParam);
  85.  
  86. private void button1_Click(object sender, EventArgs e)
  87. {
  88. StringBuilder s = new StringBuilder();
  89. //获取控件标题,对TRichEdit无效
  90. //int i = GetWindowText((IntPtr)int.Parse(txtHandle.Text), s, s.Capacity);
  91. //获取控件标题,对TRichEdit有效
  92. int i = SendMessage((IntPtr)int.Parse(txtHandle.Text), 0x000D, , s);
  93. AppendText(string.Format("句柄{0}的caption:{1}", txtHandle.Text, s.ToString()));
  94. }
  95. }
  96. }

.net 调用 winapi获取窗口句柄和内容的更多相关文章

  1. [WinAPI] 获取窗口句柄的几种方法

    1.使用FindWindow函数获取窗口句柄 示例:使用FindWindow函数获取窗口句柄,然后获得窗口大小,并且移动窗口到指定位置. 我们想获得酷我音乐盒的窗口句柄并移动它,该怎么办呢? 首先打开 ...

  2. C#调用WinAPI及窗口过程

    C#调用WINAPI及Windows窗口消息的发与送 最近在做一个餐饮项目(C#Winform),其中有一块是做点菜宝接口的对接,点菜宝的厂商提供了一个WX.exe的驱动程序,这个驱动程序无直接打开, ...

  3. java分别通过httpclient和HttpURLConnection获取图片验证码内容

    前面的文章,介绍了如何通过selenium+Tesseract-OCR来识别图片验证码,如果用接口来访问的话,再用selenium就闲的笨重,下面就介绍一下分别通过httpclient和HttpURL ...

  4. windows获取窗口句柄

    1.使用FindWindow函数获取窗口句柄 示例:使用FindWindow函数获取窗口句柄,然后获得窗口大小和标题,并且移动窗口到指定位置. #include <Windows.h> # ...

  5. phpcms-v9 --- 如何通过{pc}标签获取全站文章内容?

    1.phpcms-v9默认情况下只能根据catid获取当前栏目及子栏目下的文章,但是有时候我们需要如何通过{pc}标签来获取全站文章内容的需求,应该怎么做呢? 第一步:在content_tag.cla ...

  6. SpringMVC——使用RequestDispatcher.include()和HttpServletResponseWrapper动态获取jsp输出内容

    介绍本篇内容前,先抛出我遇到的问题或者说是需求!(精读阅读本篇可能花费您15分钟,略读需5分钟左右) 一:需求说明 有一个Controller有两个方法 第一个方法通过指定的路径和参数去渲染jsp内容 ...

  7. 从IE浏览器获取当前页面的内容

    从IE浏览器获取当前页面内容可能有多种方式,今天我所介绍的是其中一种方法.基本原理:当鼠标点击当前IE页面时,获取鼠标的坐标位置,根据鼠标位置获取当前页面的句柄,然后根据句柄,调用win32的东西进而 ...

  8. Python获取网页指定内容(BeautifulSoup工具的使用方法)

    Python用做数据处理还是相当不错的,如果你想要做爬虫,Python是很好的选择,它有很多已经写好的类包,只要调用,即可完成很多复杂的功能,此文中所有的功能都是基于BeautifulSoup这个包. ...

  9. python3获取指定目录内容的详细信息

    不同平台获取指定目录内容的详细信息命令各不相同: Linux中可以通过ls -al获取获取 windows中可以通过dir命令获取 下面是我写的一个通用获取目录内容详细信息的python3脚本: #! ...

随机推荐

  1. Vue报错 Duplicate keys detected: '1'. This may cause an update error. vue报错

    情况一.错误信息展示为关键字‘keys‘,此时应该检查for循环中的key,循环的key值不为唯一性 (很普通) 情况二.有两个相同的for循环,而这两个for循环的key值是一样的,此时将一个的ke ...

  2. Saltstack之使用salt安装es6.0以上的head插件

    本实验使用salt安装es6.0以上的head插件 ES6.0以上手动安装head插件参考:https://www.cnblogs.com/minseo/p/9117470.html 文件夹目录为 / ...

  3. iOS-自定义导航控制器

    BasicNavigationViewController:UINavigationViwController /* 隐藏导航底部线条 */ -(void)viewDidLoad{    [super ...

  4. iOS——归档对象的创建,数据写入与读取

    归档(archiving)是指另一种形式的序列化,但它是任何对象都可以实现的更常规的模型.专门编写用于保存数据的任何模型对象都应该支持归档.比属性列表多了很良好的伸缩性,因为无论添加多少对象,将这些对 ...

  5. python基础----条件判断与循环

    一.python数据类型 1.整数(包括整数.负数) 2.浮点数(小数) 3.字符串(需要用单引号‘’或双引号“”括起来) 注:当字符串中含有单引号时,用双引号括起来(now="let's ...

  6. IndemindSDK数据采集程序

    目录 Indemind相机数据采集 Indemind相机数据采集 最近做一些实验需要自己采集一些数据玩玩,打算用之前买的indemind双目模组,实际用的时候感觉官方提供的采集程序不太好用,于是打算自 ...

  7. 如何制作红蓝3d电影(详细教程)

    自20世纪初以来,电影制作人一直试图通过制作3D电影来利用我们的双眼.现在,由于大量相对实惠的3D电视,你可以享受电影院以外的额外空间 - 你自己拍摄的视频.对于大预算的电影,电影摄影师使用两个相连的 ...

  8. 为 Exchange 2010 用户添加联系人头像

    一.修改AD架构 为了给联系人添加头像,实际是让联系人头像缩略图能够显示在全局地址列表 GAL 中,需要让其在全局编录(GC)中进行复制,默认情况下,对象的“thumbnailphoto”属性值不会在 ...

  9. 【转】MySql 三大知识点——索引、锁、事务

    索引 索引,类似书籍的目录,可以根据目录的某个页码立即找到对应的内容. 索引的优点:1. 天生排序.2. 快速查找. 索引的缺点:1. 占用空间.2. 降低更新表的速度. 注意点:小表使用全表扫描更快 ...

  10. js 中json遍历 添加 修改 类型转换

    <!DOCTYPE html> <html> <head lang="en"> <meta charset="UTF-8&quo ...