Embarcadero Delphi
अन्य कार्यक्रम चला रहे हैं
खोज…
प्रक्रिया बनाइये
अन्य प्रोग्राम लॉन्च करने के लिए CreateProcess
Windows API का उपयोग करने के लिए निम्न फ़ंक्शन कोड CreateProcess
करता है।
यह कॉन्फ़िगर करने योग्य है और कॉल खत्म होने तक इंतजार कर सकता है या तुरंत वापस लौट सकता है।
पैरामीटर:
-
FileName
- निष्पादन योग्य के लिए पूर्ण पथ -
Params
- कमांड लाइन पैरामीटर या खाली स्ट्रिंग का उपयोग करें -
Folder
- काम करने वाले फोल्डर को प्रोग्राम कहा जाता है - अगरFileName
से खाली रास्ता निकाला जाएगा -
WaitUntilTerminated
- अगर सही फ़ंक्शन निष्पादन को समाप्त करने के लिए प्रक्रिया की प्रतीक्षा करेगा -
WaitUntilIdle
- अगर सही फ़ंक्शन WaitForInputIdle फ़ंक्शन को कॉल करेगा और तब तक प्रतीक्षा करेगा जब तक कि निर्दिष्ट प्रक्रिया ने अपने प्रारंभिक इनपुट को संसाधित नहीं कर लिया है और जब तक कोई उपयोगकर्ता इनपुट लंबित नहीं है -
RunMinimized
- अगर सही प्रक्रिया को कम से कम चलाया जाएगा -
ErrorCode
- यदि फ़ंक्शन विफल रहता है तो इसमें Windows त्रुटि कोड होगा
function ExecuteProcess(const FileName, Params: string; Folder: string; WaitUntilTerminated, WaitUntilIdle, RunMinimized: boolean;
var ErrorCode: integer): boolean;
var
CmdLine: string;
WorkingDirP: PChar;
StartupInfo: TStartupInfo;
ProcessInfo: TProcessInformation;
begin
Result := true;
CmdLine := '"' + FileName + '" ' + Params;
if Folder = '' then Folder := ExcludeTrailingPathDelimiter(ExtractFilePath(FileName));
ZeroMemory(@StartupInfo, SizeOf(StartupInfo));
StartupInfo.cb := SizeOf(StartupInfo);
if RunMinimized then
begin
StartupInfo.dwFlags := STARTF_USESHOWWINDOW;
StartupInfo.wShowWindow := SW_SHOWMINIMIZED;
end;
if Folder <> '' then WorkingDirP := PChar(Folder)
else WorkingDirP := nil;
if not CreateProcess(nil, PChar(CmdLine), nil, nil, false, 0, nil, WorkingDirP, StartupInfo, ProcessInfo) then
begin
Result := false;
ErrorCode := GetLastError;
exit;
end;
with ProcessInfo do
begin
CloseHandle(hThread);
if WaitUntilIdle then WaitForInputIdle(hProcess, INFINITE);
if WaitUntilTerminated then
repeat
Application.ProcessMessages;
until MsgWaitForMultipleObjects(1, hProcess, false, INFINITE, QS_ALLINPUT) <> WAIT_OBJECT_0 + 1;
CloseHandle(hProcess);
end;
end;
उपरोक्त फ़ंक्शन का उपयोग
var
FileName, Parameters, WorkingFolder: string;
Error: integer;
OK: boolean;
begin
FileName := 'C:\FullPath\myapp.exe';
WorkingFolder := ''; // if empty function will extract path from FileName
Parameters := '-p'; // can be empty
OK := ExecuteProcess(FileName, Parameters, WorkingFolder, false, false, false, Error);
if not OK then ShowMessage('Error: ' + IntToStr(Error));
end;
Modified text is an extract of the original Stack Overflow Documentation
के तहत लाइसेंस प्राप्त है CC BY-SA 3.0
से संबद्ध नहीं है Stack Overflow