; ; HDD Indicator @ TNA by SKAN ( arian.suresh@gmail.com ) ; Created: 15-May-2008 / Last Modified: 15-May-200 ; ; Credit: Adapted from "HDD Activity Monitoring LED" by Sean ; Topic : http://www.autohotkey.com/forum/viewtopic.php?t=18033 ; #Persistent Process, Priority,, High SetBatchLines -1 ; Creating NOTIFYICONDATA : http://msdn.microsoft.com/en-us/library/aa930660.aspx ; Thanks Lexikos : http://www.autohotkey.com/forum/viewtopic.php?p=162175#162175 PID := DllCall("GetCurrentProcessId"), VarSetCapacity( NID,444,0 ), NumPut( 444,NID ) DetectHiddenWindows, On NumPut( WinExist( A_ScriptFullPath " ahk_class AutoHotkey ahk_pid " PID),NID,4 ) DetectHiddenWindows, Off NumPut( 1028,NID,8 ), NumPut( hIcon1,NID,20), NumPut( 2,NID,12 ), IconDataHex:="" GoSub, IconData ; Create IconData buffer Loop 4 ; Obtain 4 Icon handles from IconData buffer hICon%A_Index% := DllCall( "CreateIconFromResourceEx", UInt,&IconData+( 296*(A_Index-1)) , UInt,0, Int,1, UInt,196608, Int,16, Int,16, UInt,0 ) ; Run, diskperf.exe -y ; Execute it once to enable Disk Performance monitoring. ORC:=0, OWC:=0, VarSetCapacity( DP,88,0 ) ; DISK_PERFORMANCE hDrv := DllCall( "CreateFile", Str,"\\.\PhysicalDrive0", UInt,0 ,UInt,3, UInt,0, UInt,3 , UInt,0, UInt,0 ) OnExit, QuitScript SetTimer, HDD_Monitor HDD_Monitor: DllCall( "DeviceIoControl", UInt,hDrv, UInt,0x70020, UInt,0, UInt,0, UInt,&DP, UInt,88 , UintP,nReturn, Uint,0 ) NRC:=NumGet(DP,40), NWC:=NumGet(DP,44), RC:=NRC-ORC, WC:=NWC-OWC, ORC:=NRC,OWC:=NWC IC := RC=0&&WC=0 ? 1 : RC!=0&&WC=0 ? 2 : RC=0&&WC!=0 ? 3 : RC!=0&&WC!=0 ? 4 : NumPut( hIcon%IC%,NID,20 ), DllCall( "shell32\Shell_NotifyIcon",UInt,0x1,UInt,&NID ) Return ; // end of auto-execute section // IconData: IconDataHex = ( join 280000001000000020000000010004000000000080000000000000000000000000000000000000000000000000 0080000080000000808000800000008000800080800000C0C0C001808080010000FF0000FF000100FFFF01FF00 0000FF00FF00FFFF0001FFFFFF0100000000000000000000000000000000000000000000000000000000000000 000000000000000000001910001910080000999000999008800019100019100880000000000000088087777777 777778800888888888888780008888888888887000088888888888880000000000000000000000000000000000 00000000000000FFFF0000FFFF0000FFFF00008007000000030000000100000000000000000000000000000000 000080000000C0000000E0000000FFFF0000FFFF0000FFFF000028000000100000002000000001000400000000 008000000000000000000000000000000000000000000000000000800000800000008080008000000080008000 80800000C0C0C001808080010000FF0000FF000100FFFF01FF000000FF00FF00FFFF0001FFFFFF010000000000 0000000000000000000000000000000000000000000000000000000000000000000000002A20001910080000AA A00099900880002A20001910088000000000000008808777777777777880088888888888878000888888888888 700008888888888888000000000000000000000000000000000000000000000000FFFF0000FFFF0000FFFF0000 8007000000030000000100000000000000000000000000000000000080000000C0000000E0000000FFFF0000FF FF0000FFFF00002800000010000000200000000100040000000000800000000000000000000000000000000000 000000000000000080000080000000808000800000008000800080800000C0C0C001808080010000FF0000FF00 0100FFFF01FF000000FF00FF00FFFF0001FFFFFF01000000000000000000000000000000000000000000000000 00000000000000000000000000000000001910002A20080000999000AAA00880001910002A2008800000000000 000880877777777777788008888888888887800088888888888870000888888888888800000000000000000000 0000000000000000000000000000FFFF0000FFFF0000FFFF000080070000000300000001000000000000000000 00000000000000000080000000C0000000E0000000FFFF0000FFFF0000FFFF0000280000001000000020000000 010004000000000080000000000000000000000000000000000000000000000000008000008000000080800080 0000008000800080800000C0C0C001808080010000FF0000FF000100FFFF01FF000000FF00FF00FFFF0001FFFF FF0100000000000000000000000000000000000000000000000000000000000000000000000000000000002A20 002A20080000AAA000AAA00880002A20002A200880000000000000088087777777777778800888888888888780 00888888888888700008888888888888000000000000000000000000000000000000000000000000FFFF0000FF FF0000FFFF00008007000000030000000100000000000000000000000000000000000080000000C0000000E000 0000FFFF0000FFFF0000FFFF0000 ) VarSetCapacity( IconData,( nSize:=StrLen(IconDataHex)//2) ) Loop %nSize% ; MCode by Laszlo Hars: http://www.autohotkey.com/forum/viewtopic.php?t=21172 NumPut( "0x" . SubStr(IconDataHex,2*A_Index-1,2), IconData, A_Index-1, "Char" ) Return QuitScript: DllCall("CloseHandle", "Uint", hDrv) ExitApp Return