Laden...

Windowstaste abfangen und "A" senden

Erstellt von spoochie vor 15 Jahren Letzter Beitrag vor 15 Jahren 6.142 Views
S
spoochie Themenstarter:in
155 Beiträge seit 2007
vor 15 Jahren
Windowstaste abfangen und "A" senden

Hallo Leute. Ich hänge jetzt hier shcon längere Zeit an einem Problem und habe auch ncith wirklich eine Lösung.

Ich möchte, wenn die Windowstaste gedrückt wir ein A senden, so dass sich der Arbeitsplatz öffnet. jedoch passiert gar nichts.

Hier ist mein Code.

private static IntPtr callback(int ncode, IntPtr wparam, IntPtr lparam)
        {
            if (ncode >= 0 && wparam == (IntPtr)WM_KEYDOWN)
            {
                vcode = Marshal.ReadInt32(lparam);
                if (vcode == 91)
                {
                    
                    keybd_event((byte)Keys.A, 0,0,0); 
                    keybd_event((byte)Keys.A, 0,0,0); 
                    
                }
       
            }
3.430 Beiträge seit 2007
vor 15 Jahren

Hallo

Ich möchte, wenn die Windowstaste gedrückt wir ein A senden, so dass sich der Arbeitsplatz öffnet. jedoch passiert gar nichts.

Seit wann öffnet sich mit Windowstaste + A der Arbeitsplatz? 🤔

Bei mir tut sich da gar nix.
Aber Windowstaste+E öffnet den Arbeitsplatz.

Gruss
Michael

S
spoochie Themenstarter:in
155 Beiträge seit 2007
vor 15 Jahren

Nicht Windowstaste + A Windowstaste drücken (Menü poppt auf) A drücken (also alleine)
Cursor springt auf A = Arbeitsplatz

MfG spoochie

5.742 Beiträge seit 2007
vor 15 Jahren

Hallo spoochie,

Windowstaste drücken (Menü poppt auf) A drücken (also alleine)
Cursor springt auf A = Arbeitsplatz

ähm nein - unter Vista nicht.

Dieser Ansatz ist also nicht unbedingt der beste, um den Arbeitsplatz zu öffnen.

Unter Vista funktioniert es wenn man unter "Ausführen"

explorer ""

schreibt - vielleicht klappt das auch unter XP

S
spoochie Themenstarter:in
155 Beiträge seit 2007
vor 15 Jahren

Naja das mit Windowstaste war eh nur ein Test. Ich wollte generell auf einen Tastendruck reagieren und dann eine Taste senden. Es funktioniert aber nicht.
Also es geht da rum, das ich ein Tool schreiben will für das Spiel WC3 um Hotkeys auf beliebige Tasten zu legen. Solche Tools gibt es zu genüge, ich wollte es eben nur nachbauen des Lerneffekts wegen.
Nun ist meine Frage, angenommen eine Aktion vom Spiel liegt auf I und ich möchte dies auf A umlegen. Was passiert denn nun, wenn auf A aber schon was ist vom Spiel selber, führt er es damit auch aus oder ist der Druck damit erledigt? Wenn es so ist, dass er die Akltion die auf A liegt auch noch ausführt, wie kann ich das unterbinden?
Ich hoffe ihr versteht wa sich meine
MfG spoochie

S
spoochie Themenstarter:in
155 Beiträge seit 2007
vor 15 Jahren
Windowstaste abfangen

[EDIT=herbivore]Threads zusammengefügt[/EDIT]

Hallo Leute ich bin es nochmal. Irgendwie verzweifel ich hier ein wenig. Wie kann ich denn die Windowstaste abfangen. Ich meine nen Hook installieren kein Problrm auf Druck von Windowstaste auch kein Problem, aber wie fange ich die denn endgültig ab, dass das Startmenü nicht hochpoppt. Bitte um HIlfe, habe shcon überall gesucht aber nix gefunden. Danke.

Gelöschter Account
vor 15 Jahren

wie kommst du dazu einen neuen thread mit der selben frage zu stellen?

S
spoochie Themenstarter:in
155 Beiträge seit 2007
vor 15 Jahren

Hmmm tut mir Leid, nur ich dachte das passt nicht so genau in das andere Thema rein.
Ich weiss ja, wie ich auf die Taste reagiere, ich weiss nur nicht, wie ich den DRuck dann unterbinde. Also müsste der Druck irgendwie als abgearbeitet behandelt werden, ich weiss nur nicht wie.
Das andere Thema läuft ja darauf hinaus Tasten umzulegen, nur die Überschrift ist unglücklich gewählt.
MfG spoochie

4.930 Beiträge seit 2008
vor 15 Jahren

Die meisten Spiele verwenden DirectX (DirectInput) und gehen nicht über die Windows-Messages, d.h. da kannst du dich nicht so einfach zwischenklemmen.

L
4 Beiträge seit 2008
vor 15 Jahren
S
spoochie Themenstarter:in
155 Beiträge seit 2007
vor 15 Jahren

Also ich kann es nur noch mal wiederholen. Ich habe kein Problem damit einen Hook zu installieren, das ist kein Thema, nur weiss ich nciht, wie ich die Windowstaste unterbinde, wenn ich Sie drücke und auf den Druck reagiere.
Das Auto habe ich, ich weiss nur nicht, wie ich den Motor Starte 😁
MfG spoochie

//edit: Hat super funktioniert mit deinem Link und dem Code danke.

//edit2: Warum fängt er die Win-Taste nur ab, wenn ich den Quellcode mit der Messagebox auskommentiert lasse??. Wenn ich die Messagebox auch noch enzeigen lasse, dann poppt dann auch das Startmenü auf.. Das checke ich gerade mal gar nicht.


 void gkh_keydown(object sender, KeyEventArgs e)
        {
            
            e.Handled = true;
            //MessageBox.Show("Du darfst die Win-Taste nicht drücken");
        }
49.485 Beiträge seit 2005
vor 15 Jahren

Hallo spoochie,

vermutlich, weil eine MessageBox mittels DoEvents die Nachrichtenverarbeitung fortsetzt, obwohl die aktuelle Nachricht noch nicht zu Ende bearbeitet ist.

herbivore

S
spoochie Themenstarter:in
155 Beiträge seit 2007
vor 15 Jahren

Hmmm das habe ich mir auch shcon fast gedacht. Kann ich das irgendiwe unterbinden?
MfG spoochie

4.930 Beiträge seit 2008
vor 15 Jahren

Da gibt es mehrere Möglichkeiten.
Du könntest mal probieren, ob ein eigener Dialog mittels frm.ShowDialog() auch dieses Verhalten zeigt.

Und eine weitere Möglichkeit besteht darin, im Event-Handler einfach nur ein Flag zu setzen und dieses dann über einen Timer o.ä. abzufragen und dann die MessageBox oder Form anzuzeigen.

Aber original wolltest du doch sowieso nur eine Taste senden und kein Fenster anzeigen... (aber ich bleibe bei meiner Aussage bzgl. DirectInput!)

S
spoochie Themenstarter:in
155 Beiträge seit 2007
vor 15 Jahren

Ja das stimmt, eig. wollte ich kein fenster anzeigen lassen, aber nur um mich mit der Materie vertraut zu machen. Jetzt habe ich sogar noch viel mehr vor ^^.
UNd genau da ist auch shcon wieder mein Problem. Ich muss auf einen Tastendruck F7 reagieren und dann die nächsten 4 gedrückten Tasten in ein Array schreiben, das klappt soweit auch ganz gut, nur reagiert er nur gibt die Callback Funktion nur einmal WM_KEYDOWN zurück, dann nur noch WM_KEYUP und ich weiss einfach nciht wieso.
MfG spoochie