delphi编写搜索进程函数的一个奇怪的现象(已解决)
来源:互联网 发布:智慧电梯软件 编辑:程序博客网 时间:2024/06/01 03:58
一个根据进程名得到PID的函数,原先是把进程名直接写在函数里面的
function FindProcessName:THandle;
………
if ansiCompareText(ExtractFileName(lppe.szExefile),'notepad.exe') = 0 then
我把它改成带参数的函数,把进程名作为参数写在函数里了。
function FindProcessName(exeName:string):THandle;
……
if ansiCompareText(ExtractFileName(lppe.szExefile),exeName) = 0 then
结果函数中的found永远是false,晕倒,百思不得其解
最后抱着试试看的想法,把参数exeName的类型改为pchar,结果成功了。郁闷啊,如果说是pchar和string类型有别,那也不能在还没有运行到if语句的时候就会有差别啊( 如果参数为string类型时, found := process32first(sshandle, lppe);这一句得到的结果就是false了,但参数是在下面的循环中才用到的啊)
可以正确运行的函数是,(本文为delphi7中测试的结果)
function FindProcessName(exeName:pchar):THandle;
var
lppe: tprocessentry32;
sshandle: thandle;
found: boolean;
begin
result:=0;
sshandle := createtoolhelp32snapshot(TH32CS_SNAPALL, 0);
found := process32first(sshandle, lppe);
while found do
begin
if ansiCompareText(ExtractFileName(lppe.szExefile),exeName) = 0 then
begin
result:=lppe.th32ProcessID;
break;
end;
found := process32next(sshandle, lppe); {检索下一个进程}
end;
CloseHandle(sshandle);
end;
补记:下午再测试时却发觉又出了同样的问题,看来是修改的对象错误了,不关pchar的事。google了不少文章,发现有一篇文章提到:tprocessentry32的dwsize必须要初始化后process32first才可以使用,否则可能出错,于是加上了一句 lppe.dwSize:=sizeof(PROCESSENTRY32); 这次似乎是真的起作用了。现下使用正常。
- delphi编写搜索进程函数的一个奇怪的现象(已解决)
- hql一个奇怪的现象
- ifstream一个奇怪的现象
- C++的一个奇怪现象
- 发现ASP的一个奇怪现象
- ASP.NET 2.0的一个奇怪现象~~
- 一个很奇怪的网络现象
- 今天发现一个奇怪的现象?
- Javascript和DOM的一个奇怪现象
- sizeof数组的一个奇怪现象
- c++中 堆的一个奇怪现象
- java Calendar类 一个奇怪的现象
- ie8中一个很奇怪的现象。
- TextView结尾...结束的一个奇怪现象
- 解释一个奇怪的并发现象
- GetCursorPos()函数的奇怪现象
- 求救!!!奇怪的现象!
- 奇怪的现象
- Boot Loader技术内幕(二)
- Hibernate中SessionFactory配置
- web.config文件详解
- java就业
- Oracle 中利用Procedure 发邮件...
- delphi编写搜索进程函数的一个奇怪的现象(已解决)
- 新浪UC,這些人你咋就不管?
- java/sql
- 关于trackback的测试
- 不明白1514
- 概率论与数理统计词汇英汉对照表
- JavaScript的对象
- 在SQL server中设置表的自动编号功能
- 关于Membership的设置 :使用自定义数据库