Autor Beitrag
ThinkPad
Hält's aus hier
Beiträge: 6



BeitragVerfasst: Sa 18.02.12 21:09 
Nabend,

Ich möchte in meinem Programm bestimmte Tastenkombinationen systemweit abfangen könne, dazu habe ich in meinem WinForm einen HotKey mithilfe von RegisterHotKey (user32.dll) für Strg + C angelegt, diesen kann ich in meinem Code auch problemlos abfangen:

ausblenden C#-Quelltext
1:
2:
3:
4:
5:
6:
7:
8:
9:
10:
11:
        protected override void WndProc(ref Message m)
        {
            if (m.Msg == 0x312)
            {
                if ((int)m.WParam == 1)
                {
                    //TODO Strg+C
                }
            }
            base.WndProc(ref m);
        }


Das Problem ist allerdings das der markierte Text nicht zum Clipboard hinzugefügt wurde.
Ohne registrierten HotKey wird der markierte und kopierte Text auch ins Windows Clipboard geschrieben.

Wäre nett wenn mir jemand einen Tipp geben könnte wie ich mein Vorhaben umsetzen könnte, muss ja auch nicht über die RegisterHotKey Methode sein.
Möchte halt nur mitkriegen wenn der Nutzer "Strg + C" gedrückt hat ;)

Danke schonmal für die Antworten.

Moderiert von user profile iconTh69: Titel erweitert
Th69
ontopic starontopic starontopic starontopic starontopic starontopic starontopic starontopic star
Moderator
Beiträge: 4807
Erhaltene Danke: 1061

Win10
C#, C++ (VS 2017/19/22)
BeitragVerfasst: So 19.02.12 11:31 
Hallo ThinkPad :welcome:

wie genau behandelst du denn Str+C? Wird danach auch noch weiterhin base.WndProc(ref m) aufgerufen oder springst du mittels return aus der Methode?

Eine bessere Möglichkeit das Clipboard zu überwachen (denn Strg+C ist ja nicht die einzige Möglichkeit, sondern es gibt ja auch noch das Kontextmenü "Kopieren" oder aber einen ToolBar-Button), nennt sich ClipboardChain, s. z.B. Create a Windows Clipboard Monitor in C# using SetClipboardViewer

Unter C# Tip: Monitoring Clipboard Activity in C# habe ich noch einen weiteren Artikel dazu gefunden.

Und bei dem Beitrag WM_DRAWCLIPBOARD wird öfters gesendet!? hier in diesem Forum wurden dazu weitere Details besprochen.

Und vor ca. 3 Jahren hatte ich schon mal einen Thread zum Thema ClipboardChain im myCSharp-Forum beantwortet: Form fliegt aus dem ClipBoardChain raus

P.S: Für das RegisterHotkey gibt es auch eine schöne Klasse: Hotkey-Klasse
ThinkPad Threadstarter
Hält's aus hier
Beiträge: 6



BeitragVerfasst: So 19.02.12 23:21 
Danke dir für die nützlichen Tipps !!

SetClipboardViewer werde ich mir mal genauer anschauen, scheint das zu seien was ich wirklich brauche :)
ThinkPad Threadstarter
Hält's aus hier
Beiträge: 6



BeitragVerfasst: Mo 27.02.12 18:03 
Hey,

ich grabe mal dieses Thread nach etwas längerer Zeit wieder aus.
Also der ClipboardViewer funktioniert schonmal bestens :)
Das Problem ist jetzt nur, füge ich selbst etwas in das Clipboard ein, springt natürlich auch der "ClipboardViewer" darauf an.
Gibt es eine verlässliche Möglichkeit die Werte/Daten (glaube im DataObject Format) des Clipboards zu überprüfen ?
Dann würde ich das DataObjekt das ich in das Clipboard eingefügt habe, mit dem aktuellen Clipboard DataObjekt vergleichen ...

Kennt jemand eine Möglichkeit ?


LG