帮忙改错!(20分)

  • 主题发起人 主题发起人 delphiboy
  • 开始时间 开始时间
D

delphiboy

Unregistered / Unconfirmed
GUEST, unregistred user!
大家好!
我要调用ARJ程序,但是下面的程序有错误,
请大家帮忙改改,谢!
var
pWindowsList: pointer;
hActiveWindow: HWnd;
hExeHandle: THandle;
begin
pWindowsList := DisableTaskWindows(0);
hActiveWindow := GetActiveWindow;
try
hExeHandle := WinExec('arj.exe /?',SW_SHOWNORMAL);
while GetModuleUsage(hExeHandle) 0 do
Application.ProcessMessages;
finally
EnableTaskWindows(pWindowsList);
SetActiveWindow(hActiveWindow);
end;
end;
 
出错信息?
 
>> while GetModuleUsage(hExeHandle) 0 do
^^^?
while GetModuleUsage(hExeHandle)=0 do

另外, WinExec是16位的函数, 应该用CreateProcess或ShellExecute
替换, 并且应该保证arj.exe在path环境变量中能够找到.
 
只能说WinExec支持16位,他会把工作交给系统.
CreateProcess参数太多,不适合于初学
 
Iknow: while GetModuleUsage(hExeHandle) 0 没错,你看看它的"源文件",中间
有<>被html语法解释掉了.

winexec没有问题,什么exe都可以执行.

delphiboy: 还是把出错信息贴出来,大家帮你分析.

 
only the statement "WinExec('arj.exe /?',SW_SHOWNORMAL);" is enough
if the program "arj.exe" can access by path
 
厉害, 原来你想在arj运行时你的程序停止响应呀?
只能用bethouvnlue所谓的"不适合于初学者"的CreateProcess来完成.
 
出错信息:Undeclared identifier:'GetModuleUsage'.
另外,我已经把ARJ.exe程序放在程序的同一目录下了。
 
这个问题我还是没有解决。
 
你到底要达到什么目的呢? 是不是eyes说的"在arj运行时你的程序停止响应"?
 
接受答案了.
 

Similar threads

S
回复
0
查看
3K
SUNSTONE的Delphi笔记
S
S
回复
0
查看
2K
SUNSTONE的Delphi笔记
S
I
回复
0
查看
759
import
I
后退
顶部