[delphi] toetsen echt afvangen

Pagina: 1
Acties:
  • 121 views sinds 30-01-2008
  • Reageer

  • Skinkie
  • Registratie: Juni 2001
  • Laatst online: 09-06-2020

Skinkie

Op naar de 500

Topicstarter
hoe kan je in delphi toetsen echt afvangen... dus letterlijk wat er uit de ps/2 poort binnen komt.

Deze code veranderen en het dan uit de ps/2 poort laten komen. Tussen door mag dus nix op het beeldscherm verschijnen.

Zelfde voor de muis.

Alvast Bedankt,
Stefan

Ik heb wat gevonden voor het keyboard, kan iemand me ook nog ff vertellen hoe ik het keyboard ook nix meer aan windows laat zeggen zoals ctrl+esc=windowstoets

Steun Elkaar, Kopieer Nederlands Waar!


  • jopiek
  • Registratie: September 2000
  • Laatst online: 21-08 19:56

jopiek

Tja... 'ns ff denken.

het ligt er gewoon aan welk os je gebruikt, maar op 2000/XP zul je al vrij snel aan een driver moeten gaan denken die je tussen de toetsenborddriver en het os zet...

Cogito Ergo Credo


  • jelmervos
  • Registratie: Oktober 2000
  • Niet online

jelmervos

Simple user

Misschien kun je iets doen met de geheugenadressen van die apparaten. Maar ik denk dat Windows NT dit niet cool vindt. Dan moet het idd met een driver zoals hierboven wordt gezegd.

"The shell stopped unexpectedly and Explorer.exe was restarted."


  • elnino
  • Registratie: Augustus 2001
  • Laatst online: 03-09 05:13
Misschien is er iets mogelijk met DirectX :?

  • yodax
  • Registratie: Januari 2000
  • Laatst online: 28-04 08:47
Dat hoeft niet perse, ICQ vangt ook shortcuts af die niet meer naar het OS gezonden woren (CTRL + SHIFT + I delphi indent block code)

Device drivers etc zijn dus niet nodig, je moet een window hook procedure gebruiken. Dit is redelijk ingewikkeld. Windows geeft zijn keyboard strokes door dmv messages, je zal je zelf moet registeren in deze message loop.

Hier voor zal je een globalhook procedure moeten gebruiken. Ik zal een paar links invoegen om je op weg te helpen.

De truuk is echter dat je in je hook function KeyboardProc de return value (als hij evalueert aan wat jij niet wil door zenden) niet doorgeeft aan de CallNextHookEx function. Op deze manier haal je de keyboard aanslag uit de messageloop.

Het is zo dus ook mogelijk om een keylogger te bouwen >:)

Links:

1. An introduction to hook procedures
2. SetWindowsHookEx function
3. KeyboardProc hook procedure

PS:

Het zelfde geld voor de muis, als je de MSDN leest kom je er vanzelf achter hoe dat werkt. Maar data uit de PS/2 poorten lezen is niet handing, niet nodig, en onnodig moeilijk.

  • jelmervos
  • Registratie: Oktober 2000
  • Niet online

jelmervos

Simple user

Volgens mij maakt ICQ gewoon gebruikt van HOTKEYS in Windows. Bepaalde toetsencombinaties die met ALT, CTRL, SHIFT worden gebruikt. Deze kun je ook aan een shortcut op je desktop of in je Start Menu toekennen.

"The shell stopped unexpectedly and Explorer.exe was restarted."


  • yodax
  • Registratie: Januari 2000
  • Laatst online: 28-04 08:47
Zou kunnen. Maar mijn manier werkt iig. ;)

  • jelmervos
  • Registratie: Oktober 2000
  • Niet online

jelmervos

Simple user

Op zondag 14 oktober 2001 11:49 schreef yodax het volgende:
Zou kunnen. Maar mijn manier werkt iig. ;)
Dat denk ik ook. Had je bij die manier niet een extra DLL nodig voor een callback functie ofzo?

"The shell stopped unexpectedly and Explorer.exe was restarted."


  • yodax
  • Registratie: Januari 2000
  • Laatst online: 28-04 08:47
