[VB] Simulatie Keyboard

Pagina: 1
Acties:

  • Maksietje
  • Registratie: Oktober 2002
  • Laatst online: 05-03-2025

Maksietje

Keer je om en kijk vooruit

Topicstarter
Met visual basic 2005 probeer ik een dos programma te bedienen.
Zelf keurig netjes een stuk software geschreven met sendkey.
Werkt het niet.

In de DOS Prompt werkt hij perfect, echter in het programma lijken alle
toetsen wel een ESC functie te hebben.

Weet iemand of er andere functies zijn waarmee je keystrokes kunt simuleren,
en/of weet iemand of het probleem kan liggen aan het feit dat dos met
bytes werkt en vb met integers.

De faq & search leverde geen antwoorden op, hopelijk dit wel.

Life is all about priorities!!


Verwijderd

Met windows API functie WriteConsoleInput kun je elke toetsaanslag naar een Dos Console verzenden.

  • MrSleeves
  • Registratie: Februari 2004
  • Laatst online: 10-04 19:23

MrSleeves

You'll thank me later.

Ik heb de volgende functie gebruikt:

code:
1
2
3
4
Private Declare Function SendInput Lib "user32.dll" ( _
    ByVal nInputs As Integer, _
    ByVal pInputs() As GENERALINPUT, _
    ByVal cbSize As Integer) As Integer


De rest van de code is best een berg (heb het ergens gevonden); denk wel dat je die moet kunnen vinden.

Zorg er wel voor dat de control (o.i.d.) wel focus heeft; bij mij was dit het geval met een on-screen keyboard. Die krijgt dan steeds focus (als je een knop indrukt), maar je wilt natuurlijk dat de toets gestuurd wordt naar het control dat daarvoor focus had.

Gevonden:
http://msdn.microsoft.com...utFunctions/SendInput.asp
Oja, en deze natuurlijk:
http://msdn.microsoft.com...Input/VirtualKeyCodes.asp
De virtual-key codes lijken erg op de Enum System.Windows.Forms.Keys (kan wel gebruikt worden geloof ik.

[ Voor 32% gewijzigd door MrSleeves op 28-09-2004 11:03 ]

30Drie Web Design & IT Consultancy | Raven Consultancy Services


  • Maksietje
  • Registratie: Oktober 2002
  • Laatst online: 05-03-2025

Maksietje

Keer je om en kijk vooruit

Topicstarter
Juist, ben nu dus even bezig om te kijken hoe ik die moet invoegen.
Met een api heb ik nog nooit eerder gewerkt.
Ook van de sendinput had ik nog nooit eerder gehoord.

Toevallig één van jullie zin om meer code neer te zetten, zodat ik in ieder geval iets heb wat direct werkt. Kan ik daarna uitzoeken hoe het precies werkt.
Want om eerlijk te zijn, ik snap er nu nog geen bal van.

Life is all about priorities!!


  • .oisyn
  • Registratie: September 2000
  • Laatst online: 22-05 23:07

.oisyn

Moderator Devschuur®

Demotivational Speaker

Maksietje schreef op 28 september 2004 @ 14:59:
Toevallig één van jullie zin om meer code neer te zetten, zodat ik in ieder geval iets heb wat direct werkt.
Nee, in P&W schrijven we onze code zelf. Scriptrequests zijn niet toegestaan. Je kunt de documentatie van SendInput toch gewoon opzoeken in de MSDN?

Give a man a game and he'll have fun for a day. Teach a man to make games and he'll never have fun again.


  • Maksietje
  • Registratie: Oktober 2002
  • Laatst online: 05-03-2025

Maksietje

Keer je om en kijk vooruit

Topicstarter
Ok, dat waardeer ik. In dat geval ga ik het zaakje op MSDN nog maar eens
goed bestuderen en kijken of ik het deze keer wel begrijp.
In de tussentijd zijn suggesties natuurlijk wel welkom ;)

Life is all about priorities!!


  • Kuhlie
  • Registratie: December 2002
  • Niet online
Misschien heb je wat aan:

[rml][ VB6/API] Toetsenbord emuleren[/rml]

  • MrSleeves
  • Registratie: Februari 2004
  • Laatst online: 10-04 19:23

MrSleeves

You'll thank me later.

Op http://msdn.microsoft.com...Functions/keybd_event.asp staat wel:

Windows NT/2000/XP:This function has been superseded. Use SendInput instead.

30Drie Web Design & IT Consultancy | Raven Consultancy Services


Verwijderd

http://www.mentalis.org/apilist/keyb_event.shtml misschien dat je hier wat aan hebt :)

  • Maksietje
  • Registratie: Oktober 2002
  • Laatst online: 05-03-2025

Maksietje

Keer je om en kijk vooruit

Topicstarter
Het Keyb_event en de SendInput heb ik aan de praat gekregen.
In de dos command prompt doen ze het allebei perfect.
Thnx Chief.net, Lighteye en Kuhlie.

Echter in het dos programma waar ik de besturing voor maak.
Heb ik geen resultaat. Vreemd, ik vind van wel.

Op dit moment ben ik bezig met de WriteConsoleInput.
Maar ik heb geen idee hoe ik deze moet gebruiken.

Dus als iemand een andere oplossing weet.
Dan houd ik mij aanbevolen.

Tot nader bericht, nog altijd geen oplossing

Life is all about priorities!!


  • MrSleeves
  • Registratie: Februari 2004
  • Laatst online: 10-04 19:23

MrSleeves

You'll thank me later.

Maksietje schreef op 30 september 2004 @ 12:31:
Het Keyb_event en de SendInput heb ik aan de praat gekregen.
In de dos command prompt doen ze het allebei perfect.
Thnx Chief.net, Lighteye en Kuhlie.

Echter in het dos programma waar ik de besturing voor maak.
Heb ik geen resultaat. Vreemd, ik vind van wel.

[...]
Het enige wat ik kan verzinnen is dat het een Focus-probleem is. Het proces/control/whatever dat op het moment dat de SendIput wordt aangeroepen Focus heeft, krijgt de Input "toegewezen", zeg maar.

Ik had het probleem met een OS-keyboard. Die werkte ook niet, dacht ik. Maar elke keer dat er een knop werd ingedrukt, verloor (bijv.) Notepad zijn focus (mijn OS-keyboard kreeg namelijk focus) en werd de toestdruk naar de OS-keyboard-applicatie gestuurd (en werd er niets mee gedaan).

Dat probleem is ook nog niet mooi opgelost, maargoed (elke keer als mijn OS-keyboard Focus krijgt, moet ik zorgen dat ie het weer verliest, wat zorgt voor een "knipperende" titlebar tijden het typen).. dat terzijde.

Je moet dus zorgen dat hetgeen waar de toetsdruk naartoe gestuurd wordt, focus heeft.

30Drie Web Design & IT Consultancy | Raven Consultancy Services


  • sorted.bits
  • Registratie: Januari 2000
  • Laatst online: 13:34
Chief.NET schreef op 30 september 2004 @ 12:49:
[...]


Het enige wat ik kan verzinnen is dat het een Focus-probleem is. Het proces/control/whatever dat op het moment dat de SendIput wordt aangeroepen Focus heeft, krijgt de Input "toegewezen", zeg maar.

Ik had het probleem met een OS-keyboard. Die werkte ook niet, dacht ik. Maar elke keer dat er een knop werd ingedrukt, verloor (bijv.) Notepad zijn focus (mijn OS-keyboard kreeg namelijk focus) en werd de toestdruk naar de OS-keyboard-applicatie gestuurd (en werd er niets mee gedaan).

Dat probleem is ook nog niet mooi opgelost, maargoed (elke keer als mijn OS-keyboard Focus krijgt, moet ik zorgen dat ie het weer verliest, wat zorgt voor een "knipperende" titlebar tijden het typen).. dat terzijde.

Je moet dus zorgen dat hetgeen waar de toetsdruk naartoe gestuurd wordt, focus heeft.
Hij geeft aan dat het lijkt alsof er een ESC toets word gestuurd naar zijn applicatie, dus de focus is het punt niet lijkt het.

Verwijderd

ff offtopic

VB2005 ?
d8 dat 2003 .net versie nieuwste was ??

  • MrSleeves
  • Registratie: Februari 2004
  • Laatst online: 10-04 19:23

MrSleeves

You'll thank me later.

Verwijderd schreef op 30 september 2004 @ 13:22:
ff offtopic

VB2005 ?
d8 dat 2003 .net versie nieuwste was ??
Er zijn mensen, waaronder ik ook val, die gezegend (of niet :Y) ) zijn met een MSDN abonnement.. Die hebben al de beta...

http://lab.msdn.microsoft.com/vs2005/

Ik weet niet of het zonder abo ook kan; ik kreeg 'm in ieder geval al op DVD.

30Drie Web Design & IT Consultancy | Raven Consultancy Services

Pagina: 1