Windows input?

WorldRacer

Erfahrenes Mitglied
Hi,

habe das Problem, dass der Namespace System::Windows::Input unbekannt ist. Im namepsace System::Windows gibt es laut intellisense nur Forms. Wie kann ich das Problem beheben? brauche eine alternativlösung zu getAsyncKeyState, das globale tastaturabfragen macht. Habe Net Framework 3.5SP1 drauf.
 
Hiho,

es ist scheinbar so, dass diese Klasse in der Express Edition nicht verfügbar ist. Man hat nun zwei Möglichkeiten:

  • Man arbeitet mit Visual Basic, dass eine ähnliche Klasse unterstützt..
  • ...oder man arbeitet mit der Windows API. Wie ich nun herausgefunden habe, gibt es auch unter .NET eine möglichkeit diese funktionen zu importieren, ohne die windows.h zu includen:
Code:
#using <mscorlib.dll>
namespace SysWin32  //man lege über dem Namepsace des Programms einen weiteren namespace an...
{
	[DllImport("user32.dll", EntryPoint = "GetAsyncKeyState", CharSet = System::Runtime::InteropServices::CharSet::Unicode)] //user32.dll importieren
   short GetAsyncKeyState(int vKey);  //gewünschte Funktion definieren...
}

Danach mit:
Code:
 SysWin32::GetAsyncKeyState(0xA4);
aufrufen. Alle Defines müssen natürlich und leider alle nachgeschaut und in zahlenwerten angegeben werden. Außer, man definiert sie wieder. Also:

Code:
#define VK_LMENU 0xA4
#using <mscorlib.dll>
using namespace System::Runtime::InteropServices; 
// for DllImportAttribute

namespace SysWin32
{
       [DllImport("user32.dll", EntryPoint = "GetAsyncKeyState", CharSet = System::Runtime::InteropServices::CharSet::Unicode)]
       short GetAsyncKeyState(int vKey);
}

int main( )
{
   SysWin32::GetAsyncKeyState(VK_LMENU);
}

Hoffe, das hilft euch weiter
 
Hi

Hast du die Assembly in deinem Projekt auch referenziert?
Diese Assembly gehört zu WPF. Falls du eine WinForms Anwendung schreibst, ist diese Assembly für gewöhnlich nicht referenziert
 
Ich mein' ich hab das Problem gelöst. Trotzdem bin ich von Natur aus neugiereig xD

Wie kann man denn Assemblies referenzieren? Dumme Frage, aber ernst gemeint ;)
 
Ich nehme an du benutzt VisualStudio:

Rechtsklick auf "Referenzen" in der Projektmappe, dort "Hinzufügen" auswählen, und dann im Dialog welcher nach einiger Zeit erscheinen wird ein Assembly auswählen.
 

Neue Beiträge

Zurück