Du bist nicht angemeldet.

Stilllegung des Forums
Das Forum wurde am 05.06.2023 nach über 20 Jahren stillgelegt (weitere Informationen und ein kleiner Rückblick).
Registrierungen, Anmeldungen und Postings sind nicht mehr möglich. Öffentliche Inhalte sind weiterhin zugänglich.
Das Team von spieleprogrammierer.de bedankt sich bei der Community für die vielen schönen Jahre.
Wenn du eine deutschsprachige Spieleentwickler-Community suchst, schau doch mal im Discord und auf ZFX vorbei!

Werbeanzeige

CBenni::O

1x Contest-Sieger

  • »CBenni::O« ist der Autor dieses Themas

Beiträge: 1 145

Wohnort: Stuttgart

  • Private Nachricht senden

1

21.04.2012, 14:04

[C++, Windows Forms] Global Hotkey setzen und abfangen

Hallo,
Ich möchte mit Windows Forms in C++ und Visual Studio einen Global Hotkey setzen und abfangen. Im Internet gibt es dazu kaum information, das bisschen, was ich gefunden habe, war spezifisch für VB oder C#, hilft mir also kein bisschen weiter.
Ich muss einen Weg finden, um die WM_HOTKEY nachicht abzufangen, jemand ne ahung wie das in Windows Forms geht? Hat jemand schon einmal etwas ähnliches gemacht?
Ich habe (nach einem Tipp aus einem anderen Forum) es versucht mit einem BackgroundWorker zu lösen, aber das ergebnis war völlig unvorhersehbares verhalten und keine möglichkeit, mit der Form zu interagieren.

danke,
CBenni::O
Ein Mitglied der VEGeiCoUndGraSonMaWiGeS Bewegung.
42!
Aufräumen kann jeder, nur das Genie überblickt das Chaos!
Metal will never die!
1. Sppro Gamecontest - mein Beitrag

ProAmateur

Alter Hase

Beiträge: 434

Wohnort: Bei Simmern, Koblenz

Beruf: Schüler

  • Private Nachricht senden

2

21.04.2012, 14:18

Weiß nicht, ob es dir darum geht es mit c++ zu machen, will wenn nicht kann ich dir Autohotkey empfehlen... Funktioniert ganz einfach.
"Die Neugier steht immer an erster Stelle eines Problems, das gelöst werden will."
Galileo Galilei
________________________________________________________________________

"Dumme Fragen gibt es nicht, dumm ist nur, wer nicht fragt.“

dot

Supermoderator

Beiträge: 9 757

Wohnort: Graz

  • Private Nachricht senden

3

21.04.2012, 14:23

Überschreib die WndProc() Methode deiner Form ;)

4

21.04.2012, 15:17

Meinst du vielleicht Hooks? :/

MfG
Check

CBenni::O

1x Contest-Sieger

  • »CBenni::O« ist der Autor dieses Themas

Beiträge: 1 145

Wohnort: Stuttgart

  • Private Nachricht senden

5

21.04.2012, 15:17

@ProAmateur Nein. Autohotkey ist was völlig anderes. Ich möchte meinem Programm einen global hotkey zuweisen.

@dot, danke. Ich habe herausgefunden wie das geht. Ich hoffe es funktioniert jetzt, ansonsten frage ich nochmal nach.

C-/C++-Quelltext

1
2
3
4
5
6
7
8
9
10
11
12
virtual void WndProc( Message% m ) override
        {

             // Listen for operating system messages.
             switch ( m.Msg )
             {
                case WM_HOTKEY:
                    MessageBox::Show("Hotkey pressed");
                    break;
             }
             Form::WndProc( m );
        }


mfg CBenni::O
Ein Mitglied der VEGeiCoUndGraSonMaWiGeS Bewegung.
42!
Aufräumen kann jeder, nur das Genie überblickt das Chaos!
Metal will never die!
1. Sppro Gamecontest - mein Beitrag

dot

Supermoderator

Beiträge: 9 757

Wohnort: Graz

  • Private Nachricht senden

6

21.04.2012, 15:40

Deinem Code entnehme ich, dass du C++/CLI verwendest? Hast du einen bestimmten Grund dafür? Die Sprache ist nämlich so ziemlich das letzte was ich für Anwendungsentwicklung empfehlen würde. Wieso nicht einfach C#?

CBenni::O

1x Contest-Sieger

  • »CBenni::O« ist der Autor dieses Themas

Beiträge: 1 145

Wohnort: Stuttgart

  • Private Nachricht senden

7

21.04.2012, 16:44

Ich kann kein C#. Ich habe mal damit rumprobiert und es bald wieder gelassen, mir hat die Sprache gar nicht gefallen. Ist eine individuelle Sache.
Ich Verwende CLI weil sie in Visual Studio integriert ist (Mit dem Form Designer). Alles andere wäre overkill (Neue API lernen, alles manuell erstellen etc). Ich habe allerdings vor WxWidgets mal anzuschauen und dann evtl zu porten. Aber C++ bleibt die SPrache meiner Wahl. (Das ist kein Aufruf an alle flamer, jaja ich weiß, Linux und Java sind die einzig wahren Dinge :rolleyes: )

mfg CBenni::O
Ein Mitglied der VEGeiCoUndGraSonMaWiGeS Bewegung.
42!
Aufräumen kann jeder, nur das Genie überblickt das Chaos!
Metal will never die!
1. Sppro Gamecontest - mein Beitrag

dot

Supermoderator

Beiträge: 9 757

Wohnort: Graz

  • Private Nachricht senden

8

21.04.2012, 16:50

Ich kann dir nur von ganzem Herzen raten, es mit C# zu versuchen. C++/CLI ist kein C++, sondern eine ganz eigene Sprache, die allein für eine ganz spezielle Nische entwickelt wurde (managed/native interop). Es ist wirklich alles andere als eine gute Idee, C++/CLI für UI Dinge zu benutzen...allein die Tatsache, dass es in VS2010 nichtmal experimentelles IntelliSense für C++/CLI gibt, sollte einem schon zu denken geben...

Dieser Beitrag wurde bereits 2 mal editiert, zuletzt von »dot« (21.04.2012, 16:57)


CBenni::O

1x Contest-Sieger

  • »CBenni::O« ist der Autor dieses Themas

Beiträge: 1 145

Wohnort: Stuttgart

  • Private Nachricht senden

9

21.04.2012, 17:08

Ja, das ist wahr. Dass Intellisense fehlt ist mehr als kacke.
Für das bisschen Programm war es aber zu viel Arbeit, eine neue Sprache zu lernen ;)

mfg CBenni::O
Ein Mitglied der VEGeiCoUndGraSonMaWiGeS Bewegung.
42!
Aufräumen kann jeder, nur das Genie überblickt das Chaos!
Metal will never die!
1. Sppro Gamecontest - mein Beitrag

dot

Supermoderator

Beiträge: 9 757

Wohnort: Graz

  • Private Nachricht senden

10

21.04.2012, 17:14

Dann beim nächsten Mal, du wirst sehen dass es nicht viel zu lernen gibt wenn du schon C++ kannst. Und es lohnt sich wirklich ;)

Werbeanzeige