hockey500 Skrevet 2. desember 2008 Rapporter Del Skrevet 2. desember 2008 Jeg lager et program som er avhengig av å kunne lese mange tastetrykk samtidig (bruker KeyDown og KeyUp eventene), men den PC-en jeg lager dette på registrerer ikke flere enn to tastetrykk samtidig. Jeg har også prøvd med GetAsyncKeyState(), med akkurat samme resultat. Er det noe jeg kan gjøre med dette, eller må jeg bare godta at det er slik? Lenke til kommentar
ze5400 Skrevet 2. desember 2008 Rapporter Del Skrevet 2. desember 2008 http://msdn.microsoft.com/en-us/library/ms644959(VS.85).aspx Lenke til kommentar
hockey500 Skrevet 2. desember 2008 Forfatter Rapporter Del Skrevet 2. desember 2008 (endret) Det der ser lovende ut, skal ta en titt på det når jeg får tid. Takk! EDIT: det finnes ikke en C#-løsning da? Endret 2. desember 2008 av hockey500 Lenke til kommentar
Glenn F. Henriksen Skrevet 2. desember 2008 Rapporter Del Skrevet 2. desember 2008 Opptil flere: http://www.google.no/search?q=c%23+keyboar...lient=firefox-a Lenke til kommentar
ze5400 Skrevet 2. desember 2008 Rapporter Del Skrevet 2. desember 2008 EDIT: det finnes ikke en C#-løsning da? Er jo ikke noe problem å bruke WIN32 fra C# da. Lenke til kommentar
hockey500 Skrevet 2. desember 2008 Forfatter Rapporter Del Skrevet 2. desember 2008 La meg omformulere: en måte som ikke involverer P/Invoke. Oss som ikke har en lang bakgrunn fra C++ er muligens mer komfortable med ren, enkel C#. Men greit, da konkluderer jeg med at svaret er "nei". Lenke til kommentar
Ndzy Skrevet 2. desember 2008 Rapporter Del Skrevet 2. desember 2008 (endret) La meg omformulere: en måte som ikke involverer P/Invoke. Oss som ikke har en lang bakgrunn fra C++ er muligens mer komfortable med ren, enkel C#. Men greit, da konkluderer jeg med at svaret er "nei". Du kan bruke managed Directx / directinput, dette eksempelet leste av 10k ganger i sekundet her. Prøvde å skrive det så rent og enkelt som mulig, om du får loaderlock exception skru det av med ctrl-alt-e -> Managed Debugging Assistants og kryss av Loaderlock. using System; using System.Text; using System.Windows.Forms; using System.Threading; //Husk å legg til dll filen i References også, følger med i Directx SDK using Microsoft.DirectX.DirectInput; namespace dxkeysimple { public partial class mainform : Form { Device keyboard; Thread t; public mainform() { InitializeComponent(); //Skaff keyboard enheten keyboard = new Device(SystemGuid.Keyboard); keyboard.SetDataFormat(DeviceDataFormat.Keyboard); //La den kjøre som background og nonexclusive //så den ikke bare leser taster når programmet har focus keyboard.SetCooperativeLevel(this, CooperativeLevelFlags.Background | CooperativeLevelFlags.NonExclusive); keyboard.Acquire(); t = new Thread(Proccesskeys); t.Start(); } void Proccesskeys() { while (true) { Key[] keys = keyboard.GetPressedKeys(); //For eksempel les det av til en richtextbox richTextBox1.Invoke((System.Action)delegate { foreach(Key k in keys) richTextBox1.Text += k.ToString(); }); } } private void mainform_FormClosing(object sender, FormClosingEventArgs e) { t.Abort(); } } } Husk å legg til en richTextBox1 om du kopierer hele. Endret 2. desember 2008 av Ndzy Lenke til kommentar
hockey500 Skrevet 2. desember 2008 Forfatter Rapporter Del Skrevet 2. desember 2008 fancy, det var jeg ikke klar over. men dessverre er ikke directx et alternativ i dette tilfellet, så det får bli win32-løsningen. Lenke til kommentar
hockey500 Skrevet 3. desember 2008 Forfatter Rapporter Del Skrevet 3. desember 2008 oppdatering: det funka ikke, samme begrensning som før. hooks altså Lenke til kommentar
Anbefalte innlegg
Opprett en konto eller logg inn for å kommentere
Du må være et medlem for å kunne skrive en kommentar
Opprett konto
Det er enkelt å melde seg inn for å starte en ny konto!
Start en kontoLogg inn
Har du allerede en konto? Logg inn her.
Logg inn nå