1. Dashboard
  2. Mitglieder
    1. Letzte Aktivitäten
    2. Benutzer online
    3. Team
    4. Mitgliedersuche
  3. Forenregeln
  4. Forum
    1. Unerledigte Themen
  • Anmelden
  • Registrieren
  • Suche
Alles
  • Alles
  • Artikel
  • Seiten
  • Forum
  • Erweiterte Suche
  1. AutoIt.de - Das deutschsprachige Forum.
  2. Mitglieder
  3. Oscar

Beiträge von Oscar

  • GDI+ Graphic abspeichern

    • Oscar
    • 18. Februar 2009 um 12:17

    Wie kann man eine mit GDI+ erstellte Graphic abspeichern?

    Das hier klappt nicht:

    Spoiler anzeigen
    [autoit]


    #include <StaticConstants.au3>
    #include <WindowsConstants.au3>
    #include <GDIPlus.au3>
    #include <GUIConstantsEx.au3>
    $hGui1 = GUICreate('test', 540, 540, -1, 0)
    _GDIPlus_Startup ()
    $hGraphic1 = _GDIPlus_GraphicsCreateFromHWND(WinGetHandle($hGui1))
    _GDIPlus_GraphicsSetSmoothingMode($hGraphic1, 2)
    $hPen = _GDIPlus_PenCreate(0xcc000000, 2)
    Global $ahBrush[4]
    $ahBrush[0] = _GDIPlus_BrushCreateSolid(0xffffffff)
    $ahBrush[1] = _GDIPlus_BrushCreateSolid(0xff42b8c8)
    $ahBrush[2] = _GDIPlus_BrushCreateSolid(0xffff1a10)
    $ahBrush[3] = _GDIPlus_BrushCreateSolid(0xfffef433)

    [/autoit] [autoit][/autoit] [autoit]

    GUIRegisterMsg($WM_PAINT, 'MY_WM_PAINT')
    GUISetState()

    [/autoit] [autoit][/autoit] [autoit]

    If FileExists(@ScriptDir & '\pic.jpg') Then FileDelete(@ScriptDir & '\pic.jpg')

    [/autoit] [autoit][/autoit] [autoit]

    ; wie kann man die erzeugte Graphic in eine Datei speichern?
    $hImage1 = _GDIPlus_BitmapCreateFromGraphics(540, 540, $hGraphic1) ; das hier
    _GDIPlus_ImageSaveToFile($hImage1, @ScriptDir & '\pic.jpg') ; klappt nicht.

    [/autoit] [autoit][/autoit] [autoit]

    Do
    Until GUIGetMsg() = -3

    [/autoit] [autoit][/autoit] [autoit]

    _GDIPlus_PenDispose($hPen)
    For $i = 0 To UBound($ahBrush) -1
    _GDIPlus_BrushDispose($ahBrush[$i])
    Next
    _GDIPlus_ImageDispose($hImage1)
    _GDIPlus_GraphicsDispose($hGraphic1)
    _GDIPlus_Shutdown()

    [/autoit] [autoit][/autoit] [autoit]

    Func MY_WM_PAINT($hWnd, $Msg, $wParam, $lParam)
    _GDIPlus_GraphicsFillRect($hGraphic1, 0, 0, 540, 540, $ahBrush[0])
    _GDIPlus_GraphicsDrawEllipse($hGraphic1, 30, 30, 480, 480, $hPen)
    _GDIPlus_GraphicsFillEllipse($hGraphic1, 31, 31, 478, 478, $ahBrush[0])
    _GDIPlus_GraphicsDrawEllipse($hGraphic1, 54, 54, 432, 432, $hPen)
    _GDIPlus_GraphicsFillEllipse($hGraphic1, 55, 55, 430, 430, $ahBrush[0])
    _GDIPlus_GraphicsFillEllipse($hGraphic1, 78, 78, 384, 384)
    _GDIPlus_PenSetColor($hPen, 0xddffffff)
    _GDIPlus_GraphicsDrawEllipse($hGraphic1, 102, 102, 336, 336, $hPen)
    _GDIPlus_GraphicsFillEllipse($hGraphic1, 103, 103, 334, 334)
    _GDIPlus_PenSetColor($hPen, 0xcc000000)
    _GDIPlus_GraphicsDrawEllipse($hGraphic1, 126, 126, 288, 288, $hPen)
    _GDIPlus_GraphicsFillEllipse($hGraphic1, 127, 127, 286, 286, $ahBrush[1])
    _GDIPlus_GraphicsDrawEllipse($hGraphic1, 150, 150, 240, 240, $hPen)
    _GDIPlus_GraphicsFillEllipse($hGraphic1, 151, 151, 238, 238, $ahBrush[1])
    _GDIPlus_GraphicsDrawEllipse($hGraphic1, 174, 174, 192, 192, $hPen)
    _GDIPlus_GraphicsFillEllipse($hGraphic1, 175, 175, 190, 190, $ahBrush[2])
    _GDIPlus_GraphicsDrawEllipse($hGraphic1, 198, 198, 144, 144, $hPen)
    _GDIPlus_GraphicsFillEllipse($hGraphic1, 199, 199, 142, 142, $ahBrush[2])
    _GDIPlus_GraphicsDrawEllipse($hGraphic1, 222, 222, 96, 96, $hPen)
    _GDIPlus_GraphicsFillEllipse($hGraphic1, 223, 223, 94, 94, $ahBrush[3])
    _GDIPlus_GraphicsDrawEllipse($hGraphic1, 246, 246, 48, 48, $hPen)
    _GDIPlus_GraphicsFillEllipse($hGraphic1, 247, 247, 46, 46, $ahBrush[3])
    _GDIPlus_PenSetColor($hPen, 0xcc000000)
    _GDIPlus_GraphicsDrawEllipse($hGraphic1, 258, 258, 24, 24, $hPen)
    _GDIPlus_GraphicsFillEllipse($hGraphic1, 259, 259, 22, 22, $ahBrush[3])
    _GDIPlus_GraphicsDrawLine($hGraphic1, 266, 270, 274, 270, $hPen)
    _GDIPlus_GraphicsDrawLine($hGraphic1, 270, 266, 270, 274, $hPen)
    Return $GUI_RUNDEFMSG
    EndFunc

    [/autoit]
  • AutoIt ein VIRUS??????

    • Oscar
    • 18. Februar 2009 um 11:12

    Habe gerade ein Update gemacht (gab tatsächlich eins), aber AntiVir meldet bei "AutoIt3.exe" immer noch einen Trojaner.

    Virendefinitionsdatei: V7.01.02.39, 18.02.2009

  • AutoIt ein VIRUS??????

    • Oscar
    • 18. Februar 2009 um 11:00

    Ok, die Datei ist bereits von gestern, aber das Update war bei mir erst heute:

    Virendefinitionsdatei: V7.01.02.38, 17.02.2009

  • Dateien nach Alter löschen

    • Oscar
    • 18. Februar 2009 um 10:56

    Mit _DateDiff kann man das Script etwas kürzer gestalten:

    [autoit]


    #include <Date.au3>
    $sPath = 'c:\Temp\'
    $hSearch = FileFindFirstFile($sPath & '*')
    While 1
    $sFile = FileFindNextFile($hSearch)
    If @error Then ExitLoop
    If Not StringInStr(FileGetAttrib($sPath & $sFile), 'D') Then
    $sDate = StringRegExpReplace(FileGetTime($sPath & $sFile, 1, 1), '(\d{4})(\d{2})(\d{2})(.*)', '$1/$2/$3')
    If _DateDiff('D', $sDate, _NowCalc()) > 7 Then
    ;~ FileDelete($sPath & $sFile)
    MsgBox(0,0,$sPath & $sFile)
    EndIf
    EndIf
    WEnd
    FileClose($hSearch)

    [/autoit]
  • AutoIt ein VIRUS??????

    • Oscar
    • 18. Februar 2009 um 10:28

    Es ist auch kein Virus! Ich habe schon einen Online-Check mit mehreren AntiVirus-Programmen gemacht.
    Nur (mal wieder) ein Fehlalarm...

  • AutoIt ein VIRUS??????

    • Oscar
    • 18. Februar 2009 um 10:22

    Richtig, seit dem heutigen Update nervt AntiVir tierisch. X(

    Ich wollte aber den Scanner nicht deaktivieren und so habe ich meine AutoIt-Verzeichnisse bei den Ausnahmen eingetragen.
    Dazu gehören:
    C:\Programme\AutoIt3\
    C:\Dokumente und Einstellungen\Username\Lokale Einstellungen\Temp\ (sonst meckert AntiVir beim compilieren)
    und das Verzeichnis mit meinen AutoIt-Scripten

  • Problem mit TrayTip

    • Oscar
    • 18. Februar 2009 um 10:17

    Ahh...verstehe...nicht schlecht. :)

    Nee, gibt nichts zu bemängeln. ^^

  • Dateien nach Alter löschen

    • Oscar
    • 18. Februar 2009 um 10:09

    Du musst nach FileFindNextFile den @error-Wert abfragen, denn wenn keine weitere Datei mehr gefunden wird, liefert FileGetTime kein Array zurück und das Script bricht mit der Fehlermeldung ab.

  • Problem mit TrayTip

    • Oscar
    • 18. Februar 2009 um 10:00

    Ja, genau! Adlib läuft sozusagen nebenher. Die Funktion wird nach 2 Sekunden aufgerufen, in der dann Adlib beendet wird und der TrayTip geschlossen.

    [active] kannst Du weglassen, stimmt!
    Das hatte ich nur damit getestet, weil bei mir erst kein TrayTip angezeigt wurde. Lag aber daran, dass das in der Reg deaktiviert war.

  • Problem mit TrayTip

    • Oscar
    • 18. Februar 2009 um 09:23

    Dann vielleicht so:

    Spoiler anzeigen
    [autoit]


    Global $SaveSciTEOn = False, $SaveSciTEOff = False
    While 1

    [/autoit] [autoit][/autoit] [autoit]

    If StringInStr(WinGetTitle("[active]"), "SciTE") And Not $SaveSciTEOn Then
    TrayTip("", "SciTE On", 5)
    AdlibEnable("_TrayTipOff", 2000)
    $SaveSciTEOff = False
    $SaveSciTEOn = True
    EndIf

    [/autoit] [autoit][/autoit] [autoit]

    If Not StringInStr(WinGetTitle("[active]"), "SciTE") And Not $SaveSciTEOff Then
    TrayTip("", "SciTE Off", 5)
    AdlibEnable("_TrayTipOff", 2000)
    $SaveSciTEOn = False
    $SaveSciTEOff = True
    EndIf

    [/autoit] [autoit][/autoit] [autoit]

    WEnd

    [/autoit] [autoit][/autoit] [autoit]

    Func _TrayTipOff()
    AdlibDisable()
    TrayTip("", "", 0)
    EndFunc ;==>_TrayTipOff

    [/autoit]
  • Rausfinden ob Soundplay noch läuft

    • Oscar
    • 18. Februar 2009 um 07:24

    Was stört Dich denn an der UDF?

  • Problem mit HotKeySet

    • Oscar
    • 17. Februar 2009 um 16:29

    Entschuldige, dass ich das so deutlich sage, aber das Script ist eine Katastrophe: :pinch:

    - Durch den Einsatz von Arrays ließe sich schätzungsweise 80% des Codes einsparen.
    - Die Inidatei wird zum speichern der Daten benutzt. Warum nicht einfach Variablen verwenden?
    - Funktionen werden als GOTO-Befehl missbraucht (rekursive Aufrufe ohne Rücksprung)
    - Sleep-Befehle blockieren die GUI-Elemente

    ...und das nur von dem kurzen Auszug Deines Scripts.

    Das ist wirklich nicht böse gemeint, aber Du solltest erstmal die Grundlagen des Programmierens lernen.
    Dieses Script wird, so wie es momentan ist, nicht lange fehlerfrei laufen. Sorry, für diese harte Kritik...

  • Problem mit HotKeySet

    • Oscar
    • 17. Februar 2009 um 15:34

    Ich dachte ja erst an ein Bot, wegen "Bottens", aber Du meinst vermutlich Buttons. ^^

    Deine Hotkeys rufen vermutlich Funktionen auf, in denen Du eine Schleife programmiert hast. Während sich das Programm in dieser Funktion befindet kann somit die MessageLoop-Schleife nicht abgearbeitet und auf einen Buttonklick reagiert werden.
    Eventuell könntest Du das Problem mit dem OnEvent-Mode lösen, aber das läßt sich ohne Quellcode nicht mit Sicherheit sagen. Also poste doch mal Dein Script.

  • Mausbewegungen aunsichtbar ?

    • Oscar
    • 17. Februar 2009 um 15:09
    Zitat von FireFlyer

    also wenn ihr mir erzählen wollt das ihr "seht" wie sich der cursor bei mouseclick bzw. mousemove (mit speed 0) bewegt... dann sollte ich wohl doch ma besser zum augenarzt gehn^^

    Es geht nicht wirklich darum, ob man den Mauszeiger dabei sieht, sondern ob das Fenster bzw. die GUI-Elemente, die man mit MouseClick steuern will, sichtbar sind.
    Und das muss bei den Mouse...-Befehlen der Fall sein. Die funktionieren nicht mit versteckten Fenstern.

  • TreeView-(Un)Checked-Example

    • Oscar
    • 17. Februar 2009 um 05:35

    Sollte mit _GUICtrlTreeView_GetImageIndex gehen, wenn Du eine ImageList für die Icons benutzt.

    Was mir beim erstellen des Scripts "_GUICtrlTreeView_CreateDirectory.au3" aufgefallen war:
    - Wenn man Icons benutzt, dann bekommt jeder Eintrag ein Icon
    - Wenn man beim erstellen eines Eintrags kein Icon angibt, dann wird das vom Parent "vererbt"
    - und das erstellen des Treeviews wird langsamer (je nach Größe kann sich das durchaus bemerkbar machen)

    P.S.: Ja, wir sind recht schnell, hier im Forum. ;)

  • Verknüpfung mit Argumenten öffnen

    • Oscar
    • 17. Februar 2009 um 05:07

    Benutze "ShellExecute" anstatt "Run", dann klappt's auch mit den Verknüpfungen.

  • Wieder mal StringRegExp

    • Oscar
    • 17. Februar 2009 um 04:58

    Sehr schön erklärt, anno! :thumbup:

  • GUI help

    • Oscar
    • 16. Februar 2009 um 19:44

    Gerade die grafische Benutzeroberfläche läßt doch genug Raum zum experimentieren.
    Schnapp Dir ein Beispielscript aus der Hilfe, speichere es unter einem anderen Namen ab und experimentiere mit den einzelnen GUI-Elementen.
    Ändere die Parameter, starte das Script und sieh was die Änderungen bewirkt haben.
    Und Beispielscripte zur GUI gibt es in der Hilfe mehr als genug. Also etwas mehr Eigeninitiative, bitte. ;)

  • Wieder mal StringRegExp

    • Oscar
    • 16. Februar 2009 um 19:29

    Wenn die alle nach obigen Muster aufgebaut sind und Du immer den letzten Wert haben willst:

    [autoit]


    #include <Array.au3>
    $string = 'DB13.DBW2880'
    $a = StringRegExp($string, '(\d+)\.*\d*\z', 3)
    _ArrayDisplay($a)

    [/autoit]
  • HotKeySet order suche (Fand)

    • Oscar
    • 16. Februar 2009 um 16:03

    Weil...

    [autoit]

    Run ("sro worldmap.JPEG")

    [/autoit]


    ...ganz bestimmt nicht funktioniert.

Spenden

Jeder Euro hilft uns, Euch zu helfen.

Download

AutoIt Tutorial
AutoIt Buch
Onlinehilfe
AutoIt Entwickler
  1. Datenschutzerklärung
  2. Impressum
  3. Shoutbox-Archiv
Community-Software: WoltLab Suite™