Herzlich Willkommen, lieber Gast!
  Sie befinden sich hier:

  Forum » C++CLI / VB .Net / .Net-Framework » Keyboard Hook noch aktuell?

Forum | Hilfe | Team | Links | Impressum | > Suche < | Mitglieder | Registrieren | Einloggen
  Quicklinks: MSDN-Online || STL || clib Reference Grundlagen || Literatur || E-Books || Zubehör || > F.A.Q. < || Downloads   

Autor Thread - Seiten: > 1 < [ 2 ]
000
10.07.2006, 12:03 Uhr
der Leitman



Hallo ihr!

(Um der Bitte des Chefs höchstpersönlich nachzukommen, erstelle ich nun einen eigenen Thread mit meinem Problem *gg*)

also:
Ich habe folgendes Problem

Wollte fragen ob ich mit Visual C++ in Microsoft Visual Studio 8.0 mit .NET Framework 2.0 Windows Messages unter Windows XP mittels Hook abfangen und verarbeiten kann?

ich erstelle ein Programm, dass wichtige Informationen anzeigt und auf keinen Fall geschlossen oder mittels ALT TAB, Windows Taste + E, usw minimiert werden darf.
Nun möchte ich die genannten Tastenkombinationen abfangen und vor Windows verarbeiten,
brauche ich dazu Hooks oder gibt es mittlerweile einen einfacheren Weg um das zu lösen?

Habe bereits versucht mit EventHandler KeyDown zu arbeiten, der fängt zwar Kombinationen wie ALT F4 und dergleichen ab, jedoch keine der oben erwähnten SystemKeys

Vielen Dank im Vorraus
--
Das Leben ist ein Scheiß-Spiel...
aber die Grafik ist saugeil!!!
 
Profil || Private Message || Suche Download || Zitatantwort || Editieren || Löschen || IP
001
10.07.2006, 12:20 Uhr
ao

(Operator)



Zitat von der Leitman:
ich erstelle ein Programm, dass wichtige Informationen anzeigt und auf keinen Fall geschlossen oder mittels ALT TAB, Windows Taste + E, usw minimiert werden darf.

Alt-Tab, Minimize etc. beziehen sich auf Fenster, nicht auf Programme. Das ist nicht dasselbe.

Ein Programm wird geschlossen, wenn der Benutzer oder das Betriebssystem das für angebracht halten, und das ist aus gutem Grund so. Ein Programm muss sich beenden lassen und darf das nicht aushebeln.

Wenn dein Programm sich selbst für so wichtig hält, ist es auf dem Holzweg.

Wenn es für andere Dinge unerlässlich ist, liegt wahrscheinlich ein Entwurfsfehler vor. Erklär mal, was du eigentlich machen willst.

Wenn du - unter normalen Betriebsumständen - das Fenster immer sichtbar haben willst, dann finde heraus, wie man "Always on top" implementiert. Du kannst auch das System-Menü und die Kreuzchen-Taste ausblenden und damit verhindern, dass der Benutzer das Fenster schließen kann.

Das Abfangen von System-Keys ist jedenfalls der falsche Weg dazu, und wie du schon selbst herausgefunden hast, funktioniert er auch gar nicht, zumindest nicht mit KeyDown.

ao

Dieser Post wurde am 10.07.2006 um 12:22 Uhr von ao editiert.
 
Profil || Private Message || Suche Download || Zitatantwort || Editieren || Löschen || IP
002
10.07.2006, 12:21 Uhr
FloSoft
Medialer Over-Flow
(Administrator)


Alt-Tab lässt sich verhindern durch einstellen des Fensters als TOPMOST, dann bleibts immer "on Top" Windows+E naja ka das wird nicht so leicht da ist evtl ein Hook notwendig.
--
class God : public ChuckNorris { };
 
Profil || Private Message || Suche Download || Zitatantwort || Editieren || Löschen || IP
003
10.07.2006, 12:29 Uhr
ao

(Operator)



Zitat von ao:
Du kannst auch das System-Menü und die Kreuzchen-Taste ausblenden und damit verhindern, dass der Benutzer das Fenster schließen kann.

... obwohl das nicht die Feine Englische ist, denn der Anwender bestimmt, was auf seinem Desktop sichtbar ist, nicht der Entwickler.

ao
 
Profil || Private Message || Suche Download || Zitatantwort || Editieren || Löschen || IP
004
10.07.2006, 12:32 Uhr
der Leitman



Danke erstmal, für die schnelle Antwort!

@FloSoft:
hm...Topmost kann ich probieren, jedoch löst das nicht mein Problem, da mittels Windows+M immer noch minimiert werden kann, oder mit Windows+E Explorer über meine Anwendun geöffnet wird
(vermute ich, werds erst mal probieren)

@aO:
Bei meiner Anwendung handelt es sich um ein Hot-Failover System,
bei dem der Client Daten von einem Server erhält und diese nur anzeigen soll,
der User soll keine Interaktionen durchführen können, die Anwendung auf dem Client dient lediglich zur Überwachung!
Falls der Benutzer die Möglichkeit hat, direkt in den Programm ablauf einzugreifen, könnte dies fatale Folgen haben, deshalb möchte ich mittels einer Sperre der besagten Tasten ein Eingreifen des Users verhindern

System Menü ist bereits ausgeblendet, allways on Top Function werd ich versuchen, wie weit mir das weiterhilft

THX
--
Das Leben ist ein Scheiß-Spiel...
aber die Grafik ist saugeil!!!
 
Profil || Private Message || Suche Download || Zitatantwort || Editieren || Löschen || IP
005
10.07.2006, 12:42 Uhr
der Leitman



OK Danke,

Wenn ich TopMost auf True setze, ist mein Fenster immer im Vordergrund, auch wenn ein Explorer, Suchfenster, wasauchimmer... geöffnet wird.

Ist zwar nicht ganz das Wahre, da die Fenster zwar nicht angezeigt werden und der user nicht mit ihnen interagieren kann, aber sie gehen trotzdem auf, was in der Masse dazu führen kann, dass Speicher gebraucht wird ohne dass es eigentlich nötig ist...

Aber trotzdem Danke erstmal, das muss halt reichen bis ich etwas besseres finde
--
Das Leben ist ein Scheiß-Spiel...
aber die Grafik ist saugeil!!!
 
Profil || Private Message || Suche Download || Zitatantwort || Editieren || Löschen || IP
006
10.07.2006, 12:58 Uhr
ao

(Operator)



Zitat von der Leitman:
der User soll keine Interaktionen durchführen können, die Anwendung auf dem Client dient lediglich zur Überwachung!
Falls der Benutzer die Möglichkeit hat, direkt in den Programm ablauf einzugreifen, könnte dies fatale Folgen haben ...

Ein "dummer" Client, der nur ein paar Daten anzeigt, aber wenn er beendet wird, hat das fatale Folgen, also versuchen wir, das Beenden zu unterdrücken. Das klingt nach Designfehler, der jetzt durch Herumdoktern an Symptomen geflickt werden soll. Du solltest stattdessen das Problem beheben: Es darf nicht sein, dass ein Server kracht, nur weil sich der letzte Client abmeldet.

ao
 
Profil || Private Message || Suche Download || Zitatantwort || Editieren || Löschen || IP
007
10.07.2006, 13:14 Uhr
der Leitman



nein, da hat nichts mit dem Server zu tun, dem passiert nichts, wenn das Programm beendet wird!

das Programm soll lediglich nicht geschlossen werden, oder ein anderes Fenster darüber geöffnet werden, nur um den Benutzer nicht abzulenken.
Wie gesagt, es handelt sich um ein Überwachungsprogramm, da kann es nicht sein, dass der Benutzer z.B. Solitär spielt oder im Internet surft, das alles möchte ich hiermit beheben!

Auf dem Client läuft nichts sonst, außer diesem Programm, es wird mit Autostart initialisiert und zeigt nur gewisse Werte, Vorgänge und so weiter an, sprich es ist keine normale Arbeitsstation sondern praktisch nur eine Anzeige


Leitman
--
Das Leben ist ein Scheiß-Spiel...
aber die Grafik ist saugeil!!!
 
Profil || Private Message || Suche Download || Zitatantwort || Editieren || Löschen || IP
008
10.07.2006, 13:51 Uhr
der Leitman



hm... tut echt sorry, aber habe gerade noch ein Problem entdeckt:

ALT + F4 wird zwar abgefangen, aber nur wenn man sich direkt auf der Form befindet.
Falls man jedoch gerade einen Button oder ein anderes Control Objekt fokusiert hat, funktioniert das Keyhandler Event nicht mehr... eh klar eigentlich...

Weiß jemand, wie ich das globalisieren kann, außer:

o) für jedes einzelne Objekt einen Aufruf des KeyDown events einzufügen (das wären
ungefähr 78 Objekte)

o) Hook verwenden?
--
Das Leben ist ein Scheiß-Spiel...
aber die Grafik ist saugeil!!!
 
Profil || Private Message || Suche Download || Zitatantwort || Editieren || Löschen || IP
009
10.07.2006, 15:44 Uhr
Guybrush Threepwood
Gefürchteter Pirat
(Operator)


Ein Keyboardhook ist absolut der Falsche Ansatz dafür.
Wenn du überwachen möchtest wann jemand deine Autotür öffnet installierst du ja auch nicht ein Satelitengestütztes System für alle Autos weltweit

Wenn ich mir deine Fragen und Probleme so durchlesen fallen mir spontan 2 Punkte ein:
1. Terminalserver
2. Solltest du dich glaub ich erstmal ein bisschen weiterbilden was genau ein Eventhandler ist und wie der so Funktioniert.


Ich schiebs außerdem mal in die .NET Ecke.
 
Profil || Private Message || Suche Download || Zitatantwort || Editieren || Löschen || IP
Seiten: > 1 < [ 2 ]     [ C++CLI / VB .Net / .Net-Framework ]  


ThWBoard 2.73 FloSoft-Edition
© by Paul Baecher & Felix Gonschorek (www.thwboard.de)

Anpassungen des Forums
© by Flo-Soft (www.flo-soft.de)

Sie sind Besucher: