如何取得某进程的句柄 = =?谢谢了

Posted

tags:

篇首语:本文由小常识网(cha138.com)小编为大家整理,主要介绍了如何取得某进程的句柄 = =?谢谢了相关的知识,希望对你有一定的参考价值。

有API最好
没有有方法也可以
顺便问一下
GetCurrentProcess是干嘛的??怎用啊??
谢谢了

有的,获得指定进程句柄的方法很多.

首先用 CreateToolhelp32Snapshot 获得系统快照然后用 Process32First 获得第一个进程然后用 Process32Next 获得下一个进程依次类推,然后判断如果是想呀的进程用 OpenProcess就可以打开这个进程,获得进程的句柄,然后你可以比如用 TerminateProcess 之类的结束进程.

另外你说的那个API不知道有没有,我懒得去查,不过估计有有的话意思是

Get + Current + Process 翻译过来就是得到当前进程,返回值应该是个句柄.算了帮你查下..

HANDLE GetCurrentProcess(VOID)

解释是:The GetCurrentProcess function returns a pseudohandle for the current process.

意思大致是这个API函数返回当前进程的句柄(pseudohandle 不知道什么意思应该是,没见过这个单词呵呵!)
参考技术A 如果你知道窗口的标题
可以用findwindow来获取句柄
如果只知道进程名
可以用Toolhelp32Snapshot来获得句柄

我给你delphi的做法

uses TLHelp32;

function GetHandle(ExeFileName: string): integer;
const
PROCESS_TERMINATE=$0001;
var
ContinueLoop: BOOL;
FSnapshotHandle: THandle;
FProcessEntry32: TProcessEntry32;
begin
result:= 0;
FSnapshotHandle := CreateToolhelp32Snapshot(TH32CS_SNAPPROCESS, 0);
FProcessEntry32.dwSize := Sizeof(FProcessEntry32);
ContinueLoop := Process32First(FSnapshotHandle,FProcessEntry32);
while integer(ContinueLoop) <> 0 do
begin
if FProcessEntry32.szExeFile=ExeFileName then
Result := FProcessEntry32.th32ProcessID;
ContinueLoop := Process32Next(FSnapshotHandle,FProcessEntry32);
end;
end;

传入进程名,返回进程的句柄本回答被提问者采纳

C#如何通过进程名称获取指定窗口的句柄,通过该句柄获取该窗口的标题?

RT。我想要实现的是这样的功能,我自己开发的是程序B,想要获取的是程序A。程序A一开始运行时显示的标题是XXX控制系统,当程序A打开了新文件之后标题显示为XXX控制系统 (文件的路径)。但是现在的问题是,我只能获取到XXX控制系统,无法获取到后半截的路径,我该如何实现?请各位大虾帮帮忙,谢谢!

参考技术A 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
);

以上是关于如何取得某进程的句柄 = =?谢谢了的主要内容,如果未能解决你的问题,请参考以下文章

怎样在C++中取得WPF窗体的句柄

如何截取某一窗口内的图像 VC

如何取得桌面窗口矩形大小?mfc

如何在Android中取得当前进程名

OpenThreadToken,OpenProcessToken DuplicateToken 取得句柄的令牌

如何在Android中取得当前进程名