unit Process; interface uses Windows, SysUtils,Generics.Collections; type IProcess = interface ['{6F9391CA-3C18-40CE-BA91-BEDA3B405F45}'] function GetProcessHandle(): THandle; function GetThreadHandle(): THandle; function GetProcessId(): Cardinal; function GetThreadId(): Cardinal; function WaitForInputIdle(milliseconds: Cardinal): Cardinal; function WaitForExit(milliseconds: Cardinal): Cardinal; property ProcessHandle: THandle read GetProcessHandle; property ThreadHandle: THandle read GetThreadHandle; property ProcessId: Cardinal read GetProcessId; property ThreadId: Cardinal read GetThreadId; end; IProcessBuilder = interface; IStartUpInfoBuilder = interface ['{296CD1A4-05E6-4B27-BD48-7DC29865AD3C}'] function Flags(flags: Cardinal): IStartUpInfoBuilder; function ShowWindow(showWindow: Word): IStartUpInfoBuilder; function Build(): IProcessBuilder; end; ICommandLineArgsBuilder = interface ['{A777E7A0-818C-4AD8-A728-13A41778D57B}'] function Arg(name: string; value: string = ''): ICommandLineArgsBuilder; function Build(): IProcessBuilder; end; IProcessBuilder = interface ['{B3983F67-486B-41FB-9761-452C3CB763CF}'] function Name(name: string): IProcessBuilder; function CommandLineArgs(): ICommandLineArgsBuilder; function InheritHandles(inheritHandles: boolean): IProcessBuilder; function Flags(flags: Cardinal): IProcessBuilder; function Directory(directory: string): IProcessBuilder; function StartInfo(): IStartUpInfoBuilder; function TryStart(out process: IProcess): boolean; end; TProcess = class(TInterfacedObject, IProcess) strict private fProcessHandle: THandle; fThreadHandle: THandle; fProcessId: Cardinal; fThreadId: Cardinal; fAutoCloseHandles: boolean; protected function GetProcessHandle(): THandle; function GetThreadHandle(): THandle; function GetProcessId(): Cardinal; function GetThreadId(): Cardinal; function WaitForInputIdle(milliseconds:
delphi Process进程控制
最新推荐文章于 2023-06-29 14:52:02 发布