VC 通过进程ID获得主窗口句柄

VC 通过进程ID获得主窗口句柄,第1张

通过进程名称结束 进程

BOOL FindProcessHandleAndKill(const CString &cs_WndName)

{

HWND hWnd;

DWORD ProcessID;

HANDLE hProcess;

hWnd=::FindWindow(NULL, cs_WndName);

if(hWnd==NULL)//テサモミユメオスエーソレ

{

return FALSE;

}

else

{

if(GetWindowThreadProcessId(hWnd, &ProcessID)==0)//ハァーワ

{

return FALSE;

}

else

{

hProcess=OpenProcess(PROCESS_ALL_ACCESS,FALSE,ProcessID);

if(hProcess==NULL)

{

return FALSE;

}

else

{

if(TerminateProcess(hProcess, 0))

{

return TRUE;

}

else

{

return FALSE;

}

}

}

}

}

调用EnumWindows(EnumWindowsProc,0);

自己定义

BOOL CALLBACK EnumWindowsProc(

HWND hwnd, // handle to parent window

LPARAM lParam // application-defined value

){

DWORD PID;

BOOL Result=TRUE;

GetWindowThreadProcessId(hwnd,PID);

if (PID=GetCurrentProcessId())

{

g_hwin = hwnd;//这个g_hwin在你的DLL里定义为一个全局的HWND,也是你想要的句柄

Result = FALSE;

}

return Result;

}

lz可以试试当然如果知道被注入的进程的窗口名称就不用enumwindow了,直接用FindWindow(NULL, _T("XXXXXX"))的返回值得一个hwnd,然后得到进程id,再判断

如果你程序运行在32位系统,本身指针变量就只有4字节,你的9位16进制是超出范围的,如果是64位系统,那么void 就是8字节,能存储你的数据。

ReadProcessMemory(hd, 0x141DFAA6C, &sj, sizeof(sj), NULL);

如果要只读4个字节,

DWORD32 sj = 0;

ReadProcessMemory(hd, 0x141DFAA6C, &sj, sizeof(sj), NULL); //读当前数据

VC

获取进程线程数

#include

void

EnumProcess(void)

{

HANDLE

hProcessSnap;

HANDLE

hProcess;

PROCESSENTRY32

pe32;

DWORD

dwPriorityClass;

hProcessSnap

=

CreateToolhelp32Snapshot(TH32CS_SNAPPROCESS,

0);

if

(hProcessSnap

==

INVALID_HANDLE_VALUE)

{

return;

}

pe32dwSize

=

sizeof(PROCESSENTRY32);

if

(!Process32First(hProcessSnap,

&pe32))

{

CloseHandle(hProcessSnap);

return;

}

do

{

//printf("%s",

pe32szExeFile);

//完整文件名

//printf("%d",

(int)pe32cntThreads);//线程数

}while(Process32Next(hProcessSnap,

&pe32));

CloseHandle(hProcessSnap);

}

如果要获取进程句柄

HANDLE

hProcessHandle;

hProcessHandle

=

OpenProcess(0x1F0FFF,

true,

ProcessID);//ProcessID进程ID

这个在控制台,Win32

SDK

,MFC

都可以用的,只不过

SDK

,MFC

输出就

不用

printf

了,只要把获取的内容赋给变量就行了

接管CreateThread()API函数,保存创建的所有线程ID和起始地址,然后

用GetMoudleInformation()API函数判断线程过程起始地址所处的模块当中就OK了。

以上就是关于VC 通过进程ID获得主窗口句柄全部的内容,包括:VC 通过进程ID获得主窗口句柄、求VC高手 获取当前进程的主窗口句柄、VC++内存地址0x123456789共9位怎么写等相关内容解答,如果想了解更多相关内容,可以关注我们,你们的支持是我们更新的动力!

欢迎分享,转载请注明来源:内存溢出

原文地址:https://www.54852.com/web/9420795.html

(0)
打赏 微信扫一扫微信扫一扫 支付宝扫一扫支付宝扫一扫
上一篇 2023-04-28
下一篇2023-04-28

发表评论

登录后才能评论

评论列表(0条)

    保存