AGB  ·  Datenschutz  ·  Impressum  







Anmelden
Nützliche Links
Registrieren
Zurück Delphi-PRAXiS Programmierung allgemein Win32/Win64 API (native code) Delphi Programmfokus setzen per Process-ID
Thema durchsuchen
Ansicht
Themen-Optionen

Programmfokus setzen per Process-ID

Ein Thema von 64Jabor · begonnen am 24. Jan 2009 · letzter Beitrag vom 25. Jan 2009
Antwort Antwort
Seite 2 von 2     12   
Benutzerbild von Luckie
Luckie

Registriert seit: 29. Mai 2002
37.621 Beiträge
 
Delphi 2006 Professional
 
#11

Re: Programmfokus setzen per Process-ID

  Alt 25. Jan 2009, 00:48
Man könnte es auch einfach sein lassn und den Benutzer entscheiden lassen, wann er das Programm im Vordergund haben will und wann nicht.
Michael
Ein Teil meines Codes würde euch verunsichern.
  Mit Zitat antworten Zitat
64Jabor

Registriert seit: 9. Jan 2008
158 Beiträge
 
Delphi 7 Personal
 
#12

Re: Programmfokus setzen per Process-ID

  Alt 25. Jan 2009, 11:29
Nicht ganz 8)
Ich habe mir einen Browser gemacht, der ein externe Downloadtool nutzt und dieses bedienen soll.
Das problem ist halt dass er mehrmals gestartet werden kann, das kriege ich unterbunden.

Nur wenn ich einen Knopf in meinem Browser drücke, da kann ich nie im Leben schnell genug reagieren und ins Download-Programm wechseln um meine automatisierten Vorgänge dort ablaufen zu lassen...
Also "muss" es mein Programm selbst machen.

Ich habe jetzt folgendes gefunden:

Delphi-Quellcode:
type
  PEnumInfo = ^TEnumInfo;
  TEnumInfo = record ProcessID: DWORD; HWND: THandle; end;
Delphi-Quellcode:
function EnumWindowsProc(Wnd: DWORD; var EI: TEnumInfo): Bool; stdcall;
    var
      PID: DWORD;
    begin
      GetWindowThreadProcessID(Wnd, @PID);
      Result := (PID <> EI.ProcessID) or (not IsWindowVisible(WND)) or (not IsWindowEnabled(WND));
      if not Result then EI.HWND := WND;
    end;

function FindMainWindow(PID: DWORD): DWORD;
    var
      EI: TEnumInfo;
    begin
      EI.ProcessID := PID;
      EI.HWND := 0;
      EnumWindows(@EnumWindowsProc, Integer(@EI));
      Result := EI.HWND;
    end;
Nun möchte ich per

SetForegroundWindow(FindMainWindow(DWORD(ProcID))); das Programm in den Vordergrund holen, die ProcID vom Typ PCardinal habe
ich vorher der oben verklinkten Funktion von Luckie übergeben, aber es passiert nichts...
Könnte das an meinem 64-BIT OS liegen O.o
Sebastian
Unsren Clan im volle Lauf, hält weder Ochs noch Esl auf ^^
  Mit Zitat antworten Zitat
Antwort Antwort
Seite 2 von 2     12   


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 18:16 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