Entwickler-Ecke
WinForms - Kontextmenüs in Windows Forms unterbinden
Felix2000 - Mi 17.08.11 11:31
Titel: Kontextmenüs in Windows Forms unterbinden
Hi Folks !
Ist es eigentlich ohne weiteres möglich, sämtliche Kontextmenüs in den Windowsforms zu unterbinden? Also der Benutzer kann zwar immernoch einen rechten Mausklick über meiner Benutzeroberfläche durchführen, ihm sollen allerdings kerinerlei Kontextmenüs mehr angezeigt werden (z.B. die "windowsinternen Kontextmenüs" zum Kopieren und Einfügen von Daten bspw.).
Ich möchte dadurch eine gewisse Sicherheit meiner Daten erlangen, auch wenn dieses natürlich kein endgültiger Schutz der Daten sicherstellt. Kann man so etwas bewerkstelligen?
Greetz
Felix
Felix2000 - Do 18.08.11 08:51
Kann mir wirklich keiner weiterhelfen?
bakachan - Do 18.08.11 08:58
Setze doch einfach ein eigenes (leeres) Kontextmenü an den Controls.
Aber selbst wenn du die Kontextmenüs unterbindest, was hält den Benutzer davon ab einfach Strg+C / Strg+V zu drücken?
Felix2000 - Do 18.08.11 09:09
bakachan hat folgendes geschrieben : |
Aber selbst wenn du die Kontextmenüs unterbindest, was hält den Benutzer davon ab einfach Strg+C / Strg+V zu drücken? |
Genau darauf zielte ja meine Frage ab, wie kann man es gänzlich verhindern, dass Daten von einer GUI kopiert werden können!?
Greetz
Felix
Th69 - Do 18.08.11 09:25
Hallo Felix,
dann benutze für das Anzeigen der Daten eben keine Standard-Windows-Controls (wie TextBox, RichTextBox etc.), sondern entweder nur das Label-Control oder zeichne die Texte alle selber (im Paint-Ereignis mittels e.Graphics.DrawString()).
Wenn du schon WinAPI-Erfahrung hast (was ich ersteinmal nicht annehme), dann könntest du auch die entsprechenden Messages über die
WndProc-Methode [
http://msdn.microsoft.com/de-de/library/system.windows.forms.control.wndproc.aspx] rausfiltern.
Ralf Jansen - Do 18.08.11 09:40
C#-Quelltext
1:
| Genau darauf zielte ja meine Frage ab, wie kann man es gänzlich verhindern, dass Daten von einer GUI kopiert werden können!? |
Denn Rechner nicht einschalten. Letztlich kann ich einfach einen Screenshot machen oder irgendeine Art von Screenreader verwenden dem egal ist was deine Anwendung verhindert.
Felix2000 - Do 18.08.11 09:47
Ralf Jansen hat folgendes geschrieben : |
C#-Quelltext 1:
| Genau darauf zielte ja meine Frage ab, wie kann man es gänzlich verhindern, dass Daten von einer GUI kopiert werden können!? |
Denn Rechner nicht einschalten. Letztlich kann ich einfach einen Screenshot machen oder irgendeine Art von Screenreader verwenden dem egal ist was deine Anwendung verhindert. |
Diese Idee ist mir auch bereits gekommen, aber ich glaube das wäre bei zich tausend relevanten Datensätzen ein Aufwand, den wohl nur die Wenigsten auf sich nehmen würden.
Klar, komplett verhindern werde ich das wohl nie können, dass sich jemand an meinen Daten bedient, aber zumindest deutlich erschweren und für den Schnüffler sehr nervig gestalten.
Greetz
Felix
Ralf Jansen - Do 18.08.11 10:02
Zum schwermachen würde ich eine
IMessageFilter [
http://msdn.microsoft.com/en-us/library/system.windows.forms.imessagefilter.aspx] implementieren und alle relevanten Mouse und Keyboard Messages wegfiltern so das sie die UI nicht mehr erreichen.
C#-Quelltext
1: 2: 3: 4: 5: 6: 7: 8: 9:
| private class MeinUserNervenderMessageFilter : IMessageFilter { public bool PreFilterMessage(ref Message m) { if ((m.Msg == WM_KEY_XXXX) || ... u.s.w ) return true; return false; } } |
Denn müßtest du dann noch zum richtigen Zeitpunkt registrieren und wieder deregistrieren.
C#-Quelltext
1: 2: 3:
| MeinUserNervenderMessageFilter messageFilter = new MeinUserNervenderMessageFilter (); Application.AddMessageFilter(messageFilter ); Application.RemoveMessageFilter(messageFilter ); |
Entwickler-Ecke.de based on phpBB
Copyright 2002 - 2011 by Tino Teuber, Copyright 2011 - 2025 by Christian Stelzmann Alle Rechte vorbehalten.
Alle Beiträge stammen von dritten Personen und dürfen geltendes Recht nicht verletzen.
Entwickler-Ecke und die zugehörigen Webseiten distanzieren sich ausdrücklich von Fremdinhalten jeglicher Art!