D7中:如何实现如下功能: 屏幕上有Button1 和Button2 如何在点击Button1后,执行C盘下a.exe; 点击Button2后,结束a.exe进程呢 请给出代码...
解决方案 »
- 在哪里可以下载到delphi2007企业版的最新Update ??谢谢
- 字符串查找的算法
- 我要效率 : 快速对比查找两个字符串的第一个不同位置
- access中的视图具体怎么用法?
- 求reportmachine2.6的delphi7的安装方法,详细点,在线等
- 推荐文章:商业软件联盟(BSA)真相:盗版92%的真实与谎言
- 很多软件比如LeapFTP,FlashGet等都有一个proxy设置,用Delphi如何实现这个功能?
- 请问,SQL Server2000里如何判断一个值是不是NULL
- 关于TCP/IP
- 如何更改图片的尺寸,ACDSEE也是在3.0之后才有了这个功能的
- 求控件! 急用, 各位大哥帮帮忙啊, 要不然会死人的!
- 请问,Delphi如何控制FastReport中的某一个对象的值?
点BUTTON1时
winexec('c:\a.exe -s'),0);
点BUTTON2时
...
结束 我现在也没有很好的解决办法 Up
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;
得到ExitCode后调用ExitProcess就可以了。
sendmessage()
winexec()
上面的代码里是执行程序,同时也得到了ExitCode,得到这个后用ExitProcess这个API函数就能结束进程了,不是解决问题了吗?实在不懂请参考MSDN。
unit Unit1;interfaceuses
Windows, Messages, SysUtils, Variants, Classes, Graphics, Controls, Forms,
Dialogs, StdCtrls;type
TForm1 = class(TForm)
Button1: TButton;
Button2: TButton;
procedure Button1Click(Sender: TObject);
procedure Button2Click(Sender: TObject);
private
{ Private declarations }
public
{ Public declarations }
end;var
Form1: TForm1;implementation{$R *.dfm}var ExitCode: DWORD;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
//得到进程终止状态码
GetExitCodeProcess(ProcessInfo.hProcess, exitCode);
result := Exitcode;
end;
end;
procedure TForm1.Button1Click(Sender: TObject);
begin
ExitCode := WinExecAndWait32('C:\Program Files\Wom\Windows优化大师.exe',True);
end;procedure TForm1.Button2Click(Sender: TObject);
begin
ExitProcess(ExitCode);
end;end.
有更好的方法没有?我也想知道怎么解决啊!呵呵
unit Unit1;interfaceuses
Windows, Messages, SysUtils, Variants, Classes, Graphics, Controls, Forms,
Dialogs, StdCtrls;type
TForm1 = class(TForm)
Button1: TButton;
Button2: TButton;
procedure Button1Click(Sender: TObject);
procedure Button2Click(Sender: TObject);
private
{ Private declarations }
public
{ Public declarations }
end;var
Form1: TForm1;implementation{$R *.dfm}var ExitCode: DWORD;
ProcessInfo: TProcessInformation;function WinExecAndWait32(FileName: string; Visibility: Boolean): integer;
var
zAppName: array[0..512] of char; //存放应用程序名
StartupInfo: TStartupInfo;
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
//得到进程终止状态码
GetExitCodeProcess(ProcessInfo.hProcess, exitCode);
result := Exitcode;
end;
end;
procedure TForm1.Button1Click(Sender: TObject);
begin
WinExecAndWait32('C:\Program Files\Wom\Windows优化大师.exe',True);
end;procedure TForm1.Button2Click(Sender: TObject);
begin
TerminateProcess(ProcessInfo.hProcess, ExitCode);
end;end.
var
zappname:array [0..512] of char;
zcurdir:array [0..255] of char;
workdir:string;
startupinfo:tstartupinfo;
processinfo:tprocessinformation;
exitcode:cardinal;
begin
strpcopy(zappname,filename);
getdir(0,workdir);
strpcopy(zcurdir,workdir);
fillchar(startupinfo,sizeof(startupinfo),#0);
startupinfo.cb:=sizeof(startupinfo);
startupinfo.wShowWindow:=visibility;
if not createprocess(nil,zappname,nil,nil,false,create_new_console or Normal_priority_class,
nil,nil,startupinfo,processinfo) then result:=-1;
end;结束用TerminateProcess(processinfo.hProcess,exitcode)