.net 调用 winapi获取窗口句柄和内容
- using System;
- using System.Collections.Generic;
- using System.ComponentModel;
- using System.Data;
- using System.Drawing;
- using System.Linq;
- using System.Runtime.InteropServices;
- using System.Text;
- using System.Threading.Tasks;
- using System.Windows.Forms;
- namespace cstest
- {
- public partial class Form1 : Form
- {
- //定义一个符合WINAPI返回值和参数的委托
- public delegate bool CallBack(IntPtr hwnd, int lParam);
- //声明符合上述委托的函数(定义一个函数指针)
- private static CallBack myCallBack;
- public Form1()
- {
- myCallBack = new CallBack(Report);
- InitializeComponent();
- GetHandle("C#");
- this.textBox1.Multiline = true;
- this.textBox1.Dock = DockStyle.Fill;
- }
- private void GetHandle(string windcaption)
- {
- IntPtr mainHandle = FindWindow(null, windcaption);
- if (IntPtr.Zero != mainHandle)
- {
- AppendText(string.Format("{0}句柄:{1}", windcaption, Convert.ToString((int)mainHandle,)));
- //EnumChildWindows((int)mainHandle, myCallBack, 0);
- //修改窗口标题
- SetWindowText((int)mainHandle, "C#");
- StringBuilder s = new StringBuilder();
- //获取控件标题
- int i = GetWindowText(mainHandle, s, s.Capacity);
- AppendText(string.Format("句柄{0}的caption:{1}", Convert.ToString((int)mainHandle, ), s.ToString()));
- //枚举所有子窗体,并将子窗体句柄传给myCallBack
- EnumChildWindows((int)mainHandle, myCallBack, );
- }
- }
- private void AppendText(string msg)
- {
- this.textBox1.AppendText(msg);
- this.textBox1.AppendText("\r\n");
- }
- //根据窗体句柄,输出窗体caption
- public bool Report(IntPtr hWnd, int lParam)
- {
- StringBuilder s = new StringBuilder();
- int i = GetWindowText((IntPtr)hWnd, s, s.Capacity);
- AppendText(string.Format("句柄{0}的caption:{1}", Convert.ToString((int)hWnd, ), s.ToString()));
- return true;
- }
- /// <summary>
- /// 获取窗体的句柄函数
- /// </summary>
- /// <param name="lpClassName">窗口类名</param>
- /// <param name="lpWindowName">窗口标题名</param>
- /// <returns>返回句柄</returns>
- [DllImport("user32.dll", EntryPoint = "FindWindow", SetLastError = true)]
- public static extern IntPtr FindWindow(string lpClassName, string lpWindowName);
- [DllImport("user32.dll")]
- public static extern int EnumWindows(CallBack x, int y);
- [DllImport("user32.dll")]
- private static extern IntPtr EnumChildWindows(int hWndParent, CallBack lpEnumFunc, int lParam);
- [DllImport("user32.dll")]
- public static extern int SetWindowText(int handle, string title);
- [DllImport("user32.dll", EntryPoint = "GetWindowText")]
- public static extern int GetWindowText(IntPtr hwnd, StringBuilder lpString,int cch);
- [DllImport("User32.dll", EntryPoint = "SendMessage")]
- private static extern int SendMessage(IntPtr hWnd, int Msg, int wParam, StringBuilder lParam);
- private void button1_Click(object sender, EventArgs e)
- {
- StringBuilder s = new StringBuilder();
- //获取控件标题,对TRichEdit无效
- //int i = GetWindowText((IntPtr)int.Parse(txtHandle.Text), s, s.Capacity);
- //获取控件标题,对TRichEdit有效
- int i = SendMessage((IntPtr)int.Parse(txtHandle.Text), 0x000D, , s);
- AppendText(string.Format("句柄{0}的caption:{1}", txtHandle.Text, s.ToString()));
- }
- }
- }
.net 调用 winapi获取窗口句柄和内容的更多相关文章
- [WinAPI] 获取窗口句柄的几种方法
1.使用FindWindow函数获取窗口句柄 示例:使用FindWindow函数获取窗口句柄,然后获得窗口大小,并且移动窗口到指定位置. 我们想获得酷我音乐盒的窗口句柄并移动它,该怎么办呢? 首先打开 ...
- C#调用WinAPI及窗口过程
C#调用WINAPI及Windows窗口消息的发与送 最近在做一个餐饮项目(C#Winform),其中有一块是做点菜宝接口的对接,点菜宝的厂商提供了一个WX.exe的驱动程序,这个驱动程序无直接打开, ...
- java分别通过httpclient和HttpURLConnection获取图片验证码内容
前面的文章,介绍了如何通过selenium+Tesseract-OCR来识别图片验证码,如果用接口来访问的话,再用selenium就闲的笨重,下面就介绍一下分别通过httpclient和HttpURL ...
- windows获取窗口句柄
1.使用FindWindow函数获取窗口句柄 示例:使用FindWindow函数获取窗口句柄,然后获得窗口大小和标题,并且移动窗口到指定位置. #include <Windows.h> # ...
- phpcms-v9 --- 如何通过{pc}标签获取全站文章内容?
1.phpcms-v9默认情况下只能根据catid获取当前栏目及子栏目下的文章,但是有时候我们需要如何通过{pc}标签来获取全站文章内容的需求,应该怎么做呢? 第一步:在content_tag.cla ...
- SpringMVC——使用RequestDispatcher.include()和HttpServletResponseWrapper动态获取jsp输出内容
介绍本篇内容前,先抛出我遇到的问题或者说是需求!(精读阅读本篇可能花费您15分钟,略读需5分钟左右) 一:需求说明 有一个Controller有两个方法 第一个方法通过指定的路径和参数去渲染jsp内容 ...
- 从IE浏览器获取当前页面的内容
从IE浏览器获取当前页面内容可能有多种方式,今天我所介绍的是其中一种方法.基本原理:当鼠标点击当前IE页面时,获取鼠标的坐标位置,根据鼠标位置获取当前页面的句柄,然后根据句柄,调用win32的东西进而 ...
- Python获取网页指定内容(BeautifulSoup工具的使用方法)
Python用做数据处理还是相当不错的,如果你想要做爬虫,Python是很好的选择,它有很多已经写好的类包,只要调用,即可完成很多复杂的功能,此文中所有的功能都是基于BeautifulSoup这个包. ...
- python3获取指定目录内容的详细信息
不同平台获取指定目录内容的详细信息命令各不相同: Linux中可以通过ls -al获取获取 windows中可以通过dir命令获取 下面是我写的一个通用获取目录内容详细信息的python3脚本: #! ...
随机推荐
- Vue报错 Duplicate keys detected: '1'. This may cause an update error. vue报错
情况一.错误信息展示为关键字‘keys‘,此时应该检查for循环中的key,循环的key值不为唯一性 (很普通) 情况二.有两个相同的for循环,而这两个for循环的key值是一样的,此时将一个的ke ...
- Saltstack之使用salt安装es6.0以上的head插件
本实验使用salt安装es6.0以上的head插件 ES6.0以上手动安装head插件参考:https://www.cnblogs.com/minseo/p/9117470.html 文件夹目录为 / ...
- iOS-自定义导航控制器
BasicNavigationViewController:UINavigationViwController /* 隐藏导航底部线条 */ -(void)viewDidLoad{ [super ...
- iOS——归档对象的创建,数据写入与读取
归档(archiving)是指另一种形式的序列化,但它是任何对象都可以实现的更常规的模型.专门编写用于保存数据的任何模型对象都应该支持归档.比属性列表多了很良好的伸缩性,因为无论添加多少对象,将这些对 ...
- python基础----条件判断与循环
一.python数据类型 1.整数(包括整数.负数) 2.浮点数(小数) 3.字符串(需要用单引号‘’或双引号“”括起来) 注:当字符串中含有单引号时,用双引号括起来(now="let's ...
- IndemindSDK数据采集程序
目录 Indemind相机数据采集 Indemind相机数据采集 最近做一些实验需要自己采集一些数据玩玩,打算用之前买的indemind双目模组,实际用的时候感觉官方提供的采集程序不太好用,于是打算自 ...
- 如何制作红蓝3d电影(详细教程)
自20世纪初以来,电影制作人一直试图通过制作3D电影来利用我们的双眼.现在,由于大量相对实惠的3D电视,你可以享受电影院以外的额外空间 - 你自己拍摄的视频.对于大预算的电影,电影摄影师使用两个相连的 ...
- 为 Exchange 2010 用户添加联系人头像
一.修改AD架构 为了给联系人添加头像,实际是让联系人头像缩略图能够显示在全局地址列表 GAL 中,需要让其在全局编录(GC)中进行复制,默认情况下,对象的“thumbnailphoto”属性值不会在 ...
- 【转】MySql 三大知识点——索引、锁、事务
索引 索引,类似书籍的目录,可以根据目录的某个页码立即找到对应的内容. 索引的优点:1. 天生排序.2. 快速查找. 索引的缺点:1. 占用空间.2. 降低更新表的速度. 注意点:小表使用全表扫描更快 ...
- js 中json遍历 添加 修改 类型转换
<!DOCTYPE html> <html> <head lang="en"> <meta charset="UTF-8&quo ...