#Include <FontConstants.au3>
#Include <WinAPIEx.au3>
Opt('TrayAutoPause', 0)
Global $hAutoIt = WinGetHandle(AutoItWinGetTitle())
Global $Count = 0, $hPrev = 0
_SetAutoItIcon(0)
While 1
_SetAutoItIcon(_GetLoadPerc())
Sleep(100)
WEnd
Func _SetAutoItIcon($iCount)
Local $hDC, $hBitmap, $hMask, $hIcon, $hFont, $tNID, $tRect
$hDC = _WinAPI_CreateCompatibleDC(0)
$hBitmap = _WinAPI_CreateSolidBitmap(0, 0xFFFFFF, 16, 16)
$hMask = _WinAPI_CreateBitmap(16, 16, 1, 1)
$hFont = _WinAPI_CreateFont(16, 0, 0, 0, $FW_NORMAL, 0, 0, 0, $DEFAULT_CHARSET, $OUT_DEFAULT_PRECIS, $CLIP_DEFAULT_PRECIS, $ANTIALIASED_QUALITY, $DEFAULT_PITCH, 'Tahoma')
$tRect = _WinAPI_CreateRectEx(0, 0, 16, 16)
_WinAPI_SelectObject($hDC, $hBitmap)
_WinAPI_SelectObject($hDC, $hFont)
_WinAPI_DrawText($hDC, $iCount, $tRect, BitOR($DT_CENTER, $DT_SINGLELINE, $DT_VCENTER))
_WinAPI_DeleteDC($hDC)
$hIcon = _WinAPI_CreateIconIndirect($hBitmap, $hMask)
_WinAPI_DeleteObject($hBitmap)
_WinAPI_DeleteObject($hMask)
_WinAPI_DeleteObject($hFont)
$tNID = DllStructCreate($tagNOTIFYICONDATA)
DllStructSetData($tNID, 'Size', DllStructGetSize($tNID))
DllStructSetData($tNID, 'hWnd', $hAutoIt)
DllStructSetData($tNID, 'Flags', $NIF_ICON)
DllStructSetData($tNID, 'ID', 1)
DllStructSetData($tNID, 'hIcon', $hIcon)
_WinAPI_ShellNotifyIcon($NIM_MODIFY, $tNID)
If $hPrev Then
_WinAPI_DestroyIcon($hPrev)
EndIf
$hPrev = $hIcon
EndFunc ;==>_SetAutoItIcon
Func _GetLoadPerc($strComputer = "localhost")
$colItems = ""
$objWMIService = ObjGet("winmgmts:\\" & $strComputer & "\root\CIMV2")
$colItems = $objWMIService.ExecQuery("SELECT * FROM Win32_Processor", "WQL", 0x10 + 0x20)
If IsObj($colItems) then
For $objItem In $colItems
Return $objItem.LoadPercentage
Next
Endif
Return 10000000;;;Return some stupid value as an obvious error.
EndFunc