procedure TForm1.Button1Click(Sender: TObject);
var
i: Boolean;
PI: _PROCESS_INFORMATION;
SI: _STARTUPINFOA;
begin
SI.cb := Sizeof(SI);
SI.wShowWindow := SW_MAXIMIZE;
i := CreateProcess(nil, PChar('notepad.exe'), nil, nil, FALSE,
CREATE_DEFAULT_ERROR_MODE, nil, nil, SI, PI);
if i = TRUE then showmessage('right');
end;结果都是CreateProcess返回FALSE,notepad无法启动,是不是那里写错了?大家帮忙看看!
var
i: Boolean;
PI: _PROCESS_INFORMATION;
SI: _STARTUPINFOA;
begin
SI.cb := Sizeof(SI);
SI.wShowWindow := SW_MAXIMIZE;
i := CreateProcess(nil, PChar('notepad.exe'), nil, nil, FALSE,
CREATE_DEFAULT_ERROR_MODE, nil, nil, SI, PI);
if i = TRUE then showmessage('right');
end;结果都是CreateProcess返回FALSE,notepad无法启动,是不是那里写错了?大家帮忙看看!
解决方案 »
- 自定义函数不能用self
- 程序中有多个form,最小化mainform,如何使其中一个form不被最小化?
- 安装dll时,提示没有找到接口
- 用QuickReport报表,如果只有一页时,怎么让工具栏上的‘前一面’‘下一页’‘最后一页’按钮变成灰的,即不可用状态?
- 为什么我的pws安装时提示需要winsock32??
- 高份相赠!!!有人用DELPHI做过GIS吗?????
- 如何判断两个ACCESS数据库中表的结构完全相同?
- 三层架构中Client与ApplicationServer互相通讯的问题,特别邀请:chechy(我爱洁洁)
- 请问,怎么确定A驱中是否有软盘
- 有没有在长沙的朋友!!!想问一下查程序员考试的情况!!
- 判断显示属性中cheakbox是否已选择
- 大量计算结果的存放问题
si.cb := sizeof(si);
...
function WinExecAndWait32(FileName: string; Visibility: Boolean): integer;
var
zAppName: array[0..512] of char; //存放应用程序名
StartupInfo: TStartupInfo;
ProcessInfo: TProcessInformation;
exitCode: Dword;
aVisibility: integer;
begin
StrPCopy(zAppName, FileName);
FillChar(StartupInfo, Sizeof(StartupInfo), #0);
//给StartupInfo结构体赋值
StartupInfo.cb := Sizeof(StartupInfo);
StartupInfo.dwFlags := STARTF_USESHOWWINDOW;
if Visibility then
aVisibility := 1
else
aVisibility := 0; StartupInfo.wShowWindow := aVisibility;
//调用CreateProcess 创建进程,执行指定的可执行文件
if not CreateProcess(nil, zAppName, nil, nil, false
, CREATE_NEW_CONSOLE or NORMAL_PRIORITY_CLASS
, nil, nil, StartupInfo, ProcessInfo) then
Result := -1
else
begin
//等待可执行文件退出
WaitforSingleObject(ProcessInfo.hProcess, INFINITE);
//得到进程终止状态码
GetExitCodeProcess(ProcessInfo.hProcess, exitCode);
result := Exitcode;
end;
end;
var
zAppName: array[0..512] of char; //存放应用程序名
StartupInfo: TStartupInfo;
ProcessInfo: TProcessInformation;
exitCode: Dword;
aVisibility: integer;
begin
StrPCopy(zAppName, FileName);
FillChar(StartupInfo, Sizeof(StartupInfo), #0);
//给StartupInfo结构体赋值
StartupInfo.cb := Sizeof(StartupInfo);
StartupInfo.dwFlags := STARTF_USESHOWWINDOW;
if Visibility then
aVisibility := 1
else
aVisibility := 0; StartupInfo.wShowWindow := aVisibility;
//调用CreateProcess 创建进程,执行指定的可执行文件
if not CreateProcess(nil, zAppName, nil, nil, false
, CREATE_NEW_CONSOLE or NORMAL_PRIORITY_CLASS
, nil, nil, StartupInfo, ProcessInfo) then
Result := -1
else
begin
//等待可执行文件退出
WaitforSingleObject(ProcessInfo.hProcess, INFINITE);
//得到进程终止状态码
GetExitCodeProcess(ProcessInfo.hProcess, exitCode);
result := Exitcode;
end;
end;
procedure TForm1.btnExecuteClick(Sender: TObject);
begin
WinExecAndWait32('notepad', True);
end;
给你全部的好了