Seite 1 von 1

SetWindowsHookEx_: bestimmte Prg´s ausklammern ?

Verfasst: 08.10.2008 02:34
von sibru
Hallo,

ich hab´ auf Basis von SetWindowsHookEx_() ´n Tastatur-Wandler gebaut,
der ´nem älteren Kunden erlaubt, seine jahrzehntelang gewohnten MsDos-
Tasten ([F8]=drucken {-->[Strg]+[P]}, [F10]=Prg Exit {-->[Alt]+[F4]}...))
auch auf dem "modernen" Windows zu benutzen...
Problematisch wird´s bei Prg´s, die auf den verbogenen Tasten ´ne Funtion
legen: die Taste kommt nicht mehr an... (z.Bsp: [Enter] --> [Tab]: er kann
wie gewohnt die Felder in irgend ´nem Form mit [Enter] durchgehen, jeoch
ist kein Zeilenwechsel mehr möglich z.Bsp. in NotePad...)

Hat jemand ´ne Ahnung, wie ich in SetWindowsHookEx_() an das
ausführende Fenster kommen kann, um´s mit ´ner "dont change in this
Prg´s"-Liste abzugleichen... ?

(via getFocus_() komm´ ich grad´ mal an irgendein Form-Feld, jedoch
nicht an den PrgNamen des Task´s...)

Gruss Siggi

Verfasst: 08.10.2008 13:28
von Deluxe0321
Vll ein paar hilfen:
Fenster im Vordergrund ermitteln.
(HWND=GetForegroundWindow_())

Name des Fensters:

Code: Alles auswählen

HWND = GetForegroundWindow_()
TitleLenght.i=GetWindowTextLength_(HWND)
Title.s = Space(TitleLenght.i)
GetWindowText_(GetForegroundWindow_(),@Title.s,TitleLenght.i);
Debug Title.s

Eingabe der Tastatur schlucken:
http://www.purebasic.fr/english/viewtop ... shookex%2A

Gewünschte eingabe senden:
http://www.purebasic.fr/english/viewtop ... 374#250374

Falls das schlucken nicht klappt, erst ein "backspace" senden um letzte eingabe zu löschen & danach die gewünschte Taste mit Sendkey senden.

Gruß Marv

Verfasst: 08.10.2008 19:18
von Thorium
Du könntest es auch andersrum machen und nur bestimmte Programme Hooken anstatt bestimmte auszuschließen. Weis jetzt nicht wie sinnvoll das in dem speziellen Fall ist.

Hier im zweiten Post hab ich noch eine andere Möglichkeit für einen Window-Hook beschrieben.

Verfasst: 09.10.2008 12:36
von sibru
jep, das war´s !!!

Danke :allright: