通过Handle处理进程

通过进程ID获取窗口句柄的.NET实现 函数是Windows API中的一个函数,用于枚举系统中所有顶级窗口。我们可以利用这个函数来遍历所有窗口,并通过窗口所属进程的进程ID来判断是否找到了目标窗口。在.NET开发中,我们经常需要通过进程ID获取与之关联的窗口句柄。函数,我们可以在.NET中实现通过进程ID获取窗口句柄的功能。函数是一个同步函数,它会遍历系统中所有的顶级窗口,直到找到目标窗口或遍历完所有窗口。函数获取当前窗口的进程ID,并将其与目标进程ID进行比较。如果找到了目标窗口,我们可以在回调方法中进行进一步的窗口操作。 阅读详情
 

1.知道进程handle 获取进程名称。

PROCESS_INFORMATION* processInfo =(PROCESS_INFORMATION*)pid();
   HANDLE hProcess =processInfo->hProcess;
   char buffer[255];
   ZeroMemory(buffer,255*sizeof(char));
   GetModuleFileNameExA(hProcess,0,buffer,255*sizeof(char));

2.知道进程handle,获取内存使用率

PROCESS_INFORMATION* processInfo = (PROCESS_INFORMATION*)pid();
   HANDLE hProcess = processInfo->hProcess;
   PROCESS_MEMORY_COUNTERS mem;
   mem.cb = sizeof(PROCESS_MEMORY_COUNTERS);
   if (GetProcessMemoryInfo(hProcess,&mem,sizeof(mem)))
   {
    SIZE_T workingMem = mem.WorkingSetSize ;
    return workingMem;
   }

3.知道进程id获取,进程主窗口,如果有的话

通过进程ID获得该进程主窗口的句柄(来自优快云)

    一个进程可以拥有很多主窗口,也可以不拥有主窗口,所以这样的函数是不存在的,所幸的是,相反的函数是有的。所以我们可以调用EnumWindows来判断所有的窗口是否属于这个进程。

一般网络上是没有这一段的

但是一个进程他可以拥有很多窗口,要判断哪个是主窗口,除了判断进程Id之外,还要判断是否可见,因为我们平常看到的窗口一般是可见的,但有些程序它会创建好几个窗口,主窗口只是其中的一个,其他窗口只是没有Show出来或者只是没有大小的窗口,但一样是顶层窗口,像我试验了记事本,就有3个顶层窗口,注意不是子窗口。

typedef struct tagWNDINFO
{
DWORD dwProcessId;
HWND hWnd;
} WNDINFO, *LPWNDINFO;

BOOL CALLBACK YourEnumProc(HWND hWnd,LPARAM lParam)
{
DWORD dwProcessId;
GetWindowThreadProcessId(hWnd, &dwProcessId);
LPWNDINFO pInfo = (LPWNDINFO)lParam;

if(dwProcessId == pInfo->dwProcessId)
{

bool isWindowVisible = IsWindowVisible(hWnd);

if(isWindowVisible == true)

{

pInfo->hWnd = hWnd;

return FALSE;

}

}
return TRUE;
}

HWND GetProcessMainWnd(DWORD dwProcessId)
{
WNDINFO wi;
wi.dwProcessId = dwProcessId;
wi.hWnd = NULL;
EnumWindows(YourEnumProc,(LPARAM)&wi);
return wi.hWnd;
}
如果这个进程没有窗口,函数返回NULL

根据进程id查找主窗口 根据网上代码描述修改实现 根据进程id查找主窗口 不指定id,则查找全部的顶层窗口 指定进程id,则查找该进程的顶层窗口 立即下载

相关推荐

基于STM32的简易电压、频率、占空比测量仪

任务详解:我们需要实现三个功能: 第一个是测频率的功能,输入信号为频率为1kHz~10kHz的三种波形(方波、三角波、正弦波),这也是我们最常见的三种波形。幅度是不需要测量的,所以先不关心幅度。 第二个是电压报警功能,当输入信号的幅度超过15V时,我们需要报警(这里我用了一个红色LED当报警器,有条件的还可以加个蜂鸣器)并且把此时的信号幅度显示在OLED屏幕上。 第三个是通信方式的要求,需要有串口通信功能。 第四个是计算占空比的任务,这个任务的输入是幅度为1V~10V、频率为20Hz ~1kHz的方波,需要

weixin_43469377的博客 7251

C++/C#通过进程ID查找对应窗口句柄

C++/C#查找窗口句柄-记一次通过进程ID查找对应窗口句柄 FindWindowEx EnumWindows MoveWindow GetWindowThreadProcessId GetClassName

jiaodou2的博客 7946

别再手动巡检了!vRealize Operations Manager 8.x 自动化报告配置全攻略(附模板下载)

本文详细介绍了如何利用vRealize Operations Manager 8.x实现自动化巡检报告配置,大幅提升虚拟化运维效率。通过模板定制、智能调度和自动分发等功能,帮助运维团队告别手动生成报告的繁琐工作,实现90%以上的时间节省。文章还提供了实用的配置技巧和最佳实践,助力企业构建高效的自动化报告系统。

weixin_33806859的博客 298

VC++如何获取目标程序的句柄hProcess

方法一:任务管理器找到程序的PID,通过PID获取hProcessHANDLE hProcess = OpenProcess(PROCESS_ALL_ACCESS, FALSE, PID);方法二:使用spy++获取目标程序窗口对应的句柄通过窗口句柄获取PID,再使用方法一的函数获取hProcess HWND wnd = (HWND)0x0003069C;DWORD pid;GetWindowTh...

jiyanglin的博客 3543

从Mate到Mate40 Pro+:华为旗舰核心配置演进与选购避坑指南

本文回顾了华为Mate系列从初代到Mate40 Pro+的核心配置演进历程,重点分析了处理器性能、影像系统、屏幕设计及续航快充的技术突破。针对选购需求,提供了区分版本、5G选择及存储配置的实用避坑建议,帮助消费者明智选择华为旗舰机型。

weixin_30015371的博客 494

AI视频生成模型训练:从数据准备到部署全流程

咱们这次的目的就像是要建造一座超级厉害的AI视频生成魔法城堡。范围呢,就是从收集建造城堡的材料(数据准备)开始,到把城堡搭建起来(模型训练),再到让城堡能供大家使用(模型部署),涵盖了整个过程的方方面面。接下来我们会先给大家介绍一些重要的术语,就像认识冒险途中的关键道具一样。然后引入一个有趣的故事,带大家进入AI视频生成的奇妙世界,解释核心概念以及它们之间的关系。接着会详细讲解核心算法原理、数学模型和公式,还会有项目实战,带大家亲自体验代码的魅力。

小白菜的博客 399

输入进程id 获取所有窗体信息

/ ConsoleApplication1.cpp : 此文件包含 "main" 函数。程序执行将在此处开始并结束。// 要查找的进程ID。// 方法1:使用 EnumWindows。// 找到了指定进程的窗口。// 查找带详细信息的窗口。// 方法2:只查找可见的主窗口。// 方法3:枚举所有窗口并存储。// 方法4:带窗口信息的查找。

zhangyihu321的专栏 1725

NX二次开发 内部函数鼠标动态位置获取

内部函数鼠标动态位置获取

qq285503851的博客 3336

操作系统实验一·创建进程

操作系统实验一 1.实验目的: 使用系统调用实现“mytime”命令,通过命令行参数运行可执行程序。创建一个新进程来运行此可执行程序,并记录该程序的运行时间。实现Windows版本和Linux版本。 2.实验内容: 2.1 Windows实现 •使用CreateProcess()创建新流程 •在“mytime”命令中使用WaitForSingleObject()与创建的进程同步。 •使用GetSystemTime()获取时间。 2.2 Linux实现 •使用fork()/execv()创建新流程 •使用wa

zhj12399的博客 1万+

YOLO26涨点改进 | 独家创新,细节涨点改进篇 | CVPR 2025顶会 | YOLO26引入Mona即插即用模块, 含MoCAA和DyTMona二次创新改进,含多种创新改进高效发论文

本文给大家介绍Mona即插即用模块, 含MoCAA和DyTMona二次创新模块优化YOLO26模型。YOLO26引入 Mona通过引入多尺度视觉友好型卷积滤波器(如3x3、5x5、7x7深度卷积)和可伸缩归一化层来优化适配器设计,以更好地处理视觉信号并调节输入特征分布。YOLO26引入Mona即插即用模块, 含MoCAA和DyTMona二次创新改进,含多种创新改进高效发论文。适合目标检测、图像分割、图像分类等所有CV任务通用即插即用模块。

Ai缝合怪、助力小伙伴高效发论文 240

Python 爬虫高级实战:HTTPS 证书忽略与代理抓包配置

本文深入解析了HTTPS加密与SSL证书校验机制在爬虫开发中的核心问题及解决方案。文章首先剖析了HTTPS协议架构和证书校验流程,指出爬虫开发中常见的证书异常场景及其负面影响。随后详细介绍了Python主流请求库(requests、httpx、aiohttp)的证书忽略配置方法,包括同步/异步模式下的实现方案。针对代理环境,文章系统比较了HTTP、HTTPS、SOCKS5等代理类型的特性差异,并提供了完整的代理配置示例。特别对中间人抓包场景,阐述了Mitmproxy的工作原理和配置要点。最后提出了工程级爬虫

2503_91057718的博客 85

安卓中进程与线程通信之handle处理消息机制

在Android程序运行中,线程之间或者线程内部进行信息交互时经常会使用到消息,如果我们熟悉这些基础的东西及其内部的原理,将会使我们的Android开发变的容易、可以更好地架构系统。在学习Android消息机制之前,我们先了解与消息有关的几个类:  1.Message  消息对象,顾名思义就是记录消息信息的类。这个类有几个比较重要的字段:  a.arg1和arg2:我们可以使用两个字段用来存放我们...

z936689039的博客 475

YOLO 线性小目标涨点|3890 张输电导线散股 VOC+YOLO 单类别数据集实战,无人机电力缺陷巡检全流程落地

架空输电导线是电网能量传输核心载体,长期受风力摆动、雷击、腐蚀、外力撞击作用,外层铝股极易出现断裂散股故障。导线散股初期仅少量铝丝开裂,肉眼与无人机远距离航拍下属于细长微弱线性小目标;若未及时发现,散股会持续扩张,引发导线过热、断线、大面积停电重大电力安全事故。传统人工巡检存在多重行业痛点:山区、跨江河线路人员无法攀爬登杆,高空作业人身坠落风险极高;无人机单次航拍产出数千张高清图片,人工逐帧筛查微小散股耗时 3-5 天,阴天、逆光、植被遮挡场景漏检率超 45;

lin_xiu的博客 52

C# 检测进程是否存在

使用微软提供的handle.exe来进行检测文件被占用, 这里是要覆盖一个文件,所以覆盖前先检测这个文件有无进程占用,有的话就kill进程,然后删掉文件 这个检测进程时间耗时比较长,测了下,有进程占用的话检测出来大概10s以上,所以不能每个文件都直接检测,先执行文件删除,有异常只能是文件被占用,再去执行解除占用; handle.exe的下载地址:https://docs.microsoft.com...

Kevin__Mei的博客 5101

TMS_WebGMaps_1.9.8.0_Full_Source

TMS_WebGMaps_1.9.8.0_Full_Source 全源码 delphi cbuilder

Devexpress16.2.6破解工具

Devexpress16.2.6破解工具Devexpress16.2.6破解工具Devexpress16.2.6破解工具Devexpress16.2.6破解工具

Windows bat 查找文件被哪个进程占用,并终止该进程

Windows bat 查找文件被哪个进程占用,并终止该进程。结合实际案例,讲解如何使用批处理完成查找进程、获取进程pid、终止进程。另外给了如何手动查找并终止进程的方式:使用系统自带资源监视器、使用Process Explorer第三方工具 两种方式。

小青龍 的博客 4万+

Statistics and Machine Learning Toolbox

Statistics and Machine Learning Toolbox(带书签),MATLAB统计学习工具

linux组合键 发送指定信号_GDB handle命令:信号处理

C、C++ 程序中,信号常常作为进程间通信的一种重要手段。举个例子:#include #include #include void display(){ printf("http://c.biancheng.net/gdb/");}int main (){ pid_t cpid; pid_t ppid; signal(SIGINT,display); if(...

weixin_39834780的博客 357

visio安装包

Microsoft Office Visio 是一款专业的制图软件。利用经过更新的形状、协作工具和数据链接图表,创建专业级图表以简化复杂的信息。

【转】SYSTEM_HANDLE_INFORMATION

typedef struct _SYSTEM_HANDLE_INFORMATION{ ULONG ProcessId; UCHAR ObjectTypeNumber; UCHAR Flags; USHORT Handle; PV...

weixin_30487201的博客 594

python 基于方法调用的进程池使用方式(一)

【代码】python 基于方法调用的进程池使用方式(一)

weixin_43367242的博客 207

electron ipcRenderer.invoke 和 ipcMain.handle 介绍

是 Electron 主进程中的一个方法,用于处理从渲染进程发送过来的IPC请求,并返回一个Promise。渲染进程可以使用方法发送IPC请求到主进程,并等待主进程处理完成后返回结果。

solocao的专栏 3660

普法GraphicBuffer诞生以及跨进程传递

SurfaceFlinger进程 和 IAllocator服务进程之间通过 hidl_handle 类型的数据传递 图形buffer共享内存的fd数据传输中对 hidl_handle 类型数据特化处理,并把binder数据类型设置为 BINDER_TYPE_FDAbinder内核对 BINDER_TYPE_FDA 类型数据特化处理同时在 IAllocator.allocate 的回调函数中调用 IMapper.importBuffer 把内存映射到当前进程。

IT先森 3492

ipcMain.handle

方法用于向渲染进程发送消息,而在处理主进程的 IPC 请求时,返回值的发送是由 Electron 内部自动处理的,你不需要显式地发送返回值。在 Electron 中,

weixin_46954149的博客 631

Windows下通过进程名称获取进程pid

例如,通过devenv.exe找到进程id号为14376 在msdn查到api接口为: DWORD GetProcessId( HANDLE Process ); 需要传入一个HANDLE,那问题又来了,怎样获得这个HANDLE呢? 网上找了很久的答案,最后在stack overflow找到了答案 https://stackoverflow.com/questions/865152/how-can-i-get-a-process-handle-by-its-name-in-c 原...

tianyingang的博客 8012

electron实现主进程和渲染进程之间的通信

对于桌面端程序来说,进程之间的通信是非常关键和重要的,今天给大家带来electron框架中,如何实现主进程和渲染进程之间的通信。这里要事先说明,因为在渲染进程中不能使用node的模块,所以得先在预设js中暴露接口,然后才能在渲染进程中使用。大家可能会觉得这和vue的组件之间通信很类似,但是就是多了一个预设js的步骤,会十分的繁琐,后面会教大家一种不用预设js的方法!!喜欢的话,记得三连哦!!

爱吃雪糕的小布丁的博客 3266

ipcMain.on和ipcMain.handle区别

渲染进程用发,主进程用ipcMain.on接,不期待返回;渲染进程用发,主进程用接,期待返回;ipcMain.on和都用于 Electron 的主进程监听从渲染进程发来的消息。这是一种允许跨进程通讯的方式。

m0_38060839的博客 1817

[Electron]ipcMain.on和ipcMain.handle的区别

在Electron中的通信中,我们经常会用到ipcRender.invoke和ipvRender.send。接下来简要说明下这两个方法的区别。

qq_29069649的博客 2946

LiveView 的生命周期:mount、handle_event 和 Socket 到底怎么运转

这篇聊 Phoenix LiveView 最核心、也最容易被误解的一套机制:生命周期。`mount/3` 为什么会跑两次?`connected?/1` 到底什么时候用?`handle_event/3`、`handle_info/2`、`handle_params/3` 分别该管什么?以及最重要的一点:`socket.assigns` 不是前端 props,它是服务端进程里的状态。

weixin_47417831的博客 317
上一篇: C++ 进程间通信一
下一篇: unresolved external symbol _main解决办法
lbjayo
博客等级 码龄19年 9粉丝 11原创
评论
成就一亿技术人!
拼手气红包6.0元
还能输入1000个字符
 
 条评论被折叠 查看
添加红包

请填写红包祝福语或标题

个

红包个数最小为10个

元

红包金额最低5元

当前余额3.43元 前往充值 >
需支付:10.00元
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包

打赏作者

lbjayo

你的鼓励将是我创作的最大动力

¥1 ¥2 ¥4 ¥6 ¥10 ¥20
扫码支付:¥1
获取中
扫码支付

您的余额不足,请更换扫码支付或充值

打赏作者

实付元
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值