Dat klopt, dat staat uitgelegd in de eerste link. Dit vind ik nu echt leuk proggen, en leuk aan delphi. Als het niet in de VCL zit kan je het toch gewoon maken.

  • jopiek
  • Registratie: September 2000
  • Laatst online: 21-08 19:56

jopiek

Tja... 'ns ff denken.

Op zondag 14 oktober 2001 11:43 schreef yodax het volgende:
Dat hoeft niet perse, ICQ vangt ook shortcuts af die niet meer naar het OS gezonden woren (CTRL + SHIFT + I delphi indent block code)

Device drivers etc zijn dus niet nodig, je moet een window hook procedure gebruiken. Dit is redelijk ingewikkeld. Windows geeft zijn keyboard strokes door dmv messages, je zal je zelf moet registeren in deze message loop.

Hier voor zal je een globalhook procedure moeten gebruiken. Ik zal een paar links invoegen om je op weg te helpen.

De truuk is echter dat je in je hook function KeyboardProc de return value (als hij evalueert aan wat jij niet wil door zenden) niet doorgeeft aan de CallNextHookEx function. Op deze manier haal je de keyboard aanslag uit de messageloop.

Het is zo dus ook mogelijk om een keylogger te bouwen >:)

Links:

1. An introduction to hook procedures
2. SetWindowsHookEx function
3. KeyboardProc hook procedure

PS:

Het zelfde geld voor de muis, als je de MSDN leest kom je er vanzelf achter hoe dat werkt. Maar data uit de PS/2 poorten lezen is niet handing, niet nodig, en onnodig moeilijk.
dit is inderdaad de manier, daar had ik ff niet aan gedacht... zo werken de Delphi componenten ook!!!
Wellicht is wat info van Ray Konopka ook handig, ik kan eventueel het pdf-je van zijn boek Developing Delphi 3 cutom Components op m'n server zetten (boek wordt niet meer gedrukt).

Cogito Ergo Credo


  • yodax
  • Registratie: Januari 2000
  • Laatst online: 28-04 08:47
Ik heb Ray Konopka nog gesproken op de BorCon 2001. (EDIT: begin nu te twijvelen) En nog meer van die gasten zoals Marco Cantu en Carey Jensen (die had ik al gesproken op de DDS).

Is wel cool sta je gewoon te praten met al die auteurs. (Had Carey nog een paar keer verbeterd tijdens zijn voordracht >:) )

  • Skinkie
  • Registratie: Juni 2001
  • Laatst online: 09-06-2020

Skinkie

Op naar de 500

Topicstarter
Ik ben dus bezig met een keyboardsharing progie... maak dus gebruik van een dlltje (Hook) (of hardware invoer (60h)) denk dat ik voor het dlltje ga. De andere computer waar het wordt ontvangen gaat moeilijk lopen doen. Compleet andere toetsen weergeven dan waarom gevraagd is end. Maar ik ga er zelf nog ff naar kijken. Iig bedankt.

Steun Elkaar, Kopieer Nederlands Waar!


  • Skinkie
  • Registratie: Juni 2001
  • Laatst online: 09-06-2020

Skinkie

Op naar de 500

Topicstarter
Iemand enig idee hoe dit gaat werken?

int GetKeyNameText(

LONG lParam,
LPTSTR lpString,
int nSize
);

lParam

Specifies the second parameter of the keyboard message (such as WM_KEYDOWN) to be processed. The function interprets the following portions of lParam:

BitsMeaning
16-23Scan code.
24Extended-key flag. Distinguishes some keys on an enhanced keyboard.
25"Don't care" bit. The application calling this function sets this bit to indicate that the function should not distinguish between left and right CTRL and SHIFT keys, for example.

Hoe kan ik met shr en shl uit lParam een 8 bits grootte scancode halen? Zo me HEEL erg helpen.

la maar heb ik ook zelf al wat voor gevonden... trouwens als iemand wil zien hoe ie er uitziet:

http://www.stefan.nl/

Steun Elkaar, Kopieer Nederlands Waar!

Pagina: 1