Festplattenaktivität feststellen ?

Anfängerfragen zum Programmieren mit PureBasic.
Benutzeravatar
Bisonte
Beiträge: 2465
Registriert: 01.04.2007 20:18

Festplattenaktivität feststellen ?

Beitrag von Bisonte »

Hallo.

Wie kann ich unter Windows feststellen (systemweit), ob gerade Datentransfer von irgendeinem Laufwerk im Gange ist ?

Geht um die Simulation einer Anzeige wie die HD-Lampe am PC Gehäuse...
PureBasic 6.21 (Windows x86/x64) | Windows11 Pro x64 | AsRock B850 Steel Legend Wifi | R7 9800x3D | 64GB RAM | GeForce RTX 5080 | ThermaltakeView 270 TG ARGB | build by vannicom​​
Benutzeravatar
RSBasic
Admin
Beiträge: 8047
Registriert: 05.10.2006 18:55
Wohnort: Gernsbach
Kontaktdaten:

Re: Festplattenaktivität feststellen ?

Beitrag von RSBasic »

Du kannst mit folgendem Code ermitteln, ob eine Datei hinzugefügt, entfernt oder geändert wurde: http://www.rsbasic.de/aktualisierung/wi ... mitteln.pb
Ist es das, was du suchst?
Aus privaten Gründen habe ich leider nicht mehr so viel Zeit wie früher. Bitte habt Verständnis dafür.
Bild
Bild
Benutzeravatar
Bisonte
Beiträge: 2465
Registriert: 01.04.2007 20:18

Re: Festplattenaktivität feststellen ?

Beitrag von Bisonte »

Danke.

Kommt dem schon recht nahe was ich suche, aber leider ist es nicht dieses.

Mein Tower steht auf dem Boden, so dass ich die LaufwerksLED nicht sehen kann, und wollte nun diese LED
mit einer LED (Scroll Lock) auf der Tastatur verknüpfeln... so dass ich dort sehen kann, ob gerade Festplattenaktivität
ansteht oder nicht.

Mit dem Snippet ist "nur" eine Dateiüberwachung möglich, also wenn z.B. eine Gigabytegrosse Datei kopiert wird, würde die
LED nur kurz aufblitzen und nicht durchgehend leuchten (so wie halt die GehäuseLED).
PureBasic 6.21 (Windows x86/x64) | Windows11 Pro x64 | AsRock B850 Steel Legend Wifi | R7 9800x3D | 64GB RAM | GeForce RTX 5080 | ThermaltakeView 270 TG ARGB | build by vannicom​​
Benutzeravatar
RSBasic
Admin
Beiträge: 8047
Registriert: 05.10.2006 18:55
Wohnort: Gernsbach
Kontaktdaten:

Re: Festplattenaktivität feststellen ?

Beitrag von RSBasic »

Ich habe mal gegoogelt und habe nur diesen Thread gefunden: http://www.purebasic.fr/german/viewtopi ... 16&t=12492
Der Code von And51 hat ebenfalls das Problem, dass nur kurz "anleuchtet". Der Code von Hell zeigt mir immer "Zugriff" an, obwohl ich nichts mache. Falls du seinen Code testen möchtest, aber die DLL-Datei nicht hast, kannst du diese hier herunterladen: http://www.rsbasic.de/temp/TVICPORT.DLL
Aus privaten Gründen habe ich leider nicht mehr so viel Zeit wie früher. Bitte habt Verständnis dafür.
Bild
Bild
Benutzeravatar
Bisonte
Beiträge: 2465
Registriert: 01.04.2007 20:18

Re: Festplattenaktivität feststellen ?

Beitrag von Bisonte »

Schade, der Code läuft auch nicht. Mag aber daran liegen, das diese DLL den IDE Bereich scannen kann, aber kein SATA ?
Ausserdem ... woher nimmt man die Port Adresse... (in den docs der dll stehts als parameter).
Die von den Controllern im Gerätemanager sind es anscheinend nicht.

Aber gut, muss ich wohl ein laaaaaaaaaaaaaaaaanges kabel nehmen und nen Lötkolben ;)
PureBasic 6.21 (Windows x86/x64) | Windows11 Pro x64 | AsRock B850 Steel Legend Wifi | R7 9800x3D | 64GB RAM | GeForce RTX 5080 | ThermaltakeView 270 TG ARGB | build by vannicom​​
Benutzeravatar
RSBasic
Admin
Beiträge: 8047
Registriert: 05.10.2006 18:55
Wohnort: Gernsbach
Kontaktdaten:

Re: Festplattenaktivität feststellen ?

Beitrag von RSBasic »

Hm, ansonsten mal selber googlen, beispielsweise in CPP-Foren o.ä. Vielleicht gibt es eine vorhandene WMI-Lösung o.ä.
Aus privaten Gründen habe ich leider nicht mehr so viel Zeit wie früher. Bitte habt Verständnis dafür.
Bild
Bild
Benutzeravatar
Bisonte
Beiträge: 2465
Registriert: 01.04.2007 20:18

Re: Festplattenaktivität feststellen ?

Beitrag von Bisonte »

da tippt man sich bei google die finger wund ;)

aber es scheint mit Disk Performance Counters was zu tun zu haben, somit eventuell mit PDH.dll machbar,
allerdings find ich nirgends ein Query... aber ich such noch ;)
PureBasic 6.21 (Windows x86/x64) | Windows11 Pro x64 | AsRock B850 Steel Legend Wifi | R7 9800x3D | 64GB RAM | GeForce RTX 5080 | ThermaltakeView 270 TG ARGB | build by vannicom​​
Benutzeravatar
Kiffi
Beiträge: 10711
Registriert: 08.09.2004 08:21
Wohnort: Amphibios 9

Re: Festplattenaktivität feststellen ?

Beitrag von Kiffi »

Frohes Neues! :D

hier mal ein WMI-Schnippselchen (benötigt COMate):

Code: Alles auswählen

IncludePath "[DeinPfadZuCOMatePLUS-PB4-50]"
XIncludeFile "comateplus.pbi"

EnableExplicit

Procedure.s ShowHdActivity(Computer.s)
  
  Protected objWMIService.COMateObject
  Protected objItem.COMateObject 
  Protected colItems.COMateEnumObject 
  Protected ReturnValue.s
  
  objWMIService = COMate_GetObject("winmgmts:\\" + Computer + "\root\cimv2", "") 
  
  If objWMIService 
    
    colItems  = objWMIService\CreateEnumeration("ExecQuery('SELECT * FROM Win32_PerfFormattedData_PerfDisk_PhysicalDisk')") 
    
    If colItems  
      
      objItem = colItems\GetNextObject() 
      
      While objItem
        
        If objItem\GetStringProperty("Name") = "_Total"
          
          ReturnValue + "DiskReadBytesPersec: "  + objItem\GetStringProperty("DiskReadBytesPersec") + #CRLF$
          ReturnValue + "DiskTransfersPersec: "  + objItem\GetStringProperty("DiskTransfersPersec") + #CRLF$
          ReturnValue + "DiskWriteBytesPersec: " + objItem\GetStringProperty("DiskWriteBytesPersec") + #CRLF$
          ReturnValue + "PercentIdleTime: "      + objItem\GetStringProperty("PercentIdleTime") + #CRLF$
          
        EndIf
        
        objItem\Release() 
        objItem = colItems\GetNextObject() 
        
      Wend 
      
      colItems\Release() 
      
    EndIf 
    
    objWMIService\Release() 
    
  EndIf 
  
  ProcedureReturn ReturnValue
  
EndProcedure

#Window = 0
#EditorGadget = 0
#WindowTimer = 0

OpenWindow(#Window, #PB_Ignore, #PB_Ignore, 300, 300, "HD-Activity")
EditorGadget(#EditorGadget, 0, 0, WindowWidth(#Window), WindowHeight(#Window))
AddWindowTimer(#Window, #WindowTimer, 500)
StickyWindow(#Window, #True)

Repeat
  
  Select WaitWindowEvent()
      
    Case #PB_Event_CloseWindow
      Select EventWindow()
        Case #Window
          Break
      EndSelect
      
    Case #PB_Event_Timer
      Select EventTimer()
        Case #WindowTimer
          SetGadgetText(#EditorGadget, ShowHdActivity("."))
      EndSelect
      
  EndSelect
  
ForEver
Obiges zeigt IMO die Aktivität aller Festplatten an.

Grüße ... Kiffi
a²+b²=mc²
Benutzeravatar
NicknameFJ
Beiträge: 324
Registriert: 03.06.2007 14:36
Wohnort: Von der Sonne aus gesehen der dritte Planet

Re: Festplattenaktivität feststellen ?

Beitrag von NicknameFJ »

Bisonte hat geschrieben: aber es scheint mit Disk Performance Counters was zu tun zu haben, somit eventuell mit PDH.dll machbar,
allerdings find ich nirgends ein Query... aber ich such noch ;)
Im englischen Forum hat einer so ein Programm mit DriveGLeam.dll gemacht. Leider nur als *.exe und nicht als Source verfügbar.

http://www.purebasic.fr/english/viewtop ... drivegleam

Grüße NicknameFJ

[EDIT]
Hm, die dll scheint es nicht frei zu geben. Lt. Aussage des Autors im obigen LINK ist die DLL ein Projekt eines Freundes der die DLL in C geschrieben hat. Habe auch auf die Schnelle mit Google keinen Downloadlink zu der DLL finden könne. Schade.
[ENDEDIT]
PS: Alle im Text enthaltenen Schreibfehler sind beabsichtigt und dienen der Belustigung aller

Bild
Benutzeravatar
Sicro
Beiträge: 963
Registriert: 11.08.2005 19:08
Kontaktdaten:

Re: Festplattenaktivität feststellen ?

Beitrag von Sicro »

Bisonte hat geschrieben:Aber gut, muss ich wohl ein laaaaaaaaaaaaaaaaanges kabel nehmen und nen Lötkolben ;)
Demzufolge gehen ich davon aus, dass dir auch Fertiglösungen recht sind.
Das Programm DriveLED von O&O zeigt die LEDs in dem TrayIcon-Bereich an.
Mit folgendem Link kommst du noch an die ältere Version, die noch Freeware ist:
http://www.wintotal.de/softwarearchiv/?rb=2054&id=1424
Bild
Warum OpenSource eine Lizenz haben sollte :: PB-CodeArchiv-Rebirth :: Pleasant-Dark (Syntax-Farbschema) :: RegEx-Engine (kompiliert RegExes zu NFA/DFA)
Manjaro Xfce x64 (Hauptsystem) :: Windows 10 Home (VirtualBox) :: Neueste PureBasic-Version
Antworten