只是一个简单的可执行程序
比如notepad.exe我想请问一下如何通过程序获取它的句柄
比如notepad.exe我想请问一下如何通过程序获取它的句柄
解决方案 »
- 请问怎么吧stringgrid的cell的内容保存到access数据库中的一个表的一个字段中啊?
- 主界面假死
- 如何定位到第一条数据
- 一方有难,八方支援啊!
- 怎样动态读出类中的public属性,GetPropInfo只能读出published部门的属性
- 很不明白,delphi +ado + access 报的 Invalid variant type conversion 错误,
- 当系统正在访问某个网络上的文件的时候,如何得到这个文件的地址?
- delphi數据庫連接的問題
- delphi6+sqlserver2000 数据库阻塞问题!
- 关于midas中使用socketconnect的问题
- 发送邮件
- 帮一下忙好吗,我在线等
用FindWindow函数应该是可以的,不知你试过没有。如果实在是不行,
我考虑可以试一下这样:
用EnumWindows函数,在回调函数获取句柄,再判别是否是所需获得的程
序,否则继续查找。即使是Service程序,通过此法亦可查出。
function GetProcHandle(ProcName: ShortString): THandle;
var
LP: TProcessentry32;
HD: THandle;
BF: Boolean;
begin
Result := nil;
HD := Createtoolhelp32snapshot(TH32CS_SNAPALL,0);
BF := Process32first(HD,LP);
while BF
do begin
if AnsiCompareText(ExtractFileName(LP.szExeFile),ProcName) = 0
then begin
Result := LP.th32ProcessID;
Break;
end;
BF := Process32next(HD,LP);
end;
CloseHandle(HD);
end;例如: H := GetProcHandle('NOTEPAD.EXE');//注意大写
openprocess?
要得是指定的啊
测试了一下
好像不一样呢
openprocess好像不行,我做过类似的程序,在连续的时间内多次调用openprocess获取一个ID的句柄,可是每次所得的句柄都不一样?而且局柄都是按阿拉伯数字增加的,怎么回事,是不是openprocess的问题,还是我调用的问题
我是这样写的
OpenProcess(STANDARD_RIGHTS_REQUIRED{PROCESS_VM_READ},false,FProcessEntry32.th32ProcessID);
那里不对,请指点一下,我实在D7,Win2000下面
返回的为已打开的进程句柄