C++ builder 中用OpenProcess得到进程句柄〔handle类型,即void指针〕如何在edit控件(即字符串)中显示。

C++ builder 中用OpenProcess得到进程句柄〔handle类型,即void指针〕如何在edit控件(即字符串)中显示。,第1张

Edit1->Text = IntToHex((INT)theHandle);

顺便回答一楼

使用ZwQuerySystemInformation或者自己EnumProcess

The GetProcessHandleFromHwnd function retrieves a process handle from a window handle HANDLE WINAPI GetProcessHandleFromHwnd( HWND hwnd, ); 这个函数通过窗口句柄获得进程句柄。有了进程句柄,PID是不是就知道怎么获得了?什么?不知道?那我告诉你,GetProcessId可以通过进程句柄获得进程ID: DWORD WINAPI GetProcessId( __in HANDLE Process );

The

GetProcessHandleFromHwnd

function

retrieves

a

process

handle

from

a

window

handle

HANDLE

WINAPI

GetProcessHandleFromHwnd(

HWND

hwnd,

);

这个函数通过窗口句柄获得进程句柄。有了进程句柄,PID是不是就知道怎么获得了?什么?不知道?那我告诉你,GetProcessId可以通过进程句柄获得进程ID:

DWORD

WINAPI

GetProcessId(

__in

HANDLE

Process

);

我现在有一个窗口的句柄(HWND),那如何获取该窗口的进程ID呢

需要什么函数,GetCurrentProcessId()是获取当前的进程ID,但是我想通过那个窗口的句柄获取那个窗口的进程,怎么弄

handle=getwindowthreadprocessid(hwnd)

就用GetWindowThreadProcessId,这个函数是获取指定窗口的线程ID和进程ID

C/C++ code

HWND hWnd; // 窗口的句柄DWORD dwPID;DWORD dwThreadID = ::GetWindowThreadProcessId(hWnd, &dwPID);

执行成功后,dwPID便是获取到的进程ID

没事做,写个详细代码给你吧

#include<windowsh>

#include<tlhelp32h>//声明快照函数的头文件

int main(int argc,char argv[])

{

PROCESSENTRY32 pe32;

//在使用这个结构之前,先设置它的大小

pe32dwSize=sizeof(pe32);

//给系统内的所有进程拍一个快照

HANDLE hProcessSnap=::CreateToolhelp32Snapshot(TH32CS_SNAPPROCESS,0);

//遍历进程快照,轮流显示每个进程的信息

BOOL bMore=::Process32First(hProcessSnap,&pe32);

while(bMore)

{

if(strcmp("abcexe",pe32szExeFile)==0)//如果找到进程名为abcexe

{

HANDLE hProcess=OpenProcess(PROCESS_ALL_ACCESS,FALSE,pe32th32ProcessID);//获取句柄

/这里已经打开那个进程的句柄了/ }

bMore=::Process32Next(hProcessSnap,&pe32);//寻找下一个

}

return 0;

}

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

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

以上就是关于C++ builder 中用OpenProcess得到进程句柄〔handle类型,即void指针〕如何在edit控件(即字符串)中显示。全部的内容,包括:C++ builder 中用OpenProcess得到进程句柄〔handle类型,即void指针〕如何在edit控件(即字符串)中显示。、在C#中,如何根据主窗口的句柄,获取该窗口所属进程或者是进程的名字、C#如何通过进程名称获取指定窗口的句柄,通过该句柄获取该窗口的标题等相关内容解答,如果想了解更多相关内容,可以关注我们,你们的支持是我们更新的动力!

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

原文地址: http://outofmemory.cn/web/9545088.html

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

发表评论

登录后才能评论

评论列表(0条)

保存