在DLL中获取主进程窗口句柄
来源:互联网 发布:软件学报 ei 编辑:程序博客网 时间:2024/05/18 02:35
有的时候难免需要在DLL中获取主进程的窗口句柄,比如在DLL注入的时候等等。那么如何在DLL中获取主进程的窗口句柄呢?可以通过EnumWindows来实现。先通过GetCurrentProcessId获取进程的PID,然后在EnumWindows中调用GetWindowThreadProcessId获得与窗口句柄关联的进程PID,然后对比PID,看是否相等,并判断是不是主窗口即可。
以上方法参考自网络,不一定很完善,但是通常情况下已经够用了。附上测试代码:
以上方法参考自网络,不一定很完善,但是通常情况下已经够用了。附上测试代码:
// Author: 代码疯子// Blog: http://www.programlife.net/#include <windows.h> 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;}
0 0
- 在DLL中获取主进程窗口句柄
- 在DLL中获取主进程窗口句柄
- 关于在DLL中获取主调用窗口的句柄
- C#获取进程的主窗口句柄
- C#遍历进程获取主窗口句柄
- C#获取进程的主窗口句柄
- C#获取进程的主窗口句柄
- C#遍历进程获取主窗口句柄
- C#获取进程的主窗口句柄
- 根据进程id获取主窗口句柄
- 在MFC中获取窗口句柄
- 在MFC中获取窗口句柄
- 在MFC中获取窗口句柄
- 在MFC中获取窗口句柄
- 在MFC中获取窗口句柄
- 在MFC中获取窗口句柄
- 【转】在MFC中获取窗口句柄
- windows 下在一个进程中使用createprocess创建一个窗口进程,并获取这个窗口的HWND句柄
- mysql的语法高亮文件。
- JavaScript动态增删改表格数据
- 安装endnote后word卡解决方法
- mysql主从复制
- 奇怪的连通图_1545
- 在DLL中获取主进程窗口句柄
- storm自带例子详解 (四)——ManualDRPC
- 社説 20150601 関電再値上げ 原発再稼働を着実に推進せよ
- 01-复杂度2. Maximum Subsequence Sum (25)
- 3D数学基础及图形与游戏开发的学习 (三)
- How to make changes to wcf service without breaking clients
- 观察者模式
- MFC让按钮控件显示*.ico图标和文字说明
- pb9获得当前程序所在路径及中文字符长度处理