⭐ 欢迎来到虫虫下载站! | 📦 资源下载 📁 资源专辑 ℹ️ 关于我们
⭐ 虫虫下载站

📄 unit1.pas

📁 在delphi中实现windows核心编程.原书光盘代码核心编程.原书光盘代码
💻 PAS
字号:
unit Unit1;

interface

uses
  Windows, Messages, SysUtils, Classes, Graphics, Controls, Forms, Dialogs,
  StdCtrls, ExtCtrls;

type
  TForm1 = class(TForm)
    Button1: TButton;
    Memo1: TMemo;
    Timer1: TTimer;
    Edit1: TEdit;
    Label1: TLabel;
    procedure Button1Click(Sender: TObject);
    procedure Timer1Timer(Sender: TObject);
  private
    { Private declarations }
  public
    { Public declarations }
    sStartInfo: STARTUPINFO;
    seProcess, seThread: SECURITY_ATTRIBUTES;
    PProcInfo: PROCESS_INFORMATION;
    procedure AllRunProcess;
  end;

var
  Form1: TForm1;

implementation

{$R *.DFM}

procedure Tform1.AllRunProcess;
var
  bSuccess: boolean;
begin
  ZeroMemory(@sStartInfo, sizeof(sStartInfo));
  SStartInfo.cb := sizeof(sStartInfo);
  seProcess.nLength := sizeof(seProcess);
  seProcess.lpSecurityDescriptor := PChar(nil);
  seProcess.bInheritHandle := true;
  seThread.nLength := sizeof(seThread);
  seThread.lpSecurityDescriptor := PChar(nil);
  seThread.bInheritHandle := true;
  bSuccess := CreateProcess(PChar(nil), Pchar('mspaint.exe c:\snap.bmp'), @seProcess, @seThread, false, CREATE_DEFAULT_ERROR_MODE
    , Pchar(nil), Pchar(nil), sStartInfo, PProcInfo);
  if (not bSuccess) then
    Memo1.Lines.Add('创建记事本进程失败.')
  else
    Memo1.Lines.Add('创建记事本进程成功.')
end;

procedure TForm1.Button1Click(Sender: TObject);
begin
  AllRunProcess
end;

procedure TForm1.Timer1Timer(Sender: TObject);
var
  dwExitCode: DWORD;
  fprocessExit: boolean;
begin
  dwExitCode := 0;
  fprocessExit := GetExitCodeProcess
    (PProcInfo.hProcess, dwExitCode);
  if (fprocessExit and (dwExitCode <> STILL_ACTIVE)) then
  begin
    Memo1.Lines.Add('NotePad进程终止');
    CloseHandle(PProcInfo.hThread);
    CloseHandle(PProcInfo.hProcess);
    AllRunProcess;
  end;

end;

end.

⌨️ 快捷键说明

复制代码 Ctrl + C
搜索代码 Ctrl + F
全屏模式 F11
切换主题 Ctrl + Shift + D
显示快捷键 ?
增大字号 Ctrl + =
减小字号 Ctrl + -