InstallShield隐藏外部应用程序窗口

来源:互联网 发布:ubuntu怎么解压tar.Z 编辑:程序博客网 时间:2024/06/16 11:44

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;

原创粉丝点击