flcname = App.Path & "\ABC.exe"
pId = Shell(flcname, vbNormalFocus) hProcess = OpenProcess(PROCESS_QUERY_INFORMATION, 0, pId) If hProcess <> 0 Then Call WaitForSingleObject(hProcess, INFINITE) Call CloseHandle(hProcess)
End If
所用程序如上,但是每次外部程序ABC.EXE总是闪一下就没了,没有继续运行下去。此时hProcess的值为0.这是为什么啊?非常急,请大家看看啊,谢谢啦~~
pId = Shell(flcname, vbNormalFocus) hProcess = OpenProcess(PROCESS_QUERY_INFORMATION, 0, pId) If hProcess <> 0 Then Call WaitForSingleObject(hProcess, INFINITE) Call CloseHandle(hProcess)
End If
所用程序如上,但是每次外部程序ABC.EXE总是闪一下就没了,没有继续运行下去。此时hProcess的值为0.这是为什么啊?非常急,请大家看看啊,谢谢啦~~
To sosopain:停在hProcess = OpenProcess(PROCESS_QUERY_INFORMATION, 0, pId) 的时候就消失了。
你用你的代码测试一个vb编译的空的 exe,看看还有这错吗,如果没有的话还是看看abc有没有什么使用要求吧
难道这个abc还检测了你的openprocess吗?
你按下面步骤试试 首先 打开手动打开ABC.EXE 知其PID后OPENPROCESS 看看是否能取到句柄
如不正常 就是程序可能钩住了系统某些函数
如果正常 那么进入下一步 用WINRAR打包ABC为RAR压缩文件 然后打开直接在RAR包里运行ABC 看是否正常
如不正常 就是程序启动的时候检查父进程是否是WINDOWS的外壳 也就是EXPLORER 不是则自动关闭
如果这步也正常 那么建议你使用API来代替SHELL这个VB自身函数 重新测试