Delphi-PRAXiS

Delphi-PRAXiS (https://www.delphipraxis.net/forum.php)
-   Win32/Win64 API (native code) (https://www.delphipraxis.net/17-win32-win64-api-native-code/)
-   -   Delphi WMI sofort EventLog bemerken (https://www.delphipraxis.net/122315-wmi-sofort-eventlog-bemerken.html)

Chasmo90 13. Okt 2008 20:37


WMI sofort EventLog bemerken
 
Hallo erstmal!
Ich wollte mich mal ein wenig mit WMI beschäftigen und habe mir mal das kleine Tutorial angesehen (Hier zu finden) doch dort werden leider nur die bereits eingetragenen EventLogs angezeigt. Wollte gern mal wissen wie man das realisiert das mein Programm sofort auf eine Änderung der EventLogs reagiert?
könnte mir jemand erklären wie das funktioniert?
PS: Ein paar Links zum Thema WMI nehm ich immer gerne an :thumb:
Danke im Voraus!
LG Chaismo

RWarnecke 13. Okt 2008 21:13

Re: WMI sofort EventLog bemerken
 
Hier im Forum suchenWMIDemo

Chasmo90 14. Okt 2008 12:06

Re: WMI sofort EventLog bemerken
 
Die Einträge hier im Forum hbae ich mir bereits angesehen aber nichts wirklch passendes zu meiner Frage gefunden :?

RWarnecke 14. Okt 2008 12:14

Re: WMI sofort EventLog bemerken
 
Du überprüfst einfach mit
SQL-Code:
SELECT count(*) FROM Win32_NTLogEvent WHERE LogFile="Application";
die Anzahl der Einträge. Ändert sich die Anzahl, dann aktualisiere Deine Ansicht.

Der API-Befehl MSDN-Library durchsuchenReportEvent wäre vielleicht auch noch was für Dich. Geht allerdings nicht über WMI.

Phoenix 14. Okt 2008 12:34

Re: WMI sofort EventLog bemerken
 
Erstmal das hier: http://www.delphipraxis.net/internal...=744614#744614 ;-)

So. Und dann kannst Du änderungen an WMI-Objekten auch mit WQL abfragen.
Das Prinzip ist (für C++) hier erklärt: http://msdn.microsoft.com/en-us/library/aa390425(VS.85).aspx

Im Prinzip ist das Folgendes:

SELECT * FROM __InstanceModificationEvent WITHIN 10 WHERE TargetInstance ISA 'Win32_NTLogEvent' AND TargetInstance.LogFile="Application"

Das ganze rufst Du asynchron auf (Mittels TWmiEventSink aus der WMI Scripting TLB). Dort bekommst Du dann immer die neuen Instanzen der WMI-Objekte pro änderungen in einem Event. Die 10 im Statement sind Sekunden, das heisst hier pollt der WMI-Dienst (nicht Deine Anwendung, das erzeugt also Last auf dem verbundenen Server!) alle 10 Sekunden. Viel drunter würde ich nicht gehen, WMI ist nicht gerade das Schnelleste was es gibt. Hinterher bitte nicht vergessen, das Query auch wieder zu beenden.

Chasmo90 14. Okt 2008 14:40

Re: WMI sofort EventLog bemerken
 
Vielen Dank fürs schnelle posting!
Hat wunderbar geklappt! :hello:


Alle Zeitangaben in WEZ +1. Es ist jetzt 00:22 Uhr.

Powered by vBulletin® Copyright ©2000 - 2024, Jelsoft Enterprises Ltd.
LinkBacks Enabled by vBSEO © 2011, Crawlability, Inc.
Delphi-PRAXiS (c) 2002 - 2023 by Daniel R. Wolf, 2024 by Thomas Breitkreuz