Delphi-PRAXiS

Delphi-PRAXiS (https://www.delphipraxis.net/forum.php)
-   Klatsch und Tratsch (https://www.delphipraxis.net/34-klatsch-und-tratsch/)
-   -   Software gesucht, die Fokus-Klau findet (https://www.delphipraxis.net/178763-software-gesucht-die-fokus-klau-findet.html)

Helmi 25. Jan 2014 18:47

Software gesucht, die Fokus-Klau findet
 
Hallo,

kennt jemand eine Software, die rausfinden kann, wer gerade den Fokus hat?
Mir passiert es manchmal, dass ein Fenster in dem ich gerade bin, den Fokus verliert
und kurz darauf wieder erhält.
Also irgendjemand ist der Fokus-Klauer - und den würd ich gerne finden

hathor 25. Jan 2014 21:28

AW: Software gesucht, die Fokus-Klau findet
 
Vielleicht so:

Delphi-Quellcode:
unit Unit1;

interface

uses
  Windows, Messages, SysUtils, Variants, Classes, Graphics, Controls, Forms,
  Dialogs, StdCtrls;

type
  TForm1 = class(TForm)
    ListBox1: TListBox;
    Button1: TButton;
    ListBox2: TListBox;
    Timer1: TTimer;

    procedure FormActivate(Sender: TObject);
  private
    { Private declarations }
  public
    { Public declarations }
  end;

var
  Form1: TForm1;

implementation

{$R *.dfm}


function EnumWindowsProc(wHandle: HWND; lb: TListBox): Bool; stdcall; export;
var
  Title, ClassName: array[0..255] of char;
begin
  Result := True;
  GetWindowText(wHandle, Title, 255);
  GetClassName(wHandle, ClassName, 255);
  if IsWindowVisible(wHandle) then
     lb.Items.Add(IntToStr(lb.Count +1)+' : '+ String(Title) + '-' + string(ClassName));
if GetForegroundWindow = wHandle then
begin
//  ShowMessage(String(Title) + '-' + string(ClassName));
  Form1.ListBox2.Items.Add(IntToStr(lb.Count +1)+' : '+ String(Title) + '-' + string(ClassName));
end;
end;

procedure TForm1.FormActivate(Sender: TObject);
begin
Listbox1.Clear;
Listbox2.Clear;
EnumWindows(@EnumWindowsProc, Integer(Listbox1));
end;

procedure TForm1.Timer1Timer(Sender: TObject);
begin
Listbox1.Clear;
EnumWindows(@EnumWindowsProc, Integer(Listbox1));
end;

Bernhard Geyer 25. Jan 2014 21:41

AW: Software gesucht, die Fokus-Klau findet
 
Wie wäre es mit dem MS Spy + Filterung nach entsprechende WM-Messages die dafür verantwortlich sein könnten.

Helmi 26. Jan 2014 08:15

AW: Software gesucht, die Fokus-Klau findet
 
Hallo,

ich vergaß zu erwähnen, dass es sich nicht um mein Programm handelt
sondern generell im Windows

himitsu 26. Jan 2014 14:03

AW: Software gesucht, die Fokus-Klau findet
 
Alle Vorschläge gingen bisher global auf das ganzze Windows.

Wenn es um den Fokus im eigenen Windows geht, dann könnte man sich an Application.OnMessage hängen, bzw. besser doch an TApplicationEvents.OnMessage und reagiert dort nur auf Messages im eigenen Programm.

Oder, wie auch schon erwähnt:
- über das genannte Programm alle Messages mitloggen, wobei ich dachte, daß es da auch noch ein Programm von Sysinternals gäbe
- oder eben alle x Millisekunden schauen welches Fenster aktiv ist
- - über dieses Handle kann man nun an den zugehörigen Process rankommen
- - und man kommt darüber notfalls auch noch, an das Control darin, welches direkt den Fokus besitzt

GetForegroundWindow
GetWindowThreadProcessId
GetWindowText
GetWindowModuleFileName
GetGUIThreadInfo
uvm.

Helmi 26. Jan 2014 15:20

AW: Software gesucht, die Fokus-Klau findet
 
sorry hatte hathors Code falsch interpretiert
schaut gut aus, der Code


Alle Zeitangaben in WEZ +1. Es ist jetzt 05:29 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