![]() |
Prozess / Programm suchen
Moin,
ich starte via shellexec ein Programm. (psftp.exe) Jetzt möchte ich an dieser Stelle warten, bis dieser seine Arbeit getan hat. (holt einige Sachen wo ab) In dieser Zeit ist psftp.exe als Task im TaskManager zu sehen. Wie kann ich diesen Prozess nun via Delphi finden? Gruss EL |
Re: Prozess / Programm suchen
Wenn du mit CreateProcess arbeitest kann du das Startverhalten (Warten, ...) steuern.
|
Re: Prozess / Programm suchen
Zitat:
Gruss EL |
Re: Prozess / Programm suchen
Hallo,
schau Dir mal den Thread und Source an. Da gehts zwar um SSH aber auch mit Putty. ![]() |
Re: Prozess / Programm suchen
ich finde in der Codelib das hier:
Delphi-Quellcode:
Was für eine Unit muss ich für WideExtractFileDir etc. angeben?
function ExecAndWait(Filename, Params: Widestring; WindowState: word = SW_SHOWNORMAL): boolean;
var ShExecInfoW: SHELLEXECUTEINFOW; ShExecInfoA: SHELLEXECUTEINFOA; r : Cardinal; begin Result := false; if Filename = '' then exit; if not WideFileExists(FileName) then exit; if Win32IsUnicode then begin ZeroMemory(@ShExecInfoW, SizeOf(ShExecInfoW)); ShExecInfoW.Wnd := GetForegroundWindow; ShExecInfoW.cbSize := sizeof(SHELLEXECUTEINFOW); ShExecInfoW.fMask := SEE_MASK_NOCLOSEPROCESS; ShExecInfoW.lpVerb := 'open'; ShExecInfoW.lpFile := PWideChar(Filename); ShExecInfoW.lpParameters := PWideChar(Params); ShExecInfoW.lpDirectory := PWideChar(WideExtractFileDir(Filename)); ShExecInfoW.nShow := WindowState; Result := ShellExecuteExW(@ShExecInfoW); end else begin ZeroMemory(@ShExecInfoA, SizeOf(ShExecInfoA)); ShExecInfoA.Wnd := GetForegroundWindow; ShExecInfoA.cbSize := sizeof(SHELLEXECUTEINFOA); ShExecInfoA.fMask := SEE_MASK_NOCLOSEPROCESS; ShExecInfoA.lpVerb := 'open'; ShExecInfoA.lpFile := PChar(AnsiString(Filename)); ShExecInfoA.lpParameters := PChar(AnsiString(Params)); ShExecInfoA.lpDirectory := PChar(AnsiString(WideExtractFileDir(Filename))); ShExecInfoA.nShow := WindowState; Result := ShellExecuteExA(@ShExecInfoA); end; try if Result then begin if Win32IsUnicode then r := WaitForSingleObject(ShExecInfoW.hProcess, INFINITE) else r := WaitForSingleObject(ShExecInfoA.hProcess, INFINITE); end; finally if Win32IsUnicode then CloseHandle(ShExecInfoW.hProcess) else CloseHandle(ShExecInfoA.hProcess); end; end; bzw. eigentlich sollte das ja auch mit extractfiledir etc. gehen? und wo muss man das hier:
Delphi-Quellcode:
angeben?
(Win32Platform = VER_PLATFORM_WIN32_NT)
Gruss EL |
Re: Prozess / Programm suchen
Zitat:
Hast Du auch ![]() |
Re: Prozess / Programm suchen
Zitat:
Hast dafür auch vielleicht noch einen Beispielaufruf? Gruss EL |
Re: Prozess / Programm suchen
Was ist daran
Delphi-Quellcode:
unklar? Die Parameter sind doch selbsterklärend.
function ShellExecuteAndWaitA(hWnd: HWND; Operation, FileName, Parameters, Directory: PAnsiChar; ShowCmd: Integer; bWait: BOOL): HINST; stdcall;
|
Re: Prozess / Programm suchen
Zitat:
vielen Dank für Eure Hilfe wie immer top Gruss EL |
Alle Zeitangaben in WEZ +1. Es ist jetzt 16:38 Uhr. |
Powered by vBulletin® Copyright ©2000 - 2025, Jelsoft Enterprises Ltd.
LinkBacks Enabled by vBSEO © 2011, Crawlability, Inc.
Delphi-PRAXiS (c) 2002 - 2023 by Daniel R. Wolf, 2024-2025 by Thomas Breitkreuz