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#如何通过进程名称获取指定窗口的句柄,通过该句柄获取该窗口的标题等相关内容解答,如果想了解更多相关内容,可以关注我们,你们的支持是我们更新的动力!
欢迎分享,转载请注明来源:内存溢出
评论列表(0条)