function ExecAndWait: Longword;
var { by Pat Ritchey }
zAppName: array[0..512] of Char;
zCurDir: array[0..255] of Char;
WorkDir: string;
StartupInfo: TStartupInfo;
ProcessInfo: TProcessInformation;
AppIsRunning: DWORD;
begin
// StrPCopy(zAppName, FileName);
// GetDir(0, WorkDir);
StrPCopy(zCurDir, WorkDir);
FillChar(StartupInfo, SizeOf(StartupInfo), #0);
StartupInfo.cb := SizeOf(StartupInfo);
StartupInfo.dwFlags := STARTF_USESHOWWINDOW;
StartupInfo.wShowWindow := SW_SHOW;
CreateProcess(PChar('G:\SQL_2005_Developer_Edition \Servers\setup.exe'),PChar(' /qn ADDLOCAL=all INSTANCENAME="MSSQLSERVER" SQLACCOUNT="NT AUTHORITY\SYSTEM" ASACCOUNT="NT AUTHORITY\SYSTEM" SQLPASSWORD="salam" AGTACCOUNT="NT AUTHORITY\SYSTEM" SQLBROWSERACCOUNT="NT AUTHORITY\SYSTEM" SQLAUTOSTART=1 SQLBROWSERAUTOSTART=1'),nil,nil,False,CREATE_NEW_C ONSOLE or NORMAL_PRIORITY_CLASS,nil,nil,StartupInfo,ProcessI nfo) ;
repeat
Application.ProcessMessages;
until WaitForSingleObject(ProcessInfo.hProcess, INFINITE)=WAIT_OBJECT_0;
ShowMessage('notepad is finishd');
GetExitCodeProcess(ProcessInfo.hProcess, Result);
CloseHandle(ProcessInfo.hProcess);
CloseHandle(ProcessInfo.hThread);
end;
procedure TForm1.Button1Click(Sender: TObject);
var
dr:dword;
h:thandle;
begin
h:=createthread(nil,0,@ExecAndWait,nil,0,dr);
end;
اینم یه فانکشن از lord_viper عزیز