Wow, sieht super aus Raupi, gleich mal gesichert.
Per Zufall habe ich entdeckt, dass es die Funktion "_WinAPI_ShellNotifyIcon" gibt.
Spricht was dagegen, statt deinem dllcall diese zu verwenden?
Außer habe ich probiert, ob ich statt dem einfachen weißen Bild ein Icon verwenden kann. Leider wird da nicht gezählt.
Siehst du was da falsch ist?
AutoIt
#Region ;************ Includes ************
#Include <WinAPIShellEx.au3>
#include <WindowsConstants.au3>
#include <GDIPlus.au3>
#EndRegion ;************ Includes ************
Global Const $AUT_WM_NOTIFYICON = $WM_USER + 1 ; Application.h
Global Const $AUT_NOTIFY_ICON_ID = 1 ; Application.h
AutoItWinSetTitle("this is a test 123")
Global $TRAY_ICON_GUI = WinGetHandle(AutoItWinGetTitle()) ; Internal AutoIt GUI
;;;
_GDIPlus_Startup()
Local $hBitmap, $hImage, $hGraphic, $hIcon
$hBitmap = _WinAPI_CreateSolidBitmap(0, 0xFFFFFF, 16, 16)
$hImage = _GDIPlus_BitmapCreateFromHBITMAP($hBitmap)
$hGraphic = _GDIPlus_ImageGetGraphicsContext($hImage)
For $i = 99 To 1 Step -1
_GDIPlus_GraphicsClear($hGraphic, 0xFFFFFFFF)
_GDIPlus_GraphicsDrawString($hGraphic, $i, (StringLen($i) - 2) * -3, 2, "Arial", 8)
;~ $hIcon = _GDIPlus_BitmapCreateHICONFromBitmap($hImage)
$hIcon = _WinAPI_ShellExtractIcon(@SystemDir & '\shell32.dll', 166, 16, 16)
_Tray_SetHIcon($hIcon)
_WinAPI_DestroyIcon($hIcon)
Sleep(200)
Next
_GDIPlus_ImageDispose($hImage)
_GDIPlus_GraphicsDispose($hGraphic)
_WinAPI_DeleteObject($hBitmap)
_GDIPlus_Shutdown()
;;;
Func _Tray_SetHIcon($hIcon)
Local $tNOTIFY = DllStructCreate($tagNOTIFYICONDATA)
DllStructSetData($tNOTIFY, "Size", DllStructGetSize($tNOTIFY))
DllStructSetData($tNOTIFY, "hWnd", $TRAY_ICON_GUI)
DllStructSetData($tNOTIFY, "ID", $AUT_NOTIFY_ICON_ID)
DllStructSetData($tNOTIFY, "hIcon", $hIcon)
DllStructSetData($tNOTIFY, "Flags", BitOR($NIF_ICON, $NIF_MESSAGE))
DllStructSetData($tNOTIFY, "CallbackMessage", $AUT_WM_NOTIFYICON)
Local $aRet = DllCall("shell32.dll", "int", "Shell_NotifyIconW", "dword", $NIM_MODIFY, "ptr", DllStructGetPtr($tNOTIFY))
;~ Local $aRet = _WinAPI_ShellNotifyIcon($NIM_MODIFY, $tNOTIFY)
If (@error) Then Return SetError(1, 0, 0)
;~ Return $aRet[0] <> 0
EndFunc ;==>_Tray_SetHIcon
Func _GDIPlus_BitmapCreateHICONFromBitmap($hBitmap)
Local $hIcon = DllCall($__g_hGDIPDll, "int", "GdipCreateHICONFromBitmap", "hwnd", $hBitmap, "int*", 0)
If @error Or Not $hIcon[0] Then Return SetError(@error, @extended, $hIcon[2])
Return $hIcon[2]
EndFunc ;==>_GDIPlus_BitmapCreateHICONFromBitmap
Alles anzeigen