| « | December 2025 | » | | 日 | 一 | 二 | 三 | 四 | 五 | 六 | | 1 | 2 | 3 | 4 | 5 | 6 | 7 | 8 | 9 | 10 | 11 | 12 | 13 | 14 | 15 | 16 | 17 | 18 | 19 | 20 | 21 | 22 | 23 | 24 | 25 | 26 | 27 | 28 | 29 | 30 | 31 | | | | |
| 公告 |
| 暂无公告... |
| Blog信息 |
|
blog名称: 日志总数:3 评论数量:11 留言数量:1 访问次数:15388 建立时间:2008年7月22日 |

| |
|
c# 中 获得前台运行进程窗口句柄及验证是否是想要监控的程序进程的另类方法 电脑与网络
heimajushi 发表于 2008/7/27 9:45:36 |
| 本人对API算是一个菜菜鸟,在C++调用API不算是一件难事,可是在C#中就相当麻烦。下面我就用一个简单的例子来介绍一种获得前台运行进程窗口句柄及验证是否是想要监控的程序进程的另类方法。其实就是我自己偷懒,没有详读API资料。
在API中user32.dl与窗口有关。
下面是源码你会发现很简单;
using System.Runtime.InteropServices;//与API相关using System.Diagnostics;//与进程相关
[DllImport("user32.dll")]
private static extern IntPtr GetForegroundWindow();//获得即获得前台窗口句柄
函数(){
IntPtr ii = GetForegroundWindow();//获得即获得前台窗口句柄
Process p = new Process();//实例一个进程
p = Process.GetProcessesByName("msnmsgr")[0];//以msn为例,msnmsgr为进程名称 IntPtr jk = p.MainWindowHandle;
if (ii == jk) {
//加入你想要的动作
}
}
呵呵我是下班前赶出来的源程序,今天加班心情不好,原代码写得比较粗糙。希望各位见谅。而且还请精通API的大侠,给指点一下在C#中完全用API 获得这样的效果该怎么办。
在API中可以通过findwindow(类名,窗口标题)得到窗口句柄。 用 GetWindowThreadProcessId获得进程id
有时间我把它也写一下,请大家指点一下。
以后我还会把我C#写的一个监控键盘和鼠标的程序发出来,请大家帮我改进一下。 |
|
|