CreateProcess出错了 ( 积分: 0 )

  • 主题发起人 主题发起人 linuxping
  • 开始时间 开始时间
L

linuxping

Unregistered / Unconfirmed
GUEST, unregistred user!
我创建一个进程来运行一个安装程序,但是创建进程出错了,下面是代码,大家帮我看看:<br><br><br>。。。。<br>function&nbsp;IsWinpcapInstalled:Boolean;<br>var<br>&nbsp;&nbsp;IniFile:TIniFile;<br>&nbsp;&nbsp;IsInstalled:string;<br>begin<br>&nbsp;&nbsp;IniFile:=TIniFile.Create(IncludeTrailingBackslash(ExtractFilePath(ParamStr(0)))+'prj.ini');<br>&nbsp;&nbsp;IsInstalled:=IniFile.ReadString('WinPCap','Installed','False');<br>&nbsp;&nbsp;Result:=StrToBool(IsInstalled);<br>&nbsp;&nbsp;IniFile.Free;<br>end;<br><br><br><br>var<br>&nbsp;&nbsp;SA:&nbsp;TSecurityAttributes;<br>&nbsp;&nbsp;SI:&nbsp;TStartupInfo;<br>&nbsp;&nbsp;PI:&nbsp;TProcessInformation;<br>&nbsp;&nbsp;WinPCapPath:string;<br>&nbsp;&nbsp;AppProcess,AppThread:THandle;<br><br>&nbsp;&nbsp;<br>{$R&nbsp;*.res}<br><br>begin<br>&nbsp;&nbsp;Application.Initialize;<br><br>&nbsp;&nbsp;Application.CreateForm(TForm1,&nbsp;Form1);<br>&nbsp;&nbsp;Application.MainForm.Visible:=False;<br><br>&nbsp;&nbsp;if&nbsp;not&nbsp;IsWinpcapInstalled&nbsp;then<br>&nbsp;&nbsp;begin<br>&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;frmInstall:=TfrmInstall.Create(Application);<br>&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;frmInstall.ShowModal;<br>&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;if&nbsp;Form1.InstalledWinPCap&nbsp;then&nbsp;//安装WinPCap<br>&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;begin<br>&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;//创建一个进程来安装WinPCap<br>&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;FillChar(SA,SizeOf(SA),#0);<br>&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;SA.nLength:=SizeOf(SA);<br>&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;SA.lpSecurityDescriptor:=nil;<br>&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;SA.bInheritHandle:=True;<br><br>&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;FillChar(SI,SizeOf(SI),#0);<br>&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;with&nbsp;SI&nbsp;do<br>&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;begin<br>&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;cb:=SizeOf(SI);<br>&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;lpReserved:=nil;<br>&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;lpDesktop:=nil;<br>&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;lpTitle:=nil;<br>&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;<br>&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;dwFlags:=STARTF_USESHOWWINDOW&nbsp;or&nbsp;STARTF_FORCEONFEEDBACK ;<br>&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;wShowWindow:=SW_SHOW;<br>&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;cbReserved2:=0;<br>&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;lpReserved2:=nil;<br>&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;//hStdInput:=GetStdHandle(STD_INPUT_HANDLE);<br>&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;//hStdError:=StdOutFile;<br>&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;//hStdOutput:=StdOutFile;<br>&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;end;<br><br>&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;WinPCapPath:=IncludeTrailingBackslash(ExtractFilePath(ParamStr(0)))+'winpcap/'+'WinPcap_4_0.exe'+#0;<br>&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;try<br>&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;if&nbsp;FileExists(WinPCapPath)&nbsp;then<br>&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;Application.MessageBox('asd','caption');<br>&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;if&nbsp;CreateProcess(PChar(WinPCapPath),&nbsp;nil,&nbsp;nil,&nbsp;nil,<br>&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;True,&nbsp;DEBUG_ONLY_THIS_PROCESS&nbsp;or&nbsp;NORMAL_PRIORITY_CLASS&nbsp;,&nbsp;nil,<br>&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;PChar(WinPCapPath),&nbsp;SI,&nbsp;PI)&nbsp;then<br>&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;begin<br>&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;WaitForSingleObject(PI.hProcess,INFINITE);<br>&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;AppProcess:=PI.hProcess;<br>&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;AppThread:=PI.hThread;<br><br>&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;Form1.SetWinpcapInstalled(True);&nbsp;//设置安装标记,表明已经安装了WinPCap。<br>&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;end&nbsp;else<br>&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;Application.MessageBox('WinPCap安装失败。&nbsp;请手动安装WinPCap。','安装WinPCap');<br>&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;<br><br>&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;finally<br>&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;if&nbsp;AppProcess&nbsp;&lt;&gt;&nbsp;0&nbsp;then&nbsp;CloseHandle(AppProcess);<br>&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;if&nbsp;AppThread&nbsp;&lt;&gt;&nbsp;0&nbsp;then&nbsp;CloseHandle(AppThread);<br>&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;end;<br>&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;end;<br>&nbsp;&nbsp;end;<br><br>&nbsp;&nbsp;Application.MainForm.Visible:=True;<br>&nbsp;&nbsp;Application.Run;<br>end.
 
我急得很啊~~<br>怎么好像没人看?
 
直接用WinExec:<br>WinPCapPath:=IncludeTrailingBackslash(ExtractFilePath(ParamStr(0)))+'winpcap/'+'WinPcap_4_0.exe';<br><br>WinExec(PChar(WinPCapPath),SW_NORMAL);
 
早该结了<br><br>路径写错了而已
 
后退
顶部