AGB  ·  Datenschutz  ·  Impressum  







Anmelden
Nützliche Links
Registrieren
Zurück Delphi-PRAXiS Programmierung allgemein Win32/Win64 API (native code) Delphi Process starten und handle bekommen
Thema durchsuchen
Ansicht
Themen-Optionen

Process starten und handle bekommen

Ein Thema von perle · begonnen am 8. Nov 2004 · letzter Beitrag vom 26. Feb 2012
 
perle

Registriert seit: 8. Apr 2004
183 Beiträge
 
Delphi 7 Enterprise
 
#1

Process starten und handle bekommen

  Alt 8. Nov 2004, 10:29
Hi zusammen..


ich möchte gerne aus meinem Programm heraus ein Programm unsichtbar starten (SW_HIDE) aber gleichzeitig dessen Handle speichern.

Normalerweise liste ich mit enumwindows alle fenster auf und suche mir das richtige raus, oder benutze FindWindow, scheinbar können unsichtbare Fenster so nicht gefunden werden !?

Bei recherchen bin ich dann auf CreateProcess gestoßen (in dem Zusammenhang, ein Programm zu starten und auf dessen beendigung zu warten, wofür man ja das handle benötigt).

Wenn ich mir dann die Procedur WaitForSingleObject angucke, fällt mir auf , dass dort als erster Parameter scheinbar das besagte Handle übergeben wird, welches in proc.hprocess (proc : TProcessInformation) steht.

wenn ich mir diesen Wert aber in einer Variable (hproc : Cardinal) speichere und dann versuche mit
ShowWindow(hproc,SW_HIDE); das Fenster verschwinden zu lassen tut sich nichts.

Was mache ich also falsch?


hier auch mal der Code, den ich zum testen verwendet hab:

Code:
function ExecAndWait(const Filename, Params: string;
                     WindowState: word): boolean;
var
  SUInfo: TStartupInfo;
  ProcInfo: TProcessInformation;
  CmdLine: string;
begin
  CmdLine := '"' + Filename + '" ' + Params;
  FillChar(SUInfo, SizeOf(SUInfo), #0);
  with SUInfo do begin
    cb := SizeOf(SUInfo);
    dwFlags := STARTF_USESHOWWINDOW;
    wShowWindow := WindowState;
  end;
  Result := CreateProcess(NIL, PChar(CmdLine), NIL, NIL, FALSE,
                          CREATE_NEW_CONSOLE or
                          NORMAL_PRIORITY_CLASS, NIL,
                          PChar(ExtractFilePath(Filename)),
                          SUInfo, ProcInfo);
  { Wait for it to finish. }
  if Result then begin
    hProc := ProcInfo.hProcess;
    ShowWindow(hproc, SW_HIDE);                   // ich weiss, dass ich den prozess auch gleich mit diesem Windowstate
                                                   // öffnen kann, es war nur zu testzwecken , wie schon gesagt.
  end;
end;

procedure TForm1.Button1Click(Sender: TObject);
begin
  if OpenDialog1.Execute then
    ExecAndWait(OpenDialog1.FileName,'',SW_SHOW);
end;

ps: nein das wird kein Trojaner, keylogger oder sonstiges in der Art.
  Mit Zitat antworten Zitat
 


Forumregeln

Es ist dir nicht erlaubt, neue Themen zu verfassen.
Es ist dir nicht erlaubt, auf Beiträge zu antworten.
Es ist dir nicht erlaubt, Anhänge hochzuladen.
Es ist dir nicht erlaubt, deine Beiträge zu bearbeiten.

BB-Code ist an.
Smileys sind an.
[IMG] Code ist an.
HTML-Code ist aus.
Trackbacks are an
Pingbacks are an
Refbacks are aus

Gehe zu:

Impressum · AGB · Datenschutz · Nach oben
Alle Zeitangaben in WEZ +1. Es ist jetzt 13:40 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