AGB  ·  Datenschutz  ·  Impressum  







Anmelden
Nützliche Links
Registrieren
Zurück Delphi-PRAXiS Programmierung allgemein Programmieren allgemein Anderem Program den Fokus übergeben

Anderem Program den Fokus übergeben

Ein Thema von rinolduz · begonnen am 7. Jul 2018 · letzter Beitrag vom 11. Jul 2018
Antwort Antwort
Seite 2 von 2     12
Benutzerbild von EWeiss
EWeiss

Registriert seit: 16. Okt 2010
5.225 Beiträge
 
Delphi 2010 Architect
 
#11

AW: Anderem Program den Fokus übergeben

  Alt 8. Jul 2018, 04:24
Ohne gewähr..
Nur getippt nicht getestet.

Delphi-Quellcode:
function GetFocusHandle: HWND;
var
  ForegroundHandle: HWND;
  PID: DWord;
  myThreadID: DWord;
begin

  // Meine ThreadID
  myThreadID := GetCurrentThreadId;
  // Hole das Handle vom Top Level Vordergrund Window
  ForegroundHandle := GetForegroundWindow;
  // Process ID vom Vordergrund Window einlesen
  PID := GetWindowThreadProcessId(ForegroundHandle, nil);
  // diesen Thread und den fremden Thread zusammen fügen
  AttachThreadInput(myThreadID, PID, true);
  // Das Focus Handle
  Result := GetFocus;
  // Threads von einander trennen in dem ich beim dritten wert false übergebe
  AttachThreadInput(myThreadID, PID, false);
end;
man könnte das ganze jetzt noch in einem Loop packen..

Delphi-Quellcode:
  doloop := not doloop;
  repeat
    FocusHwnd := GetFocusHandle;
    application.ProcessMessages;
    Label1.Caption := IntToStr(FocusHwnd);
    Sleep(10)
  until doloop = false;
Nun solltest du mit SetFocus(FocusHwnd) den alten Stand wieder zurück setzen können.
Du kannst aber auch eine Procedure erstellen und verwendest dann anstelle von
Result := GetFocus;
SetForegroundWindow(ForegroundHandle);

Es muss sich aber innerhalb der beiden AttachThreadInputs befinden.
Wenn es jetzt fehlschlägt als Beispiel bei Windows Explorer Ordnern dann kannst du das Parent ermitteln um an das Fensterhandle zu kommen.
Denn hier wird der Focus immer auf das DirectUIHWND gesetzt ist zumindest bei Win7 so.

Bin jetzt aber wirklich raus!
Muss an meinem transparenten TabControl weiterarbeiten.

gruss

Geändert von EWeiss ( 8. Jul 2018 um 05:05 Uhr)
  Mit Zitat antworten Zitat
rinolduz

Registriert seit: 7. Jul 2018
2 Beiträge
 
#12

AW: Anderem Program den Fokus übergeben

  Alt 11. Jul 2018, 18:35
Danke ersteinmal für die ganzen Antworten!

Habe es inzwischen mit
Code:
GetWindowThreadProcessId
hinbekommen!
  Mit Zitat antworten Zitat
Themen-Optionen Thema durchsuchen
Thema durchsuchen:

Erweiterte Suche
Ansicht

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 16:24 Uhr.
Powered by vBulletin® Copyright ©2000 - 2018, Jelsoft Enterprises Ltd.
LinkBacks Enabled by vBSEO © 2011, Crawlability, Inc.
Delphi-PRAXiS (c) 2002 - 2018 by Daniel R. Wolf