Na dann herzlich willkommen in unserem bescheidenen Forum ;).
Dein Nickname ist ja schon mal genau so kreativ wie meiner
.
Beiträge von name22
-
-
Das "Hilfe & Unterstützung" Subforum ist kein Ort für Requests der Art "mach mal bitte...". Hier gibt es Antworten auf Fragen und Unterstützung bei Problemen sowie ggf. Anregungen für Scripte.
Wenn du aber nicht vor hast selbst etwas an deinem Projekt zu machen dann gehört das eher in "Programmieranfragen".
Ich vermute stark, dass dein Problem weniger mit dem Script sondern eher mit dem Exportprogramm zusammenhängt. Wenn du dir nämlich die Controlfunktionen anschaust, stellst du fest, dass nirgendwo eine Größe für die Datensätze festgelegt wird also wird das vermutlich durch das externe Programm bestimmt.
Eventuell könnte man das Script so ergänzen, dass es die exportierten Datensätze einzeln ausliest und in eine einzige Exceldatei speichert. Das ist zwar keine schöne sondern eher eine umständliche Lösung, aber es müsste funktionieren.
Um das zu tun müsste man aber wissen die diese Exceldateien aufgebaut sind wenn mich nicht alles täuscht. -
Das hatten wir schon mal, und der Server war ziemlich leer...
Wenn du das machen willst, dann mach es. Niemand wird dich aufhalten ;). Aber erwarte nicht all zu viele Besucher ^^. -
Du könntest die FFMPEG.exe hier downloaden. Da wird dir auch kein Trojaner über den weg laufen ^^.
Dann solltest du dir mal die Dokumentation auf der Homepage anschauen, da sind eine Menge Beispiele für Kommandozeilenparameter drin die das machen was du willst. Du musst allerdings beachten, dass dieser Prozess nicht unbedingt der selbe für alle Codecs und Container ist. Das heißt du solltest die Kommandozeilen auf die einzelnen Codecs anpassen um die optimale Qualität zu erhalten. -
1. Eine genauere Fehlerbeschreibung als "funktioniert nicht" wäre angebracht.
2. $newApplication.IpVersion = 2 ?
... Die älteste Version des Internet Protocols die ich kenne ist IPv3 und die ist ja schon praktisch antik... Oder verstehe ich hier etwas falsch? -
Wenn keiner das eigentliche Problem kennt, dann kann auch keiner eine Lösung formulieren...
Hast du schon die bekannten "tricks" versucht? Cache leeren, Addons deaktivieren etc..
Ich vermute dahinter ein Javascript Problem, aber wirklich eingrenzen kann ich das nicht. Besonders nicht weil ich niemals freiwillig Google Chrome installieren werde. -
Sobald sich etwas an deiner Grafik verändern soll, musst du alles komplett neu zeichnen, was danach noch zu sehen sein soll. Zuerst das Objekt das am zuunterst liegen soll (Hintergrund) und dann Schritt für Schritt nach vorne.
Wenn du den Baum nicht neu zeichnest, dann wird er vom Hintergrund oder einer der anderen Bilder einfach übermalt. So funktioniert nun mal GDI+. -
In deinem Script wird soweit ich sehen kann nirgendwo ein Baum gezeichnet... Natürlich kann ich auch nicht testen wo dein Problem liegt, da mir die Bilder fehlen.
Aufgefallen ist mir an deinem Script:
- Du verwendest gerne Englische und Deutsche Begriffe in einer seltsamen Mixtur. Das macht es für andere schwer den Code zu verstehen. Halte dich am besten an Englische Begriffe, wie der Rest der Programmiersprache auch ;).
- Du entfernst nie die erzeugten GDI+ Objekte aus dem Arbeitsspeicher. Die Funktionen gibt es nicht umsonst, und in den Hilfebeispielen werden sie auch nicht zum Spaß verwendet. Ich hab sie mal bei dir eingefügt.Das ist natürlich längst nicht alles was man an deinem Script verbessern könnte, aber so sollte es erstmal funktionieren...
Spoiler anzeigen
[autoit]#RequireAdmin
[/autoit] [autoit][/autoit] [autoit]
#include <GUIConstantsEx.au3>
#include <WindowsConstants.au3>
#include <GDIPlus.au3>
#include <Misc.au3>
#region ### START Koda GUI section ### Form=
$Form1 = GUICreate("Form1", 623, 446, @DesktopWidth / 2, 124) ; Später wieder einbauen ! $WS_POPUPWINDOW
GUISetState(@SW_SHOW)
#endregion ### END Koda GUI section ###Global $aCharakter[4] = ['player_img\up_player.png', 'player_img\down_player.png', 'player_img\left_player.png', 'player_img\right_player.png'] ; [0]UP - [1]DOWN -[2]LEFT -[3]RIGHT
[/autoit] [autoit][/autoit] [autoit]
Global $aObjekte[2] = ['objekte_img\Background.png', 'objekte_img\Baum.png'] ; [0]BK -[1]BAUMGlobal $FigurUp, $FigurDown, $FigurLeft, $FigurRight
[/autoit] [autoit][/autoit] [autoit][/autoit] [autoit]
Global $FigurUpHeight, $FigurDownHeight, $FigurLeftHeight, $FigurRightHeight
Global $FigurUpWidth, $FigurDownWidth, $FigurLeftWidth, $FigurRightWidth
Global $FigurUpVer, $FigurDownVer, $FigurLeftVer, $FigurRightVer
Global $PlayerPos_X = 20, $PlayerPos_Y = 20
Global $Background, $BackgroundHeight, $BackgroundWidth, $BackgroundVer
Global $Baum, $BaumHeight, $BaumWidth, $BaumVer
Global $hGrafik, $hBitmap, $hBuffer_GDIPlus_Startup()
[/autoit] [autoit][/autoit] [autoit]
;////////////// Laden Objekte ///////////////////////////
$FigurUp = _GDIPlus_ImageLoadFromFile($aCharakter[0])
$FigurDown = _GDIPlus_ImageLoadFromFile($aCharakter[1])
$FigurLeft = _GDIPlus_ImageLoadFromFile($aCharakter[2])
$FigurRight = _GDIPlus_ImageLoadFromFile($aCharakter[3])
$Background = _GDIPlus_ImageLoadFromFile($aObjekte[0])
$Baum = _GDIPlus_ImageLoadFromFile($aObjekte[1])
;///////////// Height der Objekte ///////////////////////
$FigurUpHeight = _GDIPlus_ImageGetHeight($FigurUp)
$FigurDownHeight = _GDIPlus_ImageGetHeight($FigurDown)
$FigurLeftHeight = _GDIPlus_ImageGetHeight($FigurLeft)
$FigurRightHeight = _GDIPlus_ImageGetHeight($FigurRight)
$BackgroundHeight = _GDIPlus_ImageGetHeight($Background)
$BaumHeight = _GDIPlus_ImageGetHeight($Baum)
;////////////// Width der Objekte ////////////////////////
$FigurUpWidth = _GDIPlus_ImageGetWidth($FigurUp)
$FigurDownWidth = _GDIPlus_ImageGetWidth($FigurDown)
$FigurLeftWidth = _GDIPlus_ImageGetWidth($FigurLeft)
$FigurRightWidth = _GDIPlus_ImageGetWidth($FigurRight)
$BackgroundWidth = _GDIPlus_ImageGetWidth($Background)
$BaumWidth = _GDIPlus_ImageGetWidth($Baum)
;///////////// Verhältnise der Objekte ///////////////////
$FigurUpVer = $FigurUpHeight / $FigurUpWidth
$FigurDownVer = $FigurDownHeight / $FigurDownWidth
$FigurLeftVer = $FigurLeftHeight / $FigurLeftWidth
$FigurRightVer = $FigurRightHeight / $FigurRightWidth
$BackgroundVer = $BackgroundHeight / $BackgroundWidth
$BaumVer = $BaumHeight / $BaumWidth;//////////// Der Buffer ///////////////////////////////////
[/autoit] [autoit][/autoit] [autoit]
$hGrafik = _GDIPlus_GraphicsCreateFromHWND($Form1)
$hBitmap = _GDIPlus_BitmapCreateFromGraphics(623, 446, $hGrafik)
$hBuffer = _GDIPlus_ImageGetGraphicsContext($hBitmap)While 1
[/autoit] [autoit][/autoit] [autoit]
$nMsg = GUIGetMsg()
Switch $nMsg
Case $GUI_EVENT_CLOSE
_Exit()
EndSwitch
_Steuerung()
WEndFunc _Exit()
[/autoit] [autoit][/autoit] [autoit]
_GDIPlus_GraphicsDispose($hGrafik)
_GDIPlus_GraphicsDispose($hBuffer)
_GDIPlus_BitmapDispose($hBitmap)
_GDIPlus_ImageDispose($FigurDown)
_GDIPlus_ImageDispose($FigurLeft)
_GDIPlus_ImageDispose($FigurRight)
_GDIPlus_ImageDispose($FigurUp)
_GDIPlus_ImageDispose($Background)
_GDIPlus_ImageDispose($Baum)
_GDIPlus_Shutdown()
Exit
EndFunc ;==>_ExitFunc _Objekte_Draw($Obj, $Width, $Verhealtnis)
[/autoit] [autoit][/autoit] [autoit][/autoit] [autoit][/autoit] [autoit][/autoit] [autoit]
_GDIPlus_GraphicsDrawImageRect($hBuffer, $Background, 0, 0, 632, 446)
_GDIPlus_GraphicsDrawImageRect($hBuffer, $Baum, 20, 20, $BaumWidth, $BaumHeight)
_GDIPlus_GraphicsDrawImageRect($hBuffer, $Obj, $PlayerPos_X, $PlayerPos_Y, $Width, 20 * $Verhealtnis)
_GDIPlus_GraphicsDrawImageRect($hGrafik, $hBitmap, 0, 0, 632, 446)
EndFunc ;==>_Objekte_DrawFunc _Steuerung()
[/autoit]
Select
Case _IsPressed(25) And Not $PlayerPos_X <= 0 ; LEFT
$PlayerPos_X -= 10
_Objekte_Draw($FigurLeft, 20, $FigurLeftVer)
Case _IsPressed(26) And Not $PlayerPos_Y <= 0 ; UP
$PlayerPos_Y -= 10
_Objekte_Draw($FigurUp, 20, $FigurUpVer)
Case _IsPressed(27) And Not $PlayerPos_X <= 610 ; RIGHT
$PlayerPos_X += 10
_Objekte_Draw($FigurRight, 20, $FigurRightVer)
Case _IsPressed(28) And Not $PlayerPos_Y <= 440 ; DOWN
$PlayerPos_Y += 10
_Objekte_Draw($FigurDown, 20, $FigurDownVer)
EndSelect
EndFunc ;==>_Steuerung -
Dein Script hat ein paar kleine Fehler... Du brauchst doch nicht 2 Grafiken, das macht doch gar keinen Sinn...
Ich hab es mal entsprechend geändert, hast du dir das so vorgestellt?Spoiler anzeigen
[autoit]#include <WindowsConstants.au3>
[/autoit] [autoit][/autoit] [autoit]
#include <GUIConstants.au3>
#include <GDIPlus.au3>
#include <WinAPI.au3>; - Author: name22 (http://www.autoit.de)
[/autoit] [autoit][/autoit] [autoit]Opt("GUIOnEventMode", 1)
[/autoit] [autoit][/autoit] [autoit]$iWidth = 600
[/autoit] [autoit][/autoit] [autoit]
$iHeight = 150$sFontName = "Arial"
[/autoit] [autoit][/autoit] [autoit]
$iARGB_Font = 0xA0000000$nIntervall = 200
[/autoit] [autoit][/autoit] [autoit]$hWnd = GUICreate("Clock", $iWidth, $iHeight, Default, Default, $WS_POPUP, $WS_EX_LAYERED)
[/autoit] [autoit][/autoit] [autoit]
GUICtrlCreateLabel("", 0, 0, $iWidth, $iHeight, Default, $GUI_WS_EX_PARENTDRAG)
GUISetState()$hDC_Window = _WinAPI_GetDC($hWnd)
[/autoit] [autoit][/autoit] [autoit]
$hDC_Buffer = _WinAPI_CreateCompatibleDC($hDC_Window)
$hBitmap = _WinAPI_CreateCompatibleBitmap($hDC_Window, $iWidth, $iHeight)
_WinAPI_SelectObject($hDC_Buffer, $hBitmap)_GDIPlus_Startup()
[/autoit] [autoit][/autoit] [autoit]$hGraphics = _GDIPlus_GraphicsCreateFromHDC($hDC_Buffer)
[/autoit] [autoit][/autoit] [autoit]
_GDIPlus_GraphicsSetSmoothingMode($hGraphics, 2)
_GDIPlus_GraphicsSetTextRenderingHint($hGraphics, 3)$hStringFormat = _GDIPlus_StringFormatCreate()
[/autoit] [autoit][/autoit] [autoit]
$hFontFamily = _GDIPlus_FontFamilyCreate($sFontName)
$hFont_Time = _GDIPlus_FontCreate($hFontFamily, 100, 1, 3)
$hFont_Sec = _GDIPlus_FontCreate($hFontFamily, 50, 1, 3)
$hBrush = _GDIPlus_BrushCreateSolid($iARGB_Font)$tSize = DllStructCreate($tagSIZE)
[/autoit] [autoit][/autoit] [autoit]
$pSize = DllStructGetPtr($tSize)
DllStructSetData($tSize, "X", $iWidth)
DllStructSetData($tSize, "Y", $iHeight)
$tSource = DllStructCreate($tagPOINT)
$pSource = DllStructGetPtr($tSource)
$tBlend = DllStructCreate($tagBLENDFUNCTION)
$pBlend = DllStructGetPtr($tBlend)
DllStructSetData($tBlend, "Alpha", 255)
DllStructSetData($tBlend, "Format", 1)_UpdateTime()
[/autoit] [autoit][/autoit] [autoit]
AdlibRegister("_UpdateTime", $nIntervall)GUIRegisterMsg($WM_PAINT, "_WM_PAINT")
[/autoit] [autoit][/autoit] [autoit]
GUISetOnEvent($GUI_EVENT_RESTORE, "_WM_PAINT")
GUISetOnEvent($GUI_EVENT_CLOSE, "_Exit")
OnAutoItExitRegister("_Shutdown")While Sleep(10000)
[/autoit] [autoit][/autoit] [autoit]
WEndFunc _UpdateTime()
[/autoit] [autoit][/autoit] [autoit]
Local Static $sCurTime = "", $sCurSec = -1, $sNewTime, $sNewSec, $tLayout = _GDIPlus_RectFCreate()$sNewTime = @HOUR & ":" & @MIN
[/autoit] [autoit][/autoit] [autoit]
$sNewSec = ":" & @SEC
If $sNewTime = $sCurTime And $sNewSec = $sCurSec Then Return 0$sCurTime = $sNewTime
[/autoit] [autoit][/autoit] [autoit]
$sCurSec = $sNewSec
$aMeasure_Time = _GDIPlus_GraphicsMeasureString($hGraphics, $sCurTime, $hFont_Time, $tLayout, $hStringFormat)
$iStringWidth_Time = DllStructGetData($aMeasure_Time[0], "Width")
$iStringHeight_Time = DllStructGetData($aMeasure_Time[0], "Height")
$aMeasure_Sec = _GDIPlus_GraphicsMeasureString($hGraphics, $sCurSec, $hFont_Sec, $tLayout, $hStringFormat)
$iStringWidth_Sec = DllStructGetData($aMeasure_Sec[0], "Width")
$iStringHeight_Sec = DllStructGetData($aMeasure_Sec[0], "Height")
DllStructSetData($aMeasure_Time[0], "X", $iWidth / 2 - ($iStringWidth_Time + $iStringWidth_Sec + 30) / 2)
DllStructSetData($aMeasure_Time[0], "Y", $iHeight / 2 - $iStringHeight_Time / 2)
DllStructSetData($aMeasure_Sec[0], "X", DllStructGetData($aMeasure_Time[0], "X") + $iStringWidth_Time - 30)
DllStructSetData($aMeasure_Sec[0], "Y", DllStructGetData($aMeasure_Time[0], "Y") + $iStringHeight_Time - $iStringHeight_Sec - 25)_GDIPlus_GraphicsClear($hGraphics, 0)
[/autoit] [autoit][/autoit] [autoit]
_GDIPlus_GraphicsDrawStringEx($hGraphics, $sCurTime, $hFont_Time, $aMeasure_Time[0], $hStringFormat, $hBrush)
_GDIPlus_GraphicsDrawStringEx($hGraphics, $sCurSec, $hFont_Sec, $aMeasure_Sec[0], $hStringFormat, $hBrush)
_WinAPI_UpdateLayeredWindow($hWnd, $hDC_Window, 0, $pSize, $hDC_Buffer, $pSource, 0, $pBlend, $ULW_ALPHA)
EndFuncFunc _WM_PAINT()
[/autoit] [autoit][/autoit] [autoit]
_WinAPI_UpdateLayeredWindow($hWnd, $hDC_Window, 0, $pSize, $hDC_Buffer, $pSource, 0, $pBlend, $ULW_ALPHA)
EndFuncFunc _Exit()
[/autoit] [autoit][/autoit] [autoit]
Exit
EndFuncFunc _Shutdown()
[/autoit] [autoit][/autoit] [autoit]
_WinAPI_ReleaseDC($hWnd, $hDC_Window)
_WinAPI_DeleteDC($hDC_Buffer)
_WinAPI_DeleteObject($hBitmap)_GDIPlus_GraphicsDispose($hGraphics)
[/autoit] [autoit][/autoit] [autoit]
_GDIPlus_StringFormatDispose($hStringFormat)
_GDIPlus_FontFamilyDispose($hFontFamily)
_GDIPlus_FontDispose($hFont_Time)
_GDIPlus_FontDispose($hFont_Sec)
_GDIPlus_BrushDispose($hBrush)
_GDIPlus_Shutdown()
EndFuncFunc _GDIPlus_GraphicsSetTextRenderingHint($hGraphics, $iTextRenderingHint)
[/autoit] [autoit][/autoit] [autoit]
Local $aResult = DllCall($ghGDIPDll, "uint", "GdipSetTextRenderingHint", "hwnd", $hGraphics, "int", $iTextRenderingHint)If @error Then Return SetError(@error, @extended, False)
[/autoit]
$GDIP_STATUS = $aResult[0]
Return $aResult[0] = 0
EndFunc ;==>_GDIPlus_GraphicsSetTextRenderingHint -
Falls du die Lösung willst, hier:
Spoiler anzeigen
[autoit]#include <WindowsConstants.au3>
[/autoit] [autoit][/autoit] [autoit]
#include <GUIConstants.au3>
#include <GDIPlus.au3>
#include <WinAPI.au3>; - Author: name22 (http://www.autoit.de)
[/autoit] [autoit][/autoit] [autoit]Opt("GUIOnEventMode", 1)
[/autoit] [autoit][/autoit] [autoit]$iWidth = 600
[/autoit] [autoit][/autoit] [autoit]
$iHeight = 150$sFontName = "Arial"
[/autoit] [autoit][/autoit] [autoit]
$iARGB_Font = 0xA0000000$nIntervall = 200
[/autoit] [autoit][/autoit] [autoit]$hWnd = GUICreate("Clock", $iWidth, $iHeight, Default, Default, $WS_POPUP, $WS_EX_LAYERED)
[/autoit] [autoit][/autoit] [autoit]
GUICtrlCreateLabel("", 0, 0, $iWidth, $iHeight, Default, $GUI_WS_EX_PARENTDRAG)
GUISetState()$hDC_Window = _WinAPI_GetDC($hWnd)
[/autoit] [autoit][/autoit] [autoit]
$hDC_Buffer = _WinAPI_CreateCompatibleDC($hDC_Window)
$hBitmap = _WinAPI_CreateCompatibleBitmap($hDC_Window, $iWidth, $iHeight)
_WinAPI_SelectObject($hDC_Buffer, $hBitmap)_GDIPlus_Startup()
[/autoit] [autoit][/autoit] [autoit]$hGraphics = _GDIPlus_GraphicsCreateFromHDC($hDC_Buffer)
[/autoit] [autoit][/autoit] [autoit]
_GDIPlus_GraphicsSetSmoothingMode($hGraphics, 2)
_GDIPlus_GraphicsSetTextRenderingHint($hGraphics, 3)$hStringFormat = _GDIPlus_StringFormatCreate()
[/autoit] [autoit][/autoit] [autoit]
$hFontFamily = _GDIPlus_FontFamilyCreate($sFontName)
$hFont = _GDIPlus_FontCreate($hFontFamily, 100, 1, 3)
$hBrush = _GDIPlus_BrushCreateSolid($iARGB_Font)$tSize = DllStructCreate($tagSIZE)
[/autoit] [autoit][/autoit] [autoit]
$pSize = DllStructGetPtr($tSize)
DllStructSetData($tSize, "X", $iWidth)
DllStructSetData($tSize, "Y", $iHeight)
$tSource = DllStructCreate($tagPOINT)
$pSource = DllStructGetPtr($tSource)
$tBlend = DllStructCreate($tagBLENDFUNCTION)
$pBlend = DllStructGetPtr($tBlend)
DllStructSetData($tBlend, "Alpha", 255)
DllStructSetData($tBlend, "Format", 1)_UpdateTime()
[/autoit] [autoit][/autoit] [autoit]
AdlibRegister("_UpdateTime", $nIntervall)GUIRegisterMsg($WM_PAINT, "_WM_PAINT")
[/autoit] [autoit][/autoit] [autoit]
GUISetOnEvent($GUI_EVENT_RESTORE, "_WM_PAINT")
GUISetOnEvent($GUI_EVENT_CLOSE, "_Exit")
OnAutoItExitRegister("_Shutdown")While Sleep(10000)
[/autoit] [autoit][/autoit] [autoit]
WEndFunc _UpdateTime()
[/autoit] [autoit][/autoit] [autoit]
Local Static $sCurTime = "", $sNewTime = @HOUR & ":" & @MIN & ":" & @SEC, $tLayout = _GDIPlus_RectFCreate()$sNewTime = @HOUR & ":" & @MIN & ":" & @SEC
[/autoit] [autoit][/autoit] [autoit]
If $sNewTime = $sCurTime Then Return 0$sCurTime = $sNewTime
[/autoit] [autoit][/autoit] [autoit]
$aMeasure = _GDIPlus_GraphicsMeasureString($hGraphics, $sCurTime, $hFont, $tLayout, $hStringFormat)
$iStringWidth = DllStructGetData($aMeasure[0], "Width")
$iStringHeight = DllStructGetData($aMeasure[0], "Height")
DllStructSetData($aMeasure[0], "X", $iWidth / 2 - $iStringWidth / 2)
DllStructSetData($aMeasure[0], "Y", $iHeight / 2 - $iStringHeight / 2)_GDIPlus_GraphicsClear($hGraphics, 0)
[/autoit] [autoit][/autoit] [autoit]
_GDIPlus_GraphicsDrawStringEx($hGraphics, $sNewTime, $hFont, $aMeasure[0], $hStringFormat, $hBrush)
_WinAPI_UpdateLayeredWindow($hWnd, $hDC_Window, 0, $pSize, $hDC_Buffer, $pSource, 0, $pBlend, $ULW_ALPHA)
EndFuncFunc _WM_PAINT()
[/autoit] [autoit][/autoit] [autoit]
_WinAPI_UpdateLayeredWindow($hWnd, $hDC_Window, 0, $pSize, $hDC_Buffer, $pSource, 0, $pBlend, $ULW_ALPHA)
EndFuncFunc _Exit()
[/autoit] [autoit][/autoit] [autoit]
Exit
EndFuncFunc _Shutdown()
[/autoit] [autoit][/autoit] [autoit]
_WinAPI_ReleaseDC($hWnd, $hDC_Window)
_WinAPI_DeleteDC($hDC_Buffer)
_WinAPI_DeleteObject($hBitmap)_GDIPlus_GraphicsDispose($hGraphics)
[/autoit] [autoit][/autoit] [autoit]
_GDIPlus_StringFormatDispose($hStringFormat)
_GDIPlus_FontFamilyDispose($hFontFamily)
_GDIPlus_FontDispose($hFont)
_GDIPlus_BrushDispose($hBrush)
_GDIPlus_Shutdown()
EndFuncFunc _GDIPlus_GraphicsSetTextRenderingHint($hGraphics, $iTextRenderingHint)
[/autoit] [autoit][/autoit] [autoit]
Local $aResult = DllCall($ghGDIPDll, "uint", "GdipSetTextRenderingHint", "hwnd", $hGraphics, "int", $iTextRenderingHint)If @error Then Return SetError(@error, @extended, False)
[/autoit]
$GDIP_STATUS = $aResult[0]
Return $aResult[0] = 0
EndFunc ;==>_GDIPlus_GraphicsSetTextRenderingHint
Du musst lediglich den String anpassen der gezeichnet wird, indem du ihn um ein Makro ergänzt und die Fensterbreite erhöhen damit das ganze da rein passt ;). Also wirklich kein Grund zu verzweifeln ^^. -
Das lässt sich wahrscheinlich längst nicht mehr als Beispiel klassifizieren, aber ich hatte gerade solche Lust ein GDI+ basiertes Script zu schreiben :P...
Spoiler anzeigen
[autoit]#include <WindowsConstants.au3>
[/autoit] [autoit][/autoit] [autoit]
#include <GUIConstants.au3>
#include <GDIPlus.au3>
#include <WinAPI.au3>; - Author: name22 (http://www.autoit.de)
[/autoit] [autoit][/autoit] [autoit]Opt("GUIOnEventMode", 1)
[/autoit] [autoit][/autoit] [autoit]$iWidth = 460
[/autoit] [autoit][/autoit] [autoit]
$iHeight = 150$sFontName = "Bookman Old Style"
[/autoit] [autoit][/autoit] [autoit]
$iARGB_Font = 0xA0000000$nIntervall = 200
[/autoit] [autoit][/autoit] [autoit]$hWnd = GUICreate("Clock", $iWidth, $iHeight, Default, Default, $WS_POPUP, $WS_EX_LAYERED)
[/autoit] [autoit][/autoit] [autoit]
GUICtrlCreateLabel("", 0, 0, $iWidth, $iHeight, Default, $GUI_WS_EX_PARENTDRAG)
GUISetState()$hDC_Window = _WinAPI_GetDC($hWnd)
[/autoit] [autoit][/autoit] [autoit]
$hDC_Buffer = _WinAPI_CreateCompatibleDC($hDC_Window)
$hBitmap = _WinAPI_CreateCompatibleBitmap($hDC_Window, $iWidth, $iHeight)
_WinAPI_SelectObject($hDC_Buffer, $hBitmap)_GDIPlus_Startup()
[/autoit] [autoit][/autoit] [autoit]$hGraphics = _GDIPlus_GraphicsCreateFromHDC($hDC_Buffer)
[/autoit] [autoit][/autoit] [autoit]
_GDIPlus_GraphicsSetSmoothingMode($hGraphics, 2)
_GDIPlus_GraphicsSetTextRenderingHint($hGraphics, 3)$hStringFormat = _GDIPlus_StringFormatCreate()
[/autoit] [autoit][/autoit] [autoit]
$hFontFamily = _GDIPlus_FontFamilyCreate($sFontName)
$hFont = _GDIPlus_FontCreate($hFontFamily, 100, 1, 3)
$hBrush = _GDIPlus_BrushCreateSolid($iARGB_Font)$tSize = DllStructCreate($tagSIZE)
[/autoit] [autoit][/autoit] [autoit]
$pSize = DllStructGetPtr($tSize)
DllStructSetData($tSize, "X", $iWidth)
DllStructSetData($tSize, "Y", $iHeight)
$tSource = DllStructCreate($tagPOINT)
$pSource = DllStructGetPtr($tSource)
$tBlend = DllStructCreate($tagBLENDFUNCTION)
$pBlend = DllStructGetPtr($tBlend)
DllStructSetData($tBlend, "Alpha", 255)
DllStructSetData($tBlend, "Format", 1)_UpdateTime()
[/autoit] [autoit][/autoit] [autoit]
AdlibRegister("_UpdateTime", $nIntervall)GUIRegisterMsg($WM_PAINT, "_WM_PAINT")
[/autoit] [autoit][/autoit] [autoit]
GUISetOnEvent($GUI_EVENT_RESTORE, "_WM_PAINT")
GUISetOnEvent($GUI_EVENT_CLOSE, "_Exit")
OnAutoItExitRegister("_Shutdown")While Sleep(10000)
[/autoit] [autoit][/autoit] [autoit]
WEndFunc _UpdateTime()
[/autoit] [autoit][/autoit] [autoit]
Local Static $sCurTime = "", $sNewTime = @HOUR & ":" & @MIN, $tLayout = _GDIPlus_RectFCreate()$sNewTime = @HOUR & ":" & @MIN
[/autoit] [autoit][/autoit] [autoit]
If $sNewTime = $sCurTime Then Return 0$sCurTime = $sNewTime
[/autoit] [autoit][/autoit] [autoit]
$aMeasure = _GDIPlus_GraphicsMeasureString($hGraphics, $sCurTime, $hFont, $tLayout, $hStringFormat)
$iStringWidth = DllStructGetData($aMeasure[0], "Width")
$iStringHeight = DllStructGetData($aMeasure[0], "Height")
DllStructSetData($aMeasure[0], "X", $iWidth / 2 - $iStringWidth / 2)
DllStructSetData($aMeasure[0], "Y", $iHeight / 2 - $iStringHeight / 2)_GDIPlus_GraphicsClear($hGraphics, 0)
[/autoit] [autoit][/autoit] [autoit]
_GDIPlus_GraphicsDrawStringEx($hGraphics, $sNewTime, $hFont, $aMeasure[0], $hStringFormat, $hBrush)
_WinAPI_UpdateLayeredWindow($hWnd, $hDC_Window, 0, $pSize, $hDC_Buffer, $pSource, 0, $pBlend, $ULW_ALPHA)
EndFuncFunc _WM_PAINT()
[/autoit] [autoit][/autoit] [autoit]
_WinAPI_UpdateLayeredWindow($hWnd, $hDC_Window, 0, $pSize, $hDC_Buffer, $pSource, 0, $pBlend, $ULW_ALPHA)
EndFuncFunc _Exit()
[/autoit] [autoit][/autoit] [autoit]
Exit
EndFuncFunc _Shutdown()
[/autoit] [autoit][/autoit] [autoit]
_WinAPI_ReleaseDC($hWnd, $hDC_Window)
_WinAPI_DeleteDC($hDC_Buffer)
_WinAPI_DeleteObject($hBitmap)_GDIPlus_GraphicsDispose($hGraphics)
[/autoit] [autoit][/autoit] [autoit]
_GDIPlus_StringFormatDispose($hStringFormat)
_GDIPlus_FontFamilyDispose($hFontFamily)
_GDIPlus_FontDispose($hFont)
_GDIPlus_BrushDispose($hBrush)
_GDIPlus_Shutdown()
EndFuncFunc _GDIPlus_GraphicsSetTextRenderingHint($hGraphics, $iTextRenderingHint)
[/autoit] [autoit][/autoit] [autoit]
Local $aResult = DllCall($ghGDIPDll, "uint", "GdipSetTextRenderingHint", "hwnd", $hGraphics, "int", $iTextRenderingHint)If @error Then Return SetError(@error, @extended, False)
[/autoit]
$GDIP_STATUS = $aResult[0]
Return $aResult[0] = 0
EndFunc ;==>_GDIPlus_GraphicsSetTextRenderingHint
Du solltest allerdings beachten, dass derjenige der nachher das Programm benutzt auch das von dir spezifizierte Font installiert hat. Egal bei welcher Methode, ansonsten passiert nix ;). -
Das liegt an der Kantenglättung der Schrift. Die Funktion _WinAPI_SetLayeredWindowAttributes legt nur eine einzige Farbe als transparent fest. Da bei der Kantenglättung aber teiltransparente Pixel eingefügt werden die die selbe Farbe haben wie das Objekt, aber den Hintergrund leicht durchscheinen lassen, werden diese Pixel ignoriert weil der resultierende Farbton nicht der Hintergrundfarbe entspricht. Der Farbanteil des Hintergrunds ist aber immer noch in diesen Pixeln zu sehen was deinen Schriftzug optisch niederqualitativ aussehen lässt.
Eine Möglichkeit dieses Problem zu lösen bietet GDI+ in Kombination mit Mehrschichtigen GUIs. Ich habe schon vor einiger Zeit mal ein Beispiel für sowas geschrieben: https://autoit.de/index.php?page…1221#post211221
Wenn du das so umsetzt, sollte die Schriftqualität wesentlich besser sein und Teiltransparenz (z.B. 40% Sichtbarkeit) ist auch möglich. -
Zitat
is es nicht eigentlich einfacher? da man nicht mit 2 ports & Verbindungen arbeiten muss
Wie meinst du das?
UDP funktioniert fast genau gleich wie TCP. Der Hauptunterschied ist die fehlende Sicherung bei der Datenübertragung die in vielen Fällen Geschwindigkeitsvorteile bringt. -
Die Windows Registry beinhaltet einige Schlüssel deren Werte das Verhalten von einem oder mehrere Programme oder auch dem Betriebssystem verändern. Oft wird sie auch als zentraler Datenspeicher benutzt.
Manche Programme machen dort extrem viele Einträge weil sie eine Menge Daten dort speichern wollen. Zum Beispiel Einstellungen des Programms. Teilweise werden dort auch Daten gespeichert die nicht ohne weiteres durch den Benutzer manipuliert werden können. Manche Programme speichern dort Informationen wie die Zeit die die Testversion noch gültig ist bis du blechen sollst um die Vollversion zu kaufen.
Außerdem können dort Daten gespeichert werden die bei der Deinstallation nicht entfernt werden, aber sonstwo durch den Benutzer einfach zu finden und zu löschen wären. Viele Programme speichern dort Informationen bis du das nächste mal dein Betriebssystem neu aufsetzt. Da viele das nicht wollen, gibt es überhaupt Programme die die Aktivitäten der Installer überwachen und rückgängig machen können.Ich hoffe ich konnte es einigermaßen erklären... Ich kann natürlich nicht garantieren, das alles was ich hier erzähle auch stimmt, aber ich bin recht zuversichtlich ^^. Vielleicht wäre es auch einfacher wenn du eine spezifischere Frage stellt, dass sich das ganze besser eingrenzen lässt.
-
So mit der verbesserten Zeile klappt alles problemlos im 64-bit Modus.
Das kam dabei raus:Der Inhalt kann nicht angezeigt werden, da er nicht mehr verfügbar ist.
Ich hab die CPU über den Multiplikator auf 4 GHz gestellt. Im Idle fährt sie den Takt auf 1.6 GHz runter. Das gilt aber nicht nur für einen Core.
CPU-Z hat sich bei mir bisher recht zuverlässig gezeigt und zeigt während deinem Test um die 4000 MHz auf allen 4 Cores an. Nur während dem Grafikkartentest laufen teilweise nur 2 Kerne mit erhöhtem Takt. -
Hier mal meine Konsolenausgabe:
Spoiler anzeigen
Code
Alles anzeigenclGetPlatformIDs CL_SUCCESS @@ Debug(56) : $num_platforms = 2 >Error code: 0 @@ Debug(79) : $platform[$i] = 64315520 >Error code: 0 clCreateContextFromType CL_SUCCESS @@ Debug(96) : $context = 64607032 >Error code: 0 clGetContextInfo CL_SUCCESS clGetContextInfo CL_SUCCESS clGetDeviceInfo CL_SUCCESS @@ Debug(119) : $numberdevice = 1 >Error code: 0 @@ Debug(120) : $namedevice = Intel(R) Core(TM) i5-2500K CPU @ 3.30GHz >Error code: 0 @@ Debug(121) : $deviceid = 64351768 >Error code: 0 verwendetes Device Nr. 1 clCreateCommandQueue @@ Debug(139) : $context = 64607032 >Error code: 0 @@ Debug(140) : $deviceid = 64351768 >Error code: 0 clCreateCommandQueue CL_SUCCESS @@ Debug(143) : $commandqueue = 64766896 >Error code: 0 clCreateProgramWithSource CL_SUCCESS @@ Debug(148) : $program = 136706568 >Error code: 0 clBuildProgram CL_SUCCESS clGetProgramBuildInfo CL_SUCCESS clGetProgramBuildInfo CL_SUCCESS LOG: Build started Kernel <Mandelbrot> was successfully vectorized Done. clCreateKernel CL_SUCCESS clGetDeviceInfo CL_SUCCESS @@ Debug(182) : $MAX_WORK_GROUP_SIZE = 1024 >Error code: 0 clGetDeviceInfo CL_SUCCESS @@ Debug(190) : $MAX_compute_units = 4 >Error code: 0 clGetDeviceInfo CL_SUCCESS @@ Debug(198) : $devicetyp = 2 >Error code: 0 clGetDeviceInfo CL_SUCCESS @@ Debug(206) : $mhz = 3300 >Error code: 0 clGetDeviceInfo CL_SUCCESS @@ Debug(238) : $info = Intel(R) Core(TM) i5-2500K CPU @ 3.30GHz >Error code: 0 clGetDeviceInfo CL_SUCCESS @@ Debug(238) : $info = Intel(R) Corporation >Error code: 0 clGetDeviceInfo CL_SUCCESS @@ Debug(238) : $info = 1.1 >Error code: 0 clGetDeviceInfo CL_SUCCESS @@ Debug(238) : $info = FULL_PROFILE >Error code: 0 clGetDeviceInfo CL_SUCCESS @@ Debug(238) : $info = OpenCL 1.1 (Build 31360.31441) >Error code: 0 clGetDeviceInfo CL_SUCCESS @@ Debug(238) : $info = cl_khr_fp64 cl_khr_icd cl_khr_global_int32_base_atomics cl_khr_global_int32_extended_atomics cl_khr_local_int32_base_atomics cl_khr_local_int32_extended_atomics cl_khr_byte_addressable_store cl_intel_printf cl_ext_device_fission cl_intel_exec_by_local_thread cl_khr_gl_sharing cl_intel_dx9_media_sharing >Error code: 0 clGetDeviceInfo CL_SUCCESS @@ Debug(238) : $info = €`Õ >Error code: 0 SPEEDTEST clCreateBuffer CL_SUCCESS @@ Debug(271) : $apfelbreite = 0.0155929924241542 >Error code: 0 clSetKernelArg CL_SUCCESS clSetKernelArg CL_SUCCESS clSetKernelArg CL_SUCCESS clSetKernelArg CL_SUCCESS clSetKernelArg CL_SUCCESS clSetKernelArg CL_SUCCESS clSetKernelArg CL_SUCCESS @@ Debug(79) : $platform[$i] = 0 >Error code: 2 @@ Debug(96) : $context = 0 >Error code: 0 @@ Debug(119) : $numberdevice = 1 >Error code: 0 @@ Debug(120) : $namedevice = >Error code: 0 @@ Debug(121) : $deviceid = 0 >Error code: 0 verwendetes Device Nr. 1 clCreateCommandQueue @@ Debug(139) : $context = 0 >Error code: 0 @@ Debug(140) : $deviceid = 0 >Error code: 0 clCreateCommandQueue CL_SUCCESS @@ Debug(143) : $commandqueue = 0 >Error code: 0 @@ Debug(148) : $program = 0 >Error code: 0 @@ Debug(182) : $MAX_WORK_GROUP_SIZE = 0 >Error code: 0 @@ Debug(190) : $MAX_compute_units = 0 >Error code: 0 @@ Debug(198) : $devicetyp = 0 >Error code: 0 @@ Debug(206) : $mhz = 0 >Error code: 0 @@ Debug(238) : $info = >Error code: 0 @@ Debug(238) : $info = >Error code: 0 @@ Debug(238) : $info = >Error code: 0 @@ Debug(238) : $info = >Error code: 0 @@ Debug(238) : $info = >Error code: 0 @@ Debug(238) : $info = >Error code: 0 @@ Debug(238) : $info = >Error code: 0 SPEEDTEST @@ Debug(271) : $apfelbreite = 0.0155929924241542 >Error code: 0Im 32-bit Modus wird die CPU erfolgreich getestet (allerdings mit dem falschen Takt) aber bei der Grafikkarte werden jetzt Fehler ohne Ende ausgegeben ^^:
Spoiler anzeigen
Code
Alles anzeigenclGetPlatformIDs CL_SUCCESS @@ Debug(56) : $num_platforms = 2 >Error code: 0 @@ Debug(79) : $platform[$i] = 57638008 >Error code: 0 clCreateContextFromType CL_SUCCESS @@ Debug(96) : $context = 46939208 >Error code: 0 clGetContextInfo CL_SUCCESS clGetContextInfo CL_SUCCESS clGetDeviceInfo CL_SUCCESS @@ Debug(119) : $numberdevice = 1 >Error code: 0 @@ Debug(120) : $namedevice = Intel(R) Core(TM) i5-2500K CPU @ 3.30GHz >Error code: 0 @@ Debug(121) : $deviceid = 57671168 >Error code: 0 verwendetes Device Nr. 1 clCreateCommandQueue @@ Debug(139) : $context = 46939208 >Error code: 0 @@ Debug(140) : $deviceid = 57671168 >Error code: 0 clCreateCommandQueue CL_SUCCESS @@ Debug(143) : $commandqueue = 115961292 >Error code: 0 clCreateProgramWithSource CL_SUCCESS @@ Debug(148) : $program = 100265808 >Error code: 0 clBuildProgram CL_SUCCESS clGetProgramBuildInfo CL_SUCCESS clGetProgramBuildInfo CL_SUCCESS LOG: Build started Kernel <Mandelbrot> was successfully vectorized Done. clCreateKernel CL_SUCCESS clGetDeviceInfo CL_SUCCESS @@ Debug(182) : $MAX_WORK_GROUP_SIZE = 1024 >Error code: 0 clGetDeviceInfo CL_SUCCESS @@ Debug(190) : $MAX_compute_units = 4 >Error code: 0 clGetDeviceInfo CL_SUCCESS @@ Debug(198) : $devicetyp = 2 >Error code: 0 clGetDeviceInfo CL_SUCCESS @@ Debug(206) : $mhz = 3300 >Error code: 0 clGetDeviceInfo CL_SUCCESS @@ Debug(238) : $info = Intel(R) Core(TM) i5-2500K CPU @ 3.30GHz >Error code: 0 clGetDeviceInfo CL_SUCCESS @@ Debug(238) : $info = Intel(R) Corporation >Error code: 0 clGetDeviceInfo CL_SUCCESS @@ Debug(238) : $info = 1.1 >Error code: 0 clGetDeviceInfo CL_SUCCESS @@ Debug(238) : $info = FULL_PROFILE >Error code: 0 clGetDeviceInfo CL_SUCCESS @@ Debug(238) : $info = OpenCL 1.1 (Build 31360.31441) >Error code: 0 clGetDeviceInfo CL_SUCCESS @@ Debug(238) : $info = cl_khr_fp64 cl_khr_icd cl_khr_global_int32_base_atomics cl_khr_global_int32_extended_atomics cl_khr_local_int32_base_atomics cl_khr_local_int32_extended_atomics cl_khr_byte_addressable_store cl_intel_printf cl_ext_device_fission cl_intel_exec_by_local_thread cl_khr_gl_sharing cl_intel_dx9_media_sharing >Error code: 0 clGetDeviceInfo CL_SUCCESS @@ Debug(238) : $info = x|o >Error code: 0 SPEEDTEST clCreateBuffer CL_SUCCESS @@ Debug(271) : $apfelbreite = 0.0155929924241542 >Error code: 0 clSetKernelArg CL_SUCCESS clSetKernelArg CL_SUCCESS clSetKernelArg CL_SUCCESS clSetKernelArg CL_SUCCESS clSetKernelArg CL_SUCCESS clSetKernelArg CL_SUCCESS clSetKernelArg CL_SUCCESS @@ Debug(79) : $platform[$i] = 0 >Error code: 2 @@ Debug(96) : $context = 0 >Error code: 0 @@ Debug(119) : $numberdevice = 1 >Error code: 0 @@ Debug(120) : $namedevice = >Error code: 0 @@ Debug(121) : $deviceid = 0 >Error code: 0 verwendetes Device Nr. 1 clCreateCommandQueue @@ Debug(139) : $context = 0 >Error code: 0 @@ Debug(140) : $deviceid = 0 >Error code: 0 clCreateCommandQueue CL_SUCCESS @@ Debug(143) : $commandqueue = 0 >Error code: 0 @@ Debug(148) : $program = 0 >Error code: 0 @@ Debug(182) : $MAX_WORK_GROUP_SIZE = 0 >Error code: 0 @@ Debug(190) : $MAX_compute_units = 0 >Error code: 0 @@ Debug(198) : $devicetyp = 0 >Error code: 0 @@ Debug(206) : $mhz = 0 >Error code: 0 @@ Debug(238) : $info = >Error code: 0 @@ Debug(238) : $info = >Error code: 0 @@ Debug(238) : $info = >Error code: 0 @@ Debug(238) : $info = >Error code: 0 @@ Debug(238) : $info = >Error code: 0 @@ Debug(238) : $info = >Error code: 0 @@ Debug(238) : $info = >Error code: 0 SPEEDTEST @@ Debug(271) : $apfelbreite = 0.0155929924241542 >Error code: 0
Ergebnis der CPU die eigentlich mit 4.00 GHz erkannt werden sollte:Der Inhalt kann nicht angezeigt werden, da er nicht mehr verfügbar ist. -
Ich hab es jeweils einmal mit der CPU Only Runtime von Intel versucht und einmal mit der kompletten SDK wo die Runtime auch dabei ist.
Ich hab einen Intel i5 2500K @4.00 GHz. -
Du kannst mit den FTP Funktionen auf jeden FTP Server zugreifen. Wenn dein Schulserver einen FTP Service hostet, dann ist das kein Problem.
Was willst du denn nachher damit machen können? Geht es nur darum Dateien zu übertragen? -
Geile Sache Andy. Ich bin schwer beeindruckt.
Das kommt bei mir raus:GPU - Gigabyte GeForce GTX 570 @Core 780MHz|Shader 1560MHz|Memory 1900MHz :
Der Inhalt kann nicht angezeigt werden, da er nicht mehr verfügbar ist. GPU - Gigabyte GeForce GTX 570 @Core 860MHz|Shader 1720MHz|Memory 2000MHz :
Der Inhalt kann nicht angezeigt werden, da er nicht mehr verfügbar ist. Danach kommt eine ganze Reihe von Fehlermeldungen und der CPU Test klappt somit nicht.
Irgendwie krass wie weit mein Ergebnis vor den anderen liegt
. Sind wohl alles Laptops gewesen...
Mich würde ja interessieren was bei Blume rauskommt
.Edit: Ich frag mich, wie sehr ich das Ergebnis durch übertakten der Shaderclock in die Höhe treiben kann...
Haben die anderen Takfrequenzen auch einen Einfluss auf die Geschwindigkeit deiner Beispiele? -
Ok, das erste ist ein normaler SQL Error. 19 ist ein Constraint Error der bei einem Datensatz Konflikt ausgegeben wird (z.B. wenn ein merhmals vorhandener Primary Key Wert festgestellt wurde). 101 steht für SQL_DONE und signalisiert, dass der Prozess abgeschlossen wurde.
[autoit]
Dein Fragwürdiger Code den du uns da präsentierst hat vermutlich einen Großteil dieser Fehler verursacht.
Wenn SQLite_Exec nicht SQL_DONE zurückgibt, dann wird der Selbe SQL Befehl nochmal ausgeführt. Daher die Constraint Meldung, weil du 2 mal hintereinander den selben Primary Key erstellst.
Bitte ersetze deine Funktion mal durch das hier:Func _SQLRun($sql)
[/autoit]
ConsoleWrite($sql & @CRLF & @TAB & _SQLite_Exec(-1, $sql, "_rowCall") & @TAB & _SQLite_ErrMsg() & @CRLF)
EndFunc ;==>_SQLRun
Dann postest du bitte die Konsolenausgabe des Scripts, oder zumindest einen Teil. Du kannst die ganzen Daten auch entsprechend zensieren. Falls sich eine Ausgabe wiederholt macht es natürlich keinen Sinn die alle zu posten ;).