Announcement

Collapse
No announcement yet.

CreateProcess, ProcessInformation und das Handle

Collapse
X
  • Filter
  • Time
  • Show
Clear All
new posts

  • CreateProcess, ProcessInformation und das Handle

    Der Parameter PPROCESS_INFORMATION bietet ja ein Handle auf den Process. Was kann man damit anfangen ?

    typedef struct _PROCESS_INFORMATION { // pi
    HANDLE hProcess;
    HANDLE hThread;
    DWORD dwProcessId;
    DWORD dwThreadId;
    } PROCESS_INFORMATION;

    Ich wollte ursprünglich das Handle benutzen, um die vormals gestartete Applikation wieder in den Vordergrund zu bringen. Mit ShowWindow(handle,SW_RESTORE); und SetForegroundWindow(handle); passiert da leider nichts,
    Mit einem anderen Programm kann ich Applikationen in den Vordergrund holen. Hierbei wird aber ein anderes Handle verwendet als das von CreateProcess zurück gegebene.

    Weiß jemand, wie man mit den gebotenen Informationen das Handle der Applikation bekommt, um diese nach vorne zu holen ?

    Danke im Voraus und Gruß
    Thomas

  • #2
    Probier mal folgendes:<p>
    <p>
    function ReaderRunningCB(Handle: HWND; Info: Pointer): BOOL; stdcall;<p>
    var<p>
    name: array[ 0..255 ] of char;<p>
    i: Integer;<p>
    s, s1: String;<p>
    begin<p>
    result := True;<p>
    GetWindowText( Handle, @name, 255 );<p>
    s := StrPas( name );<p>
    s1 := 'Dateisuche'; // Titel des Fensters<p>
    i := Length( s1 );<p>
    s := copy(s, 1, i);<p>
    if s = s1 then ShowWindow(Handle, SW_RESTORE);<p>
    end;<p>
    <p>
    procedure TForm1.btnProzessNachVorneClick(Sender: TObject);<p>
    var<p>
    zAppKlasse: array[0..260] of char;<p>
    zAppTitel: array[0..260] of char;<p>
    PrevInstHandle: THandle;<p>
    begin<p>
    StrPCopy(zAppKlasse, 'TfrmDateisuche'); // Klasse des Fensters<p>
    StrPCopy(zAppTitel, 'Dateisuche'); // Titel des Fensters<p>
    PrevInstHandle := FindWindow(zAppKlasse, zAppTitel);<p>
    EnumWindows(@ReaderRunningCB, 0);<p>
    SendMessage(PrevInstHandle, WM_SYSCOMMAND, SC_Minimize, 0);<p>
    Application.ProcessMessages;<p>
    SendMessage(PrevInstHandle, WM_SYSCOMMAND, SC_Restore, 0);<p>
    end;<p&gt

    Comment

    Working...
    X