[C#]窗口的一些简单操作
来源:互联网 发布:深圳市行知实验小学 编辑:程序博客网 时间:2024/06/05 15:30
【前言】因为最近要做一个设计到窗口的项目,所以开始整理关于窗口的资料。
第一、获取当前最顶层的窗口
————GetForegroundWindow
————函数功能:获取一个前台窗口的句柄(窗口与用户当前的工作)。该系统分配给其他线程比它的前台窗口的线程创建一个稍微更高的优先级
————函数原型:HWND GetForegroundWindow(void);
————返回值:返回值是一个前台窗口的句柄。在某些情况下,如一个窗口失去激活时,前台窗口可以是NULL。
————C#声明:[DllImport("user32.dll")]
private static extern IntPtr GetForegroundWindow();
第二、根据句柄获取相关信息
————GetWindowText
————该函数将指定窗口的标题条文本(如果存在)拷贝到一个缓存区内。如果指定的窗口是一个控件,则拷贝控件的文本。但是,GetWindowText不能接收其他应用程序中控件的文本。
————函数原型:Int GetWindowText(HWND hWnd,LPTSTR lpString,Int nMaxCount);
————实例:
[DllImport(
"user32.dll"
)]
public
extern
static
int
GetWindowText(IntPtr hWnd, StringBuilder lpString,
int
nMaxCount);
StringBuilder s =
new
StringBuilder(512);
int
i = GetWindowText(
this
.Handle, s, s.Capacity);
//把this.handle换成你需要的句柄
MessageBox.Show(s.ToString());
————GetClassName
————该函数获得指定窗口所属的类的类名。
————[DllImport("user32.dll", SetLastError = true, CharSet = CharSet.Auto)]
static extern int GetClassName(IntPtr hWnd, StringBuilder lpClassName,int nMaxCount);
————实例:
我们都知道微软.Net中,C# 是用来开发网络解决方案的首先语言。但是在胖客户端,C# 同样有着出色的表现。对那些熟悉 Win32 API 的程序员来说,关键是如何将 C# 的新特性与 Win32 API 融合在一起。
下面例子说明如何在 C# 中调用 Win32 API - EnumWindows 枚举所有窗口:
1.首先需要声明一个委托函数用于 Win32 API - EnumWindows 的回调函数:
public delegate bool CallBack(int hwnd, int lParam);
2.然后利用 C# 中的平台调用声明从 USER32.DLL 库中调用 API - EnumWindows,具体参数请参考 MSDN - Win32 API。
[DllImport("user32")]
public static extern int EnumWindows(CallBack x, int y);
3.最后实例化委托,调用 EnumWindows。
CallBack myCallBack = new CallBack(EnumWindowsApp.Report);
4.完全代码如下:
using System;
using System.Runtime.InteropServices;
public delegate bool CallBack(int hwnd, int lParam);
public class EnumWindowsApp
{
[DllImport("user32")]
public static extern int EnumWindows(CallBack x, int y);
public static void Main()
{
CallBack myCallBack = new CallBack(EnumWindowsApp.Report);
EnumWindows(myCallBack, 0);
}
public static bool Report(int hwnd, int lParam)
{
Console.Write("Window handle is :");
Console.WriteLine(hwnd);
return true;
}
}
下面例子说明如何在 C# 中调用 Win32 API - EnumWindows 枚举所有窗口:
1.首先需要声明一个委托函数用于 Win32 API - EnumWindows 的回调函数:
public delegate bool CallBack(int hwnd, int lParam);
2.然后利用 C# 中的平台调用声明从 USER32.DLL 库中调用 API - EnumWindows,具体参数请参考 MSDN - Win32 API。
[DllImport("user32")]
public static extern int EnumWindows(CallBack x, int y);
3.最后实例化委托,调用 EnumWindows。
CallBack myCallBack = new CallBack(EnumWindowsApp.Report);
4.完全代码如下:
using System;
using System.Runtime.InteropServices;
public delegate bool CallBack(int hwnd, int lParam);
public class EnumWindowsApp
{
[DllImport("user32")]
public static extern int EnumWindows(CallBack x, int y);
public static void Main()
{
CallBack myCallBack = new CallBack(EnumWindowsApp.Report);
EnumWindows(myCallBack, 0);
}
public static bool Report(int hwnd, int lParam)
{
Console.Write("Window handle is :");
Console.WriteLine(hwnd);
return true;
}
}
第三、把隐藏的窗口置前
0 0
- [C#]窗口的一些简单操作
- c 几个简单的窗口操作代码
- C语言的一些简单操作
- 窗口操作的一些技巧
- Objective-C入门02:一些简单的基本操作
- 利用C语言实现一些简单的栈操作
- 【C语言】链表的一些简单操作
- 简单的c窗口程序
- DOS窗口的一些简单介绍
- 一些简单的SQL操作
- 记事本的一些简单操作
- xml的 一些简单操作
- PS的一些简单操作
- 数据库的一些简单操作
- 栈的一些简单操作
- 二叉排序树的一些简单操作
- mysql的一些简单操作
- 矩阵的一些简单操作
- django初体验之Error: No module named _sqlite
- Error 400 Bad Request
- (function($){})(jQuery)和(jQuery)(function($){})
- iOS 图片压缩
- 前端工具安装,解决GoodleAdsense加载慢的问题
- [C#]窗口的一些简单操作
- Tez安装整体过程以及各节点的配置
- zoj2770Burn the Linked Camp【差分约束】
- Dubbo开发流程
- Linux配置yum源 本地服务。web Service 服务器
- Linux IO 多路复用是什么意思,一直没弄明白?
- iOS 项目添加背景音乐
- 本地定时推送
- iOS 获取图片路径