Hallo Zusammen,
kann man ...
_GUICtrlStatusBar_SetIcon($StatusBar, 0, _WinAPI_LoadShell32Icon(238))
... das Icon auch animiert darstellen? Also dass es sich dreht? Das ist das Icon, welches so eine Synchronisation darstellt.
Lieben Gruß, Anna
Hallo Zusammen,
kann man ...
_GUICtrlStatusBar_SetIcon($StatusBar, 0, _WinAPI_LoadShell32Icon(238))
... das Icon auch animiert darstellen? Also dass es sich dreht? Das ist das Icon, welches so eine Synchronisation darstellt.
Lieben Gruß, Anna
Ob man ein Icon auch animiert darstellen kann, davon hab ich noch nix gelesen.
Ich hab da mal was gezaubert, vielleicht kannst du damit was anfangen.
#include <APIConstants.au3>
#include <GUIConstantsEx.au3>
#include <GuiImageList.au3>
#include <GuiStatusBar.au3>
Global $ResFile = @ScriptDir & "\resourcen.dll", $iCount = 0
Global $bState = False
Global $hImage = _GUIImageList_Create(16, 16, 5)
_GUIImageList_AddIcon($hImage, $ResFile, 0)
_GUIImageList_AddIcon($hImage, $ResFile, 1)
_GUIImageList_AddIcon($hImage, $ResFile, 2)
_GUIImageList_AddIcon($hImage, $ResFile, 3)
_GUIImageList_AddIcon($hImage, $ResFile, 4)
_GUIImageList_AddIcon($hImage, $ResFile, 5)
_GUIImageList_AddIcon($hImage, $ResFile, 6)
_GUIImageList_AddIcon($hImage, $ResFile, 7)
_GUIImageList_AddIcon($hImage, $ResFile,
_GUIImageList_AddIcon($hImage, $ResFile, 9)
Global $hStatus
Global $aParts[4] = [75, 150, 300, 400]
Global $hGUI = GUICreate("ImageList Get Icon", 400, 300)
Global $hButton = GUICtrlCreateButton("Start Animation", 10, 10, 120, 17)
Global $hStatus = _GUICtrlStatusBar_Create($hGUI)
_GUICtrlStatusBar_SetParts($hStatus, $aParts)
_GUICtrlStatusBar_SetText($hStatus, "Part 1")
_GUICtrlStatusBar_SetText($hStatus, "Part 2", 1)
GUISetState()
While 1
$nMsg = GUIGetMsg()
Switch $nMsg
Case $hButton
$bState = Not $bState
If $bState Then
GUICtrlSetData($hButton, "Stop Animation ")
AdlibRegister("UpdateIcon", 75)
Else
GUICtrlSetData($hButton, "Start Animation ")
AdlibUnRegister("UpdateIcon")
EndIf
Case $GUI_EVENT_CLOSE
Exit
EndSwitch
WEnd
Func UpdateIcon()
$iCount += 1
If $iCount > 9 Then $iCount = 0
_GUICtrlStatusBar_SetIcon($hStatus, 3, _GUIImageList_GetIcon($hImage, $iCount))
EndFunc ;==>UpdateIcon
Für die Animation des Icons, musst du die Angehängte DLL-Datei in das Scriptverzeichnis kopieren.
Ps: Kann die DLL Datei nicht direkt hochladen, deshalb die Zip Datei.
lg Martina
hmm.. Ja, das sieht ganz gut aus. Aber dann muss ich mal schauen, wie ich mein Icon in die dll bekomme.
Und wie bekomme ich es flüssiger von der Animation hin?
Animierte Gifs kann ich nicht einblenden, oder?
Du kannst 1.st keine Gifs in eine Dll Einbinden.
2. Du kannst mit Resource Hacker > DLL's bearbeiten. (Resourcen hinzufügen / editieren / löschen)
Du kannst 1.st keine Gifs in eine Dll Einbinden.
Sagt wer? Schau mal in meine Signatur
AnnaM, wie schnell soll sich den deiner Meinung nach das Icon drehen?
Icon auf Speed
#Region - Timestamp
; 2012-12-14 20:34:16
#EndRegion
#include <APIConstants.au3>
#include <GUIConstantsEx.au3>
#include <GuiImageList.au3>
#include <GuiStatusBar.au3>
#include <Timers.au3>
Global $ResFile = @ScriptDir & "\resourcen.dll", $iCount = 0
Global $bState = False
Global $hImage = _GUIImageList_Create(16, 16, 5)
_GUIImageList_AddIcon($hImage, $ResFile, 0)
;_GUIImageList_AddIcon($hImage, $ResFile, 1)
_GUIImageList_AddIcon($hImage, $ResFile, 2)
;_GUIImageList_AddIcon($hImage, $ResFile, 3)
_GUIImageList_AddIcon($hImage, $ResFile, 4)
;_GUIImageList_AddIcon($hImage, $ResFile, 5)
_GUIImageList_AddIcon($hImage, $ResFile, 6)
;_GUIImageList_AddIcon($hImage, $ResFile, 7)
_GUIImageList_AddIcon($hImage, $ResFile,
;_GUIImageList_AddIcon($hImage, $ResFile, 9)
Global $Timer
Global $hStatus
Global $aParts[4] = [75, 150, 300, 400]
Global $hGUI = GUICreate("ImageList Get Icon", 400, 300)
Global $hButton = GUICtrlCreateButton("Start Animation", 10, 10, 120, 17)
Global $hStatus = _GUICtrlStatusBar_Create($hGUI)
_GUICtrlStatusBar_SetParts($hStatus, $aParts)
_GUICtrlStatusBar_SetText($hStatus, "Part 1")
_GUICtrlStatusBar_SetText($hStatus, "Part 2", 1)
GUISetState()
While 1
$nMsg = GUIGetMsg()
Switch $nMsg
Case $hButton
$bState = Not $bState
If $bState Then
GUICtrlSetData($hButton, "Stop Animation ")
$Timer= _Timer_SetTimer($hGUI,25, "UpdateIcon")
Else
GUICtrlSetData($hButton, "Start Animation ")
_Timer_KillTimer($hGUI,$Timer)
EndIf
Case $GUI_EVENT_CLOSE
Exit
EndSwitch
WEnd
Func UpdateIcon($hWnd, $Msg, $iIDTimer, $dwTime)
#forceref $hWnd, $Msg, $iIDTimer, $dwTime
$iCount += 1
If $iCount > 4 Then $iCount = 0
_GUICtrlStatusBar_SetIcon($hStatus, 3, _GUIImageList_GetIcon($hImage, $iCount))
EndFunc ;==>UpdateIcon
Wenn du deinen Icon in Thread postest, dann kann ich oder Martina es dir auch in eine Dll packen.
Das Icon 238 aus der Shell32.dll ist kein Animiertes Icon, btw.
Hahaha
Das Icon ist cool. Ja, so schnell wollte ich es dann doch nicht.
Ich habe gerade ein typisches Ladesymbol als animiertes gif und versuche das gerade mit Hilfe deines Beitrags in die Statusleiste zu bekommen.
Es will sich nicht bewegen Im ResourceHacker bewegt es sich noch *gg*
http://de.wikipedia.org/wiki/Datei:Ladesymbol.gif
Ich würde das Symbol nutzen unter Nennung der CC-Lizenz.
BTW: Ich habe gerade im englischen Forum dieses hier gesehen: http://www.autoitscript.com/forum/topic/10…di/#entry716691
Vielleicht bekomme ich es so hin Edit: Nach langem hin und her bekomme ich das animierte gif nur in der GUI dargestellt und nicht wie gewollt in die Statusleiste.
Sollte man hier vlt das GIF in ein AVI umwandeln? Ich habe gesehen, dass es auch so gehen könnte.
Wieso machst du dir eigentlich selbst soviel Steß?
Benutze doch einfach ein oder mehrere Labels als Statuszeile.
Damit kannst du alles darstellen, nach was dir gerade der Sinn steht.
Naja, ich habe eine Statusbar integriert und möchte doch nur das animierte Gif (s.o.) einblenden und nicht alles umbasteln.
Schade, dass sowas nicht geht. Ich wäre auch mit der Lösung von Geisterhexe zufrieden. Wandel ich aber das gif mit IrfanView in Einzelbilder um und speichere diese als ICO, damit ich diese wiederum in eine DLL speichern kann, werden die einzelnen ICOs voll hässlich von der Grafik her. Keine Ahnung warum.
Darum habe ich nach einer anderen Lösung gesucht.
Kann ich denn wenigstens im Label eine gif anzeigen lassen?
Um Standardcontros in der Statusbar anzuzeigen kannst du _GUICtrlStatusBar_EmbedControl verwenden. Hier einmal ein Beispiel mit einem Avi-Control:
; *** Start added by AutoIt3Wrapper ***
#include <WindowsConstants.au3>
; *** End added by AutoIt3Wrapper ***
#Region ;**** Directives created by AutoIt3Wrapper_GUI ****
#AutoIt3Wrapper_UseUpx=n
#AutoIt3Wrapper_Add_Constants=n
#EndRegion ;**** Directives created by AutoIt3Wrapper_GUI ****
#include <GuiConstantsEx.au3>
#include <GuiStatusBar.au3>
#include <SendMessage.au3>
Opt('MustDeclareVars', 1)
[/autoit] [autoit][/autoit] [autoit]$Debug_SB = False ; Check ClassName being passed to functions, set to True and use a handle to another control to see it work
[/autoit] [autoit][/autoit] [autoit]_Main()
[/autoit] [autoit][/autoit] [autoit]Func _Main()
[/autoit] [autoit][/autoit] [autoit]Local $hGUI, $hani, $hInput, $input, $ani, $hStatus
Local $aParts[4] = [80, 160, 300, -1]
; Create GUI
$hGUI = GUICreate("StatusBar Embed Control", 400, 300)
;===============================================================================
; defaults to 1 part, no text
$hStatus = _GUICtrlStatusBar_Create($hGUI)
_GUICtrlStatusBar_SetMinHeight($hStatus, 40)
;===============================================================================
GUISetState()
; Initialize parts
_GUICtrlStatusBar_SetParts($hStatus, $aParts)
_GUICtrlStatusBar_SetText($hStatus, "Part 1")
_GUICtrlStatusBar_SetText($hStatus, "Part 2", 1)
; Embed a avi
$ani = GUICtrlCreateAvi("ykohl.avi", -1, 0, 0, 16, 16)
$hani = GUICtrlGetHandle($ani)
_GUICtrlStatusBar_EmbedControl($hStatus, 2, $hani)
GUICtrlSetState($ani, 1)
$input = GUICtrlCreateInput("This is Embeded", 0, 0, 100)
$hInput = GUICtrlGetHandle($input)
_GUICtrlStatusBar_EmbedControl($hStatus, 3, $hInput, 3)
; Loop until user exits
Do
Until GUIGetMsg() = $GUI_EVENT_CLOSE
GUIDelete()
EndFunc ;==>_Main
Dafür wird autoit.de/wcf/attachment/17692/ benötigt. Obwohl die Datei auf GIF endet ist es doch eine AVI. AVI's lassen sich hier aber nicht hochladen.
mfg autoBert
Hallo autoBert,
leider zeigt dein Script nichts an der Stelle des AVIs an. Ich habe es auch als .avi gespeichert.
Ich habe ein Win7 64bit.
EDIT:
Eine NULL macht es sichtbar
[autoit]$ani = GUICtrlCreateAvi("ykohl.avi", 0, 0, 0, 16, 16)
[/autoit]Danke, das wars. Klasse!
Echt supi. Danke
Eine Frage habe ich aber noch: Wie bekommst du aus einem GIF ein AVI? Ich hab schon viele Converter probiert und immer sagt er mir, ich habe eine falsche Bilddatei oder so etwas ??
Das ist keine zu GIF umgewandelte AVI-Datei.
autoBert hat lediglich die Datei umbenannt, da sich AVI-Dateien hier im Forum nicht hochladen lassen (Das Forum unterscheidet nach Dateiendung, AutoIt nach Inhalt).
Du könntest die Datei auch ykohl.txt nennen, und es würde funktionieren. Dateiendungen dienen nur dazu, die Dateien mit einem Standardprogramm zu verknüpfen.
lg chess
Das ist keine zu GIF umgewandelte AVI-Datei.
autoBert hat lediglich die Datei umbenannt, da sich AVI-Dateien hier im Forum nicht hochladen lassen (Das Forum unterscheidet nach Dateiendung, AutoIt nach Inhalt).Du könntest die Datei auch ykohl.txt nennen, und es würde funktionieren. Dateiendungen dienen nur dazu, die Dateien mit einem Standardprogramm zu verknüpfen.
lg chess
chessi, es geht nicht um die Datei, welche autoBert gepostet hat.
Anna will eine animated Gif in eine Avi umwandeln. Siehe Post 6 http://de.wikipedia.org/wiki/Datei:Ladesymbol.gif
Ja genau
Und vor allem muss der Hintergrund dann transparent sein, so wie es auch beim Kohl der Fall ist
Für jeden Tipp wäre ich dankbar.
Also nun habe ich schon 5 Konverer hinter mir. Alle machen das ganz brav, aber dann kommt die Fehlermeldung, dass es ein ungültiges Bild sei. "...ist entweder nicht für die Ausführung unter Windows vorgesehen oder enthält einen Fehler...". Was nun?
Also ich habs so gemacht. Kommt die gleiche Fehlermeldung. Gerne kannst du es probieren, das Bild habe ich ja oben schon gepostet
Ich habe keine Ahnung mehr, wieso es nicht geht. .. son mist. So lange bin ich schon dran.
Hm, hast recht, geht nicht... Das ist sehr seltsam...
lg chess
Hat Raupi noch eine Idee?