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;

發表評論
所有評論
還沒有人評論,想成為第一個評論的人麼? 請在上方評論欄輸入並且點擊發布.
相關文章