Avatar billede stephanryer Nybegynder
14. december 2008 - 13:47 Der er 2 kommentarer og
1 løsning

Simulering af keyboard events

Som en del af et program, jeg er ved at lave, har jeg lavet en simulering af key presses. En klient forbinder til en host og denne key presses sendes så til hosten, hvor de simuleres på vedkommendes maskine.

Problemet er, at dette kun virker, når hosten er ude i windows. Når man er inde i et spil som fx Death Rally (Dos spil), Dos Box eller spiller et spil i en Amiga Emulator, så virker simuleringen af keyboard events ikke.

Jeg benytter keybd_event(...) som jeg importerer fra user32.dll

Den klasse jeg har lavet til at håndtere denne simulering er således ud:

namespace Tools
{
public class KeyboardSimulator
{
  [DllImport("user32.dll")]
  public static extern void keybd_event(byte bVk, byte bScan, long dwFlags, long dwExtraInfo);
  public const short KEYEVENTF_EXTENDEDKEY = 0x0001;
  public const short KEYEVENTF_KEYUP = 0x0002;

  public void KeyDown(byte KCC)
  {
  keybd_event(KCC, 0, 0, 0);
  }
  public void KeyUp(byte KCC)
  {
  keybd_event(KCC, 0, KEYEVENTF_KEYUP, 0);
  }
}
}
Avatar billede n1ghtmr Nybegynder
18. december 2008 - 14:25 #1
Brug SendInput i stedet: http://msdn.microsoft.com/en-us/library/ms646310.aspx - Jeg har selv oplevet problemer med keydb_event og applikationer der kører i fullscreen.

Mvh.
Morten
Avatar billede stephanryer Nybegynder
18. december 2008 - 14:56 #2
Efter havd jeg kan forstå, så udfører sendInput et helt tastetryk. Jeg har brug for at kunne dfinere key down og key up uafhængigt.
Avatar billede stephanryer Nybegynder
07. november 2010 - 13:42 #3
Lukker tråden.
Avatar billede Ny bruger Nybegynder

Din løsning...

Tilladte BB-code-tags: [b]fed[/b] [i]kursiv[/i] [u]understreget[/u] Web- og emailadresser omdannes automatisk til links. Der sættes "nofollow" på alle links.

Loading billede Opret Preview
Kategori
IT-kurser om Microsoft 365, sikkerhed, personlig vækst, udvikling, digital markedsføring, grafisk design, SAP og forretningsanalyse.

Log ind eller opret profil

Hov!

For at kunne deltage på Computerworld Eksperten skal du være logget ind.

Det er heldigvis nemt at oprette en bruger: Det tager to minutter og du kan vælge at bruge enten e-mail, Facebook eller Google som login.

Du kan også logge ind via nedenstående tjenester