InstallShield隐藏外部应用程序窗口

typedef STARTUPINFO
begin
LONG cb;
LONG lpReserved;
LONG lpDesktop;
LONG lpTitle;
LONG dwX;
LONG dwY;
LONG dwXSize;
LONG dwYSize;
LONG dwXCountChars;
LONG dwYCountChars;
LONG dwFillAttribute;
LONG dwFlags;
INT wShowWindow;
INT cbReserved2;
LONG lpReserved2;
LONG hStdInput;
LONG hStdOutput;
LONG hStdError;
end;

typedef PROCESS_INFORMATION
begin
LONG hProcess;
LONG hThread;
LONG dwProcessId;
LONG dwThreadId;
end;

prototype LONG KERNEL.CreateProcessA(LONG, BYVAL STRING, LONG, LONG, LONG, LONG, LONG, LONG, POINTER, POINTER);
prototype LONG KERNEL.GetExitCodeProcess(LONG, LONG);
prototype LONG KERNEL.CloseHandle(LONG);
prototype LONG KERNEL.WaitForSingleObject(LONG, LONG);
prototype LONG KERNEL.TerminateProcess(LONG, LONG);

  
function Execute(cmd)
STARTUPINFO start;
PROCESS_INFORMATION proc;
NUMBER ret, i;
begin
start.cb = 68;
start.wShowWindow =0;
start.dwFlags = STARTF_USESHOWWINDOW;
//return CreateProcessA("", cmd, 0, 0, 0, 0, 0, 0, &si, &pi);
if CreateProcessA(0, cmd, 0, 0, 1, NORMAL_PRIORITY_CLASS, 0, 0, &start, &proc) != 0 then
        //等待应用程序执行完成 

ret = WaitForSingleObject(proc.hProcess, 0xFFFF);
if ret = WAIT_TIMEOUT then
TerminateProcess(proc.hProcess, ret);
endif;
i = proc.hProcess;
   //获取应用程序执行结果。
 GetExitCodeProcess(proc.hProcess, ret); 
  //关闭

CloseHandle(proc.hProcess);

return ret;
endif;
end;

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值