Имя пользователя:
Пароль:  
Помощь | Регистрация | Забыли пароль?  

Показать сообщение отдельно

Аватара для kotkovets

Ветеран


Сообщения: 1216
Благодарности: 486

Профиль | Отправить PM | Цитировать


Пример на делфи
читать дальше »
Код: Выделить весь код
function Exec(RunApp : string; cmdline : string) : bool;
var
    si : TStartupInfo;
    pi : TProcessInformation;
begin
    try
      ZeroMemory(@si,SizeOf(si));
      si.cb := SizeOf(si);
      si.dwFlags := STARTF_USESHOWWINDOW;
      si.wShowWindow := SW_SHOW; // SW_HIDE - скрытый запуск
      Result := CreateProcess(PChar(RunApp),PChar(' ' + cmdline),nil, nil,False,0,nil,nil,si,pi);
	  WaitForSingleObject(pi.hProcess, INFINITE); // ожидаем завершения процесса
      CloseHandle(pi.hThread);
      CloseHandle(pi.hProcess);
    except
      Result := false;
    end;
end;
//запуск функции
//  Exec('путь к makensis', 'путь к скрипту');

Пример на апи, запуск консоли, в скрытом режиме и ожидание завершения. Если все хорошо в $0 возвращается 0
читать дальше »
Код: Выделить весь код
!include "MUI2.nsh"
!include "Util.nsh"

OutFile "Tes_Run_MAKE.exe"
ShowInstDetails show

!insertmacro MUI_PAGE_INSTFILES
!insertmacro MUI_LANGUAGE "Russian"

!define INFINITE          -1
!define DETACHED_PROCESS  0x00000008
!define ExecWait  "!insertmacro ExecWaitCall"

!macro ExecWaitCall CmdLine ExitCode
	Push `${CmdLine}`
	${CallArtificialFunction} _CallExecWait
	Pop ${ExitCode}
!macroend

!macro _CallExecWait
    System::Store S
    Push error
    System::Alloc 72
    Pop $2
    System::Call "*$2(i72)"
    System::Call "*(i,i,i,i)i.r3"
    Exch
    System::Call "kernel32::CreateProcess(i0, ts, i0, i0, i0, i${DETACHED_PROCESS}, i0, i0, ir2, ir3)i.r4"
    ${Unless} $4 = 0
        Pop $6
        System::Call "*$3(i.r4)"
        System::Call "kernel32::WaitForSingleObject(ir4, i${INFINITE})"
        System::Call "kernel32::GetExitCodeProcess(ir4, *i.s)"
        System::Call "kernel32::CloseHandle(ir4)"
    ${EndUnless}
    System::Free $2
    System::Free $3
    System::Store L
!macroend

Section ""
  ${ExecWait} '"${NSISDIR}\makensis.exe" "D:\designer\Debug.nsi"' $0
  DetailPrint "ExitCode: $0"
SectionEnd

Если через диспетчер завершть makensis - код возврата 1

-------
Спасибо ВСЕМ за то, что тратите свое время, что бы ПОМОЧЬ МНЕ.


Последний раз редактировалось kotkovets, 31-07-2011 в 19:39.


Отправлено: 19:25, 31-07-2011 | #1442