Deutsch
Forum

Systemfocus

 

Timotheus
Hallo,

Ich habe eine Frage. Ist es möglich irgendwie den Systemfocus zu ermitteln? Der auf dem Profanfenster ist ja möglich, aber geht das auch auf anderen Fenstern?

Timo
 
12.06.2005  
 



Hallo Timo...

Wozu benötigst du den Focus? Vielleicht gibt es eine bessere Lösung..,.
 
12.06.2005  
 



Hallo Timo...

Hab mal grad was zusammengeschrieben:
KompilierenMarkierenSeparieren
DEF @AttachThreadInput(3) !"USER32","AttachThreadInput"
DEF @GetWindowThreadProcessId(2) !"USER32","GetWindowThreadProcessId"
DEF @APIGetFocus(0) !"user32","GetFocus"
DEF @GetAsyncKeyState(1) !"user32","GetAsyncKeyState"
Windowstyle 31
Windowtitle "Focus auf Fremdfenster"
Window 0,0-640,80
Declare Merker&,Thread1&,Thread2&,PR_ID1&,PR_ID2&,ControlHandle&
LET THREAD1&=@GetWindowThreadProcessId(%HWND,@ADDR(PR_ID1&))
@GetAsyncKeyState(1) Reset => Mausklick links

While 0=0

    sleep 10

    IF @GetAsyncKeyState(1)<>0 Wenn Mausklick links

        LET THREAD2&=@GetWindowThreadProcessId(@GetactiveWindow(),@ADDR(PR_ID2&)) ID der Befehlsschleife des Programms, das im Vordergrund läuft, ermitteln

        IF THREAD2&<>THREAD1&

            LET MERKER&=@AttachThreadInput(Thread2&,Thread1&,1) Eingabe an eigenes Programm umleiten
            LET ControlHandle&=@APIGetFocus() Jetzt geht GetFocus!

        endif

        IF MERKER&

            @AttachThreadInput(Thread2&,Thread1&,0) Umleitung aufheben

        endif

        Drawtext 0,0,@GETTEXT$(ControlHandle&)+@space$(255)
        Drawtext 0,30,@STR$(ControlHandle&)+"  "+@STR$(@APIGetFocus())+@space$(255)

    endif

wend


Nochmals: Was hast du genau vor? Vielleicht gibts was besseres?
 
12.06.2005  
 




Frank
Abbing
Hi,

und mal in aller Kürze: Du kannst die API GetFocus() verwenden...
 
12.06.2005  
 



Hallo Frank...
[quote:899866a8ff=Frank Abbing]Hi,

und mal in aller Kürze: Du kannst die API GetFocus() verwenden...[/quote:899866a8ff]
Schön wärs. Aus der WIN32.HLP:
The GetFocus function retrieves the handle of the keyboard focus window associated with the thread that called the function.

Mal ausprobiert, ob das wirklich immer klappt? Beim mir (Windows98) scheinbar mit der API GetFocus alleine nicht...
 
12.06.2005  
 




Timotheus
Ja, klappt!!!
Genau das was ich wollte!

Timo
 
13.06.2005  
 



Hallo Timo...

Nochmals ich: Wozu brauchst du das Handle genau - vielleicht gehts anders auch...
 
13.06.2005  
 




Timotheus
Ich denke nicht dass es anders geht. Ich möchte nähmlich in einem bestimmten Fenster ein bestimmtes Fensterobjekt auslesen. Da sich das Fenster nicht ändert kann ich auf das Objeft den Fokus legen, und erhalte das Handle. Den kann ich dann als Konstante in eine Variable eintragen, und schon kann ich dieses Objekt auslesen.
Aber ich hätte noch eine Frage. Nämlich zu den Eingaben mit der Tastatur. In der API-Bibliothek gibt es dazu auch schon etwas ähnliches. Diese gibt aber nur auf die Frage antwort, ob seit dem letzten Aufruf der Funktion eine bestimmte Taste gedrückt wurde. Wenn ich jetzt aber die Taste selbst herausfinden möchte geht das nicht ohne weiteres, weil GetAsyncKeyState() nach dem nächsten Aufruf das gedrückte gleich wieder löscht, und ich sonach nicht einmal die ganze Tastatur abfragen könnte. Gibt es eine Möglichkeit die den direkten Wert der gedrückten Taste zurückgibt?

Timo
 
14.06.2005  
 



Hallo Timo...

Ich kann mir schon vorstellen, was du möchtest .
Frank Abbing hat mal einen sehr guten Keylogger programmiert - mit Hook-DLL. Vielleicht hat er noch eine Idee.
 
14.06.2005  
 



Hallo Timo,
wenn es Dir nichts ausmacht eine extra DLL einzusetzen, kann ich Dir die AutoItX.dll empfehlen. Die erlaubt vollen Zugriff auf fremde Fenster, auch auf die einzelnen Controls. Setze ich gerne ein, nimmt einem nee Menge an API-Proggerei ab. Diese Freeware DLL findest Du unter: [...] 
Die Doku ist zwar english, aber mit dem DLL-Importer usw. sollte man klarkommen.
 
14.06.2005  
 




Timotheus
Ausmachen tut mir das nichts, aber könntest du mir eventuell den Namen der Funktion geben? Das einzige was ich bei Keyboardkontrolle fand, waren Befehle zum Eingeben in bestimmte Objekte.

Timo
 
17.06.2005  
 



Ich bezog mich ja eigentlich auf das mit den Handles (Focus) usw von Fremdfenstern. Das mit Keylogging hab ich glatt übersehen.
 
17.06.2005  
 



Antworten


Thementitel, max. 100 Zeichen.
 

Systemprofile:

Kein Systemprofil angelegt. [anlegen]

XProfan:

 Beitrag  Schrift  Smilies  ▼ 

Bitte anmelden um einen Beitrag zu verfassen.
 

Themenoptionen

4.639 Betrachtungen

Unbenanntvor 0 min.
Ernst23.03.2014
funkheld27.02.2013
Unbenannt26.05.2012
Stephan Sonneborn04.03.2012
Mehr...

Themeninformationen

Dieses Thema hat 3 Teilnehmer:

unbekannt (7x)
Timotheus (4x)
Frank Abbing (1x)


Admins  |  AGB  |  Anwendungen  |  Autoren  |  Chat  |  Datenschutz  |  Download  |  Eingangshalle  |  Hilfe  |  Händlerportal  |  Impressum  |  Mart  |  Schnittstellen  |  SDK  |  Services  |  Spiele  |  Suche  |  Support

Ein Projekt aller XProfaner, die es gibt!


Mein XProfan
Private Nachrichten
Eigenes Ablageforum
Themen-Merkliste
Eigene Beiträge
Eigene Themen
Zwischenablage
Abmelden
 Deutsch English Français Español Italia
Übersetzungen

Datenschutz


Wir verwenden Cookies nur als Session-Cookies wegen der technischen Notwendigkeit und bei uns gibt es keine Cookies von Drittanbietern.

Wenn du hier auf unsere Webseite klickst oder navigierst, stimmst du unserer Erfassung von Informationen in unseren Cookies auf XProfan.Net zu.

Weitere Informationen zu unseren Cookies und dazu, wie du die Kontrolle darüber behältst, findest du in unserer nachfolgenden Datenschutzerklärung.


einverstandenDatenschutzerklärung
Ich möchte keinen Cookie