博客
关于我
强烈建议你试试无所不能的chatGPT,快点击我
在DLL中获取主进程窗口句柄
阅读量:6417 次
发布时间:2019-06-23

本文共 1225 字,大约阅读时间需要 4 分钟。

hot3.png

有的时候难免需要在DLL中获取主进程的窗口句柄,比如在DLL注入的时候等等。那么如何在DLL中获取主进程的窗口句柄呢?可以通过EnumWindows来实现。先通过GetCurrentProcessId获取进程的PID,然后在EnumWindows中调用GetWindowThreadProcessId获得与窗口句柄关联的进程PID,然后对比PID,看是否相等,并判断是不是主窗口即可。

#include 
 BOOL CALLBACK EnumWindowsProc(HWND hwnd, LPARAM lParam) {  DWORD dwCurProcessId = *((DWORD*)lParam);  DWORD dwProcessId = 0;   GetWindowThreadProcessId(hwnd, &dwProcessId);  if(dwProcessId == dwCurProcessId && GetParent(hwnd) == NULL) {   *((HWND *)lParam) = hwnd;  return FALSE;  }  return TRUE; }   HWND GetMainWindow() {  DWORD dwCurrentProcessId = GetCurrentProcessId(); if(!EnumWindows(EnumWindowsProc, (LPARAM)&dwCurrentProcessId))  {       return (HWND)dwCurrentProcessId;  }  return NULL; }  BOOLEAN WINAPI DllMain(  IN HINSTANCE hDllHandle,   IN DWORD     nReason,      IN LPVOID    Reserved){ BOOLEAN bSuccess = TRUE;  switch ( nReason ) { case DLL_PROCESS_ATTACH:  MessageBox(GetMainWindow(), TEXT("OMG~ You are Attacked!"), TEXT("Warning"), MB_ICONWARNING);  break;  case DLL_PROCESS_DETACH:  break; }  return bSuccess;}Copyed From 程序人生 Home Page:http://www.programlife.net Source URL:http://www.programlife.net/get-main-window-handler-in-dll.html

转载于:https://my.oschina.net/u/2314763/blog/422621

你可能感兴趣的文章
统计文件中不小于某一长度的单词的个数(泛型算法实现)
查看>>
常见缓存算法和缓存策略
查看>>
MyBatis学习总结(10)——批量操作
查看>>
新开activity并且新旧窗口之间传值
查看>>
Linux文件系统的几个性能测试软件小结
查看>>
让 Linux Deepin 终端丰富多彩(2)
查看>>
关于大型网站技术演进的思考(一)--存储的瓶颈(1)
查看>>
MFS部署
查看>>
马哥linux作业第一周
查看>>
VC判断网络连接、是否为win7系统、是否为正版Win7
查看>>
Tomcat中容器是什么以及容器与容器之间的数量关系。
查看>>
C# 判断窗口是否打开
查看>>
JCaptcha图片验证,解决区分大小写问题
查看>>
服务器状态监测 Keepalived
查看>>
centos6.5_x64 安装配置java+tomcat+apache
查看>>
【VMCloud云平台】SCCM(八) OSD(三)- 模板机捕获
查看>>
PXE无人值守安装
查看>>
samba中文手册
查看>>
Sublime Text 2 配置python运行环境
查看>>
快速构建Windows 8风格应用36-商店应用发布流程
查看>>