- Offizieller Beitrag
Wenn ihr eine UDF erstellt, die Funktionen der GDIPlus.au3 verwendet, müßt ihr ja bei der Anwendung beachten, ob nicht bereits das aufrufende Skript GDIPlus gestartet hat.
Ich verwende dazu die nachfolgende Lösung, vielleicht auch für euch interessant:
Edit:
Wie sich gezeigt hat, ist diese Überprüfung nicht erforderlich, da GDIP intern die Anzahl _Startup/_ShutDown zählt und verrechnet.
Aber nun wißt ihr, wie man es machen kann, wenn es nötig wäre.
Func _Irgendeine_UDF()
;....
_GDIPlus_CheckRun() ; <== statt _GDIPlus_Startup()
; beliebige GDIPlus-Funktionen
_GDIPlus_CheckRun(0) ; <== statt _GDIPlus_ShutDown()
;....
EndFunc
;===============================================================================
; Function Name....: _GDIPlus_CheckRun
; Description......: Führt _GDIPlus_Startup/ _ShutDown nur aus, wenn GDIP nicht aktiv
; Parameter(s).....: $_iStart 1 (Standard) für _Startup, 0 für _ShutDown
; Requirement(s)...: #include <GDIPlus.au3>
; Author(s)........: BugFix ( [email='bugfix@autoit.de'][/email] )
;===============================================================================
Func _GDIPlus_CheckRun($_iStart=1)
Local Static $fOpenLocal = False ; nur wenn GDI+ nicht aktiv wird es lokal geöffnet
If $_iStart = 1 Then
If $ghGDIPDll = 0 Then ; Globales GDIPlus.Dll - Handle aus der GDIPlus.au3
$fOpenLocal = True
_GDIPlus_Startup()
EndIf
Else
If $fOpenLocal Then
$fOpenLocal = False
_GDIPlus_ShutDown()
EndIf
EndIf
EndFunc ;==>_GDIPlus_CheckRun