Delphi-PRAXiS

Delphi-PRAXiS (https://www.delphipraxis.net/forum.php)
-   GUI-Design mit VCL / FireMonkey / Common Controls (https://www.delphipraxis.net/18-gui-design-mit-vcl-firemonkey-common-controls/)
-   -   Delphi Prozess / Programm suchen (https://www.delphipraxis.net/114883-prozess-programm-suchen.html)

emsländer 2. Jun 2008 12:18


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

Bernhard Geyer 2. Jun 2008 12:19

Re: Prozess / Programm suchen
 
Wenn du mit CreateProcess arbeitest kann du das Startverhalten (Warten, ...) steuern.

emsländer 2. Jun 2008 12:22

Re: Prozess / Programm suchen
 
Zitat:

Zitat von Bernhard Geyer
Wenn du mit CreateProcess arbeitest kann du das Startverhalten (Warten, ...) steuern.

Äh - ich bitte um Infos... damit hab ich noch nicht gearbeitet

Gruss

EL

Der.Kaktus 2. Jun 2008 12:29

Re: Prozess / Programm suchen
 
Hallo,

schau Dir mal den Thread und Source an. Da gehts zwar um SSH aber auch mit Putty.

plinkremote

emsländer 2. Jun 2008 12:46

Re: Prozess / Programm suchen
 
ich finde in der Codelib das hier:
Delphi-Quellcode:
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;
Was für eine Unit muss ich für WideExtractFileDir etc. angeben?
bzw. eigentlich sollte das ja auch mit extractfiledir etc. gehen?


und wo muss man das hier:
Delphi-Quellcode:
(Win32Platform = VER_PLATFORM_WIN32_NT)
angeben?

Gruss

EL

Sharky 2. Jun 2008 12:59

Re: Prozess / Programm suchen
 
Zitat:

Zitat von emsländer
ich finde in der Codelib das hier:

Hai emsländer.

Hast Du auch das hier in der CL gesehen?

emsländer 2. Jun 2008 13:21

Re: Prozess / Programm suchen
 
Zitat:

Zitat von Sharky
Zitat:

Zitat von emsländer
ich finde in der Codelib das hier:

Hai emsländer.

Hast Du auch das hier in der CL gesehen?

jetzt ja :shock:

Hast dafür auch vielleicht noch einen Beispielaufruf?

Gruss

EL

Luckie 2. Jun 2008 13:32

Re: Prozess / Programm suchen
 
Was ist daran
Delphi-Quellcode:
function ShellExecuteAndWaitA(hWnd: HWND; Operation, FileName, Parameters, Directory: PAnsiChar; ShowCmd: Integer; bWait: BOOL): HINST; stdcall;
unklar? Die Parameter sind doch selbsterklärend.

emsländer 2. Jun 2008 13:34

Re: Prozess / Programm suchen
 
Zitat:

Zitat von Luckie
Was ist daran
Delphi-Quellcode:
function ShellExecuteAndWaitA(hWnd: HWND; Operation, FileName, Parameters, Directory: PAnsiChar; ShowCmd: Integer; bWait: BOOL): HINST; stdcall;
unklar? Die Parameter sind doch selbsterklärend.

hat sich schon erledigt.... war über das wait-true gestolpert.

vielen Dank für Eure Hilfe

wie immer top

Gruss

EL


Alle Zeitangaben in WEZ +1. Es ist jetzt 17:59 Uhr.

Powered by vBulletin® Copyright ©2000 - 2024, Jelsoft Enterprises Ltd.
LinkBacks Enabled by vBSEO © 2011, Crawlability, Inc.
Delphi-PRAXiS (c) 2002 - 2023 by Daniel R. Wolf, 2024 by Thomas Breitkreuz