Zum Inhalt springen

Empfohlene Beiträge

Geschrieben

Hallo, ich habe schon wieder ein unschönes Windows-Programmier-Problem:

Ich muß herausfinden, ob in einem Moment an dem Rechner gearbeitet wird. Das ist die Aufgabe.

Zwar gibt es da verschiedene Ansätze, aber ich weiß nicht wie ich am einfachsten das Ziel erreiche:

1. Abfangen alles Maus- und Tastatureingaben:

Wenn eine bestimmte Zeit keine Maus- oder Tastaturnachrichten im ganzen System versendet worden sind, dann wird nicht gearbeitet?

Die Frage hier ist nur: Wie fange ich alle Nachrichten ab? Normalerweise empfange ich doch nur Nachrichten innerhalb der eigenenen Anwendung

2. CPU-Auslastung:

Wenn die CPU-Auslastung einen Zeitraum lang, sehr niedrig ist, dann wird nicht gearbeitet.

Auch hier die Frage: Wie finde ich das heraus?

3. Gibt es vielleicht noch andere bessere Methoden?

<OffTopic>

Gibt es eine Möglichkeit diese Aufgabe auch mit Java zu lösen?

</OffTopic>

CU

themaster

Geschrieben

Wegen dem Nachrichten abfangen. Da gab´s mal ein ähnliches Problem, wo einer jedesmal eine eindeutige FensterID haben wollte, welche auch von Anwendungen außerhalb kommt. Grundsätzlich ist ein System-Hook eine bessere Möglichkeit, aber man kann mit PreTranslateMessage() auch einen ähnlichen Effekt erzielen. Du mußt nur den Filtern aus dem Beispiel rausnehmen. Ich weiß auch auf anhieb nicht genau wie man das anstellen könnte, aber wenn man auf höherer Ebene die Funktion überschreiben könnte (z.B. vom System-Fenster - zu finden mit GetDeskTopWindow() evtl. das PreTranslateMessage() vom CWnd-Objekt hart mit dem eigenen austauschen ... hab ich ja kürzlich erklärt, mit was für Tricks man das auch ohne Erlaubnis machen kann) würde man mit Sicherheit absolut alle Nachrichten abfangen - so sind die auf bestimmt vorgefiltert glaube ich. Allerdings bekommt man nur beim Reaktivieren des Programmfensters die Messages mit einem Schlag durchgereicht (ich hab´s nicht genauer ausgetestet, aber vielleicht wird auch jede Message korrekt abgefangen und nur der Trace beim Reaktivieren aktualisiert) Vielleicht reicht Dir das schon irgendwie aus.

1. Beitrag

2. Beitrag <- hier ist das Beispiel - wirf einfach den Window-Filter raus und dann gibt´s schon wesentlich mehr zu sehen. Auch Fenster-IDs externer Fenster, die nicht zum Programm selber gehören!

Erstelle ein Benutzerkonto oder melde Dich an, um zu kommentieren

Du musst ein Benutzerkonto haben, um einen Kommentar verfassen zu können

Benutzerkonto erstellen

Neues Benutzerkonto für unsere Community erstellen. Es ist einfach!

Neues Benutzerkonto erstellen

Anmelden

Du hast bereits ein Benutzerkonto? Melde Dich hier an.

Jetzt anmelden

Fachinformatiker.de, 2024 by SE Internet Services

fidelogo_small.png

Schicke uns eine Nachricht!

Fachinformatiker.de ist die größte IT-Community
rund um Ausbildung, Job, Weiterbildung für IT-Fachkräfte.

Fachinformatiker.de App

Download on the App Store
Get it on Google Play

Kontakt

Hier werben?
Oder sende eine E-Mail an

Social media u. feeds

Jobboard für Fachinformatiker und IT-Fachkräfte

×
×
  • Neu erstellen...