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. autoBert

Beiträge von autoBert

  • Liste soll .txt Datei einlesen...

    • autoBert
    • 3. September 2010 um 00:49

    andygo,

    hast du das Skript wenigstens einmal gestartet?

    mfg autoBert

  • Liste soll .txt Datei einlesen...

    • autoBert
    • 3. September 2010 um 00:38

    Hallo zero2q,

    mach es so:

    Spoiler anzeigen
    [autoit]

    #include <ButtonConstants.au3>
    #include <GUIConstantsEx.au3>
    #include <GUIListBox.au3>
    #include <StaticConstants.au3>
    #include <WindowsConstants.au3>
    #include <File.au3>

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

    $sFilePath = @ScriptDir & "\Test.txt"
    if not FileExists($sFilePath) then
    For $i = 1 to 9
    FileWriteLine($sFilePath,$i &". Link")
    Next
    EndIf
    Global $links[1]

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

    $Form3 = GUICreate("Form1", 405, 296, 302, 218)
    $List1 = GUICtrlCreateList("", 16, 8, 185, 266)
    ;$Button1 = GUICtrlCreateButton("Öffnen", 216, 16, 115, 25)
    _FileReadToArray($sFilePath, $links)
    For $i = 1 To $links[0]
    GuiCtrlSetData($List1, $links[$i])
    Next
    GUISetState(@SW_SHOW)

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

    While 1
    $nMsg = GUIGetMsg()
    Switch $nMsg
    Case $GUI_EVENT_CLOSE
    Exit
    EndSwitch
    WEnd

    [/autoit]

    du must nur noch den Pfad zu deiner Datei anpassen,

    mfg autoBert

  • Desktopfilmaufnahme

    • autoBert
    • 2. September 2010 um 21:17

    am einfachsten kannst du das über die webcam.au3 von @ludocus realisieren, schau dich in diesem Thread etwas um da gibt es sicher schon eine Lösung,

    mfg autoBert

  • peethebee ist B.Sc.

    • autoBert
    • 2. September 2010 um 20:35

    einen herzlichen Glückwuunsch

    von autoBert

  • farbe von listviewspalte ändern

    • autoBert
    • 1. September 2010 um 21:40

    Hallo,

    benutze die SuFu BugFix hat afaik einen Post dazu veröffentlicht (LV SubItems einzeln färben, oder so ähnlich)

    mfg autoBert

  • Dropbox für Links aus Browsern

    • autoBert
    • 1. September 2010 um 21:31

    Hallo _peter_,

    da sich hier nich viele (ich bisher auch nur rudimentär) mit GuiRichEdit beschäftigen wäre es nett wenn du dein Ergebnis als Beispielskript postet
    ,

    mfg autoBert

  • Aus *.log datei einen verlauf erstellen mit GUI

    • autoBert
    • 1. September 2010 um 01:27

    Hallo BuFF,

    herzlich willkommen im Forum und viel Spass mit AutoIt.

    Hier kannst du dir die Hilfe herunterladen.
    Hier gibt es ein AutoIt-Tutorial: http://wiki.autoit.de/wiki/index.php/TutorialSehr hilfreich ist auch das Buch von peethebee

    und jetzt zu deinem Problem: idealerweise nimmst du dazu

    [autoit]

    _FileReadToArray; zum einelsen der Textdate
    GUICtrlCreateListView;um eine übersichliche ListView zu erstellen
    GUICtrlCreateListViewItem;um dieser LV Items hinzzufügen
    _GUICtrlListView_DeleteAllItems ; um vor dem Updaten der LV die enthaltenen Items zu löschen
    GUICtrlCreateCombo;um verschiedene Aktionen zu selektieren
    switch case endswitch; für die Fallnterscheidung beim selektieren
    for next; bzw Do Until

    [/autoit]

    dies als kleiner Auszug der nötigsten Funktionen.

    mfg autoBert

  • ListView - Mehrere Items auslesen

    • autoBert
    • 1. September 2010 um 01:04

    Hallo Dankeschön,

    warum splitest du den erhaltenen String zuerst um dann manuell wieder das Separator-Zeichen einzufügen? Du kannst doch gleich den ganzen String wegschreiben.

    Hier ein Beispiel zu LV in dem das lesen mehrere Items vorkommt:

    Spoiler anzeigen
    [autoit]

    #include <GUIConstantsEx.au3>
    #include <GUIConstants.au3>
    #include <WindowsConstants.au3>
    #include <GuiListView.au3>
    #include <ListViewConstants.au3>
    #include <File.au3>

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

    ;#include <array.au3>

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

    Local $tZeit, $s1, $s2

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

    $main = GUICreate("Test Drag & Drop from LV1 to LV2 DblClick in LV1 with ContextMenu in LV1 (copies to ClipBoard", 600, 400)
    $listview = GUICtrlCreateListView("Gruppe1| BlubText", 10, 10, 200, 100, BitOR($LVS_REPORT, $LVS_SHOWSELALWAYS), BitOR($LVS_EX_FULLROWSELECT, $WS_EX_CLIENTEDGE))
    GUICtrlSetBkColor(-1, $GUI_BKCOLOR_LV_ALTERNATE) ; legt fest, dass Hintergrundfarbe wechselt
    GUICtrlSetBkColor(-1, 0xE6E6FA) ; Hintergrundfarbe 1

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

    $listview2 = GUICtrlCreateListView("Gruppe2 | BlubText", 230, 10, 200, 100, BitOR($LVS_REPORT, $LVS_SHOWSELALWAYS), BitOR($LVS_EX_FULLROWSELECT, $WS_EX_CLIENTEDGE))
    GUICtrlSetState($listview2, $GUI_DROPACCEPTED)
    $hbtnInfo = GUICtrlCreateButton("Info (LV1)", 10, 120, 100, 20)
    $hbtnSave = GUICtrlCreateButton("&Speichern (LV2)", 230, 120, 100, 20)
    $hbtnLoad = GUICtrlCreateButton("&Laden (LV2)", 230, 150, 100, 20)

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

    For $i = 1 To 9
    $listitem = GUICtrlCreateListViewItem("test" & $i & " |Blub " & Random(1, 9), $listview)
    If $i = 5 Then GUICtrlSetFont($listitem, 14, 800)
    GUICtrlSetBkColor(-1, 0xcccccc) ; Hintergrundfarbe 2
    Next
    $hEdit =GUICtrlCreateEdit("",5,180,390,200)
    $idContextmenu = GUICtrlCreateContextMenu($listview)
    $idClipmenu = GUICtrlCreateMenuItem("Selektierte ins ClipBoard", $idContextmenu)
    $idAllClipmenu = GUICtrlCreateMenuItem("Alle aus Splate 2 ins ClipBoard", $idContextmenu)
    $idDragmenu = GUICtrlCreateMenuItem("In LV 2", $idContextmenu)

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

    GUIRegisterMsg($WM_NOTIFY, "WM_NOTIFY") ;<=========================================== Bemachrichtigung Doppelklick
    GUISetState()
    $first = True
    While 1
    $msg = GUIGetMsg()
    Switch $msg
    Case $GUI_EVENT_DROPPED, $idDragmenu
    $ar = _GUICtrlListView_GetSelectedIndices($listview, True)
    ;_ArrayDisplay($ar)
    For $i = 1 To $ar[0]
    $sItem = _GUICtrlListView_GetItemTextString($listview, $ar[$i])
    GUICtrlCreateListViewItem($sItem, $listview2)
    Next
    Case $hbtnInfo
    $Wert = _GUICtrlListView_GetItemTextArray($listview)
    If $Wert[2] <> "" Then
    MsgBox(0, "Eintrag für " & $Wert[1], "ist: " & $Wert[2])
    Else
    MsgBox(0, "", "Kein Eintrag ausgewählt")
    EndIf
    Case $hbtnSave
    SaveLV(@ScriptDir & "\LV2.DAT")
    Case $hbtnLoad
    LoadLV(@ScriptDir & "\LV2.DAT")
    Case $idClipmenu ;<==============================
    $aItems = _GUICtrlListView_GetSelectedIndices($listview, True)
    $sItemText = ""
    For $i = 1 To $aItems[0]
    ;Schleifenbeginn 1 da $aItem[0] die Anzahl enhält
    $sItemText &= _GUICtrlListView_GetItemTextString($listview, $aItems[$i]) & @CRLF
    ConsoleWrite($sItemText & @CRLF)
    Next ;= > weiter mit For
    ClipPut($sItemText & @CRLF)
    MsgBox(0,"","Jetzt einfach einmal CRTL-V drücken")
    ControlFocus($main,"",$hedit)
    Case $idAllClipmenu
    $sToClip = ""
    For $i = 0 To _GUICtrlListView_GetItemCount($listview)
    $aItem = _GUICtrlListView_GetItemTextArray($listview, $i)
    $sToClip &= $aItem[2] & @CRLF
    Next
    ClipPut($sToClip)
    MsgBox(0,"","Jetzt einfach einmal CRTL-v drücken")
    ControlFocus($main,"",$hedit)
    Case $GUI_EVENT_CLOSE
    Exit
    EndSwitch
    WEnd

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

    Func SaveLV($sFile)
    Local $hFileOut, $aItem
    $hFileOut = FileOpen($sFile, 2)
    For $j = 0 To _GUICtrlListView_GetItemCount($listview2) - 1
    $aItem = _GUICtrlListView_GetItemTextString($listview2, $j)
    FileWriteLine($hFileOut, $aItem)
    Next
    FileClose($hFileOut)
    EndFunc ;==>SaveLV

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

    Func LoadLV($sFile)
    Local $aItems
    If FileExists($sFile) Then
    _FileReadToArray($sFile, $aItems)
    If IsArray($aItems) Then
    _GUICtrlListView_DeleteAllItems($listview2)
    ;_ArrayDisplay($aItems)
    For $j = 1 To $aItems[0]
    GUICtrlCreateListViewItem($aItems[$j], $listview2)
    Next
    EndIf
    EndIf
    EndFunc ;==>LoadLV

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

    Func WM_NOTIFY($hWnd, $MsgID, $wParam, $lParam)
    Local $tagNMHDR, $event, $hwndFrom, $code
    $tagNMHDR = DllStructCreate("int;int;int", $lParam)
    If @error Then Return 0
    $code = DllStructGetData($tagNMHDR, 3)
    If $wParam = $listview Then
    ;ConsoleWrite($code & @CRLF)
    Switch $code
    ;case -2 ;Klick
    Case -3 ;Doppelklick
    If _GUICtrlListView_GetSelectedCount($listview) > 0 Then
    For $i = 0 To _GUICtrlListView_GetItemCount($listview)
    If _GUICtrlListView_GetItemSelected($listview, $i) Then
    $aItem = _GUICtrlListView_GetItemTextArray($listview, $i)
    MsgBox(0, "Doppel-Klick auf ", $aItem[1] & @CRLF & @CRLF & $aItem[2])
    EndIf
    Next
    EndIf
    EndSwitch
    EndIf
    Return $GUI_RUNDEFMSG
    EndFunc ;==>WM_NOTIFY

    [/autoit]

    Schau dir den Case-Zweig für $idClipmenu (Kontextmenü | Selektierte ins ClipBoard) an,

    mfg autoBert

  • Zeile aus einer datei suchen und in diese schreiben

    • autoBert
    • 31. August 2010 um 15:40

    Hallo ophiel,

    so z.B.:

    [autoit]

    #include <File.au3>
    #include <array.au3>
    #Include <String.au3>
    Local $aLines
    _FileReadToArray(@ScriptDir & "\DeineDatei.TXT",$aLines)
    _ArrayDelete($aLines,0) ;1. Zeile (=ANzahl der eigelesenen Zeilen) löschen
    _ArrayDisplay($aLines,"vorher")
    $iSepCount = StringInStr($aLines[0],$sSep)
    For $i = 1 To UBound($aLines) -1
    if $aLines[$i]= "" Then
    $aLines[$i]= "klaus"
    ExitLoop
    EndIf
    Next
    _ArrayDisplay($aLines,"nachher")
    _FileWriteFromArray(@ScriptDir & "\DeineDatei.TXT",$aLines)

    [/autoit]

    mfg autoBert

  • Wie ist meine IP und IE

    • autoBert
    • 31. August 2010 um 15:12

    Hallo GtaSpider,

    leider sind die Werte dieser Seite zumindest bei meinem Test (Web'n'Walk Zugang leider nur GPRS-Verbindung) absolut unrealistisch:

    Zitat

    Your speed: 615.385 Kbps
    Your latency: 0.629 seconds
    Transferred 100 KB in 1.3 seconds

    Your speed: 1649.485 Kbps
    Your latency: 0.739 seconds
    Transferred 1000 KB in 4.85 seconds
    Share your results with everyone!

    Your speed: 2689.98 Kbps
    Your latency: 0.852 seconds
    Transferred 5000 KB in 14.87 seconds

    Alles anzeigen

    hier im Verglich dazu der Wert den mein Skript (in
    Post5: [ offen ] Wie ist meine IP und IE veröffnetlicht) ermittelt: KiloBytes/sec:18.66. => 149,28 kilobits/sec

    mfg autoBert

  • Datei Eigenschaften dialog

    • autoBert
    • 30. August 2010 um 22:24

    Hallo GummiBaer,

    laut Hilfe klappt Shellexecute mit dem Verb properties. Dies klappt bei mir (WinXP SP3) aber nicht,

    mfg autoBert

  • Wie ist meine IP und IE

    • autoBert
    • 30. August 2010 um 22:01

    Hallo billemg,

    Zitat

    Uns wurde berichtet, dass bei Verwendung von Sicherheits-Software (z.B. GData, ZoneAlarm und anderen) zu hohe Geschwindigkeiten gemessen werden können. Diese Programme können die Messung beeinflussen. Falls Sie diese Software oder eine ähnliche im Einsatz haben, sollten Sie sie für die Dauer des Tests nicht nur deaktivieren, sondern komplett ausschalten. Nach dem Test aber bitte wieder einschalten!

    Allein dieser Hinweis würde mich schon daran hindern dein Skript auszuführen, [Edit] ich habe auch keinen DSL-Anschluss sorry[/Edit]

    Wie man seine IP bekommt hat dir ja Andy schon einen Link gegeben. Um Geschwindigkeit (zmdindest Download) zu messen tut es doch das leicht abgeänderte Beispiel zu InetGetInfo:

    Spoiler anzeigen
    [autoit]

    #Region ;**** Directives created by AutoIt3Wrapper_GUI ****
    #AutoIt3Wrapper_UseUpx=n
    #EndRegion ;**** Directives created by AutoIt3Wrapper_GUI ****
    #include <Date.au3>
    #include <array.au3>

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

    HttpSetUserAgent("Mozilla/5.0 (Windows; U; Windows NT 5.1; de; rv:1.9.2.7) Gecko/20100713 Firefox/3.6.7") ; User-Agent (Header) von AutoIt3 ändern, da beim Webhoster dieser gesperrt ist

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

    Global $tDiff, $iToDo, $iRTime, $sMSG, $nKBPerSec
    $sUrl = "http://www.autoit.de/index.php?page=Attachment&attachmentID=11114&h=beba65ec5902954c0a69497d69cec8e8cda0c556"
    ;url eventell gegen einen anderen größeren Download tauschen, dann aber bitte auch $sPath ändern
    $sPath = @DesktopCommonDir & "\JaYT-DwiMP3-P.exe"
    Global $iSize = InetGetSize($sUrl) ;siehe Hilfe zu InetgetSize
    If $iSize = 0 Then $iSize = 996371 ;sollte eigentlich nicht vorkommen
    Global $tStart = TimerInit()
    $hDownLoad = InetGet($sUrl, $sPath, 1, 1)
    Dim $aData[3]

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

    Do
    Sleep(250)
    If $aData[0] > 0 Then
    _CalcPerformance($aData[0], $aData[2])
    TrayTip("downloading", $sMSG, 10, 16)
    EndIf
    $aData = InetGetInfo($hDownLoad, -1)
    Until $aData[2]
    $aData = InetGetInfo($hDownLoad, -1)
    _CalcPerformance($aData[0], $aData[2])

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

    InetClose($hDownLoad) ; Handle schließen um die Resourcen freizugeben.
    MsgBox(0, "", "Bytes gelesen: " & $aData[0] & @CRLF & _
    "Größe: " & $aData[1] & @CRLF & _
    "beendet?: " & $aData[2] & @CRLF & _
    "Erfolgreich?: " & $aData[3] & @CRLF & _
    "@error: " & $aData[4] & @CRLF & _
    "@extended: " & $aData[5] & @CRLF & @CRLF & _
    "KiloBytes/sec:" & $nKBPerSec)

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

    ;FileDelete(@ScriptDir & "\Testdownload.htm")

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

    Func _CalcPerformance($iRead, $bDone)

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

    $tDiff = TimerDiff($tStart)
    $iToDo = Round(($iSize - $iRead) / 1024, 2)
    $nKBPerSec = Round($iRead / $tDiff * 1000 / 1024, 2)
    $iPercent = Round($iRead / $iSize * 100, 2)
    if ($iSize = 0) And Not $bDone Then
    $iRTime = "unbekannt"
    Else
    $iRTime = Round($iToDo / $nKBPerSec, 0)
    EndIf
    $sMSG = Round($iRead / 1024) & "/" & Round($iSize / 1024, 0) & " KB " & " = " & $iPercent & "%" & @CRLF
    $sMSG &= "durchschnittlich KB/s = " & $nKBPerSec & @CRLF ;& "aktuell: KB/s " & $nKBAct & @CRLF
    If Not $bDone Then
    $sMSG = $sMSG & "vermutlich zu Ende:" & StringLeft(StringRight(_DateAdd('s', $iRTime, _NowCalc()), 8), 5)
    ;ConsoleWrite($sMSG & @CRLF)
    Else
    $sMSG = $sMSG & "benötigte Zeit = " & Round($tDiff / 1000, 0)
    EndIf
    ;if $iSize > 0 Then $sMSG = $sMSG & " sec"
    EndFunc ;==>_CalcPerformance

    [/autoit]

    mfg autoBert

  • Func in einer schleife erstellen geht das?

    • autoBert
    • 30. August 2010 um 20:54

    Marthog,

    es geht nicht um das aufrufen, sondern um das erstellen und das geht definitiv nicht. Wenn man aber (wie Schnitzel schon postete) Parameter verwendet kann man eine universale Func für alle Buttons schreiben,

    mfg autoBert

  • Cfg Lesen schreiben

    • autoBert
    • 30. August 2010 um 20:40

    welches Tool? poste doch einfach dein komplettes Skript damit man sieh wo dein Tool (=Skript?) schreibt bzw.liest

    Edit: bitte auch die INI-Datei (gezippt) mit anhängen
    mfg autoBert

  • Cfg Lesen schreiben

    • autoBert
    • 30. August 2010 um 20:35

    Wenn du in deine cfg Datei mit IniWrite schreibst, kannst du das natürlich auch wieder mit IniRead auslesen. Die INI-Befehle interessiert die Dateienduung nicht sondern nur ob die Datei Ini-Konform aufgebaut ist:

    Zitat von Hilfe zu IniWrite

    Bemerkungen

    Eine standardkonforme .ini-Datei sieht folgendermaßen aus:
    [SektionsName]
    Schlüssel=Wert

    Wenn die Datei nicht existiert, wird sie erstellt. Verzeichnisse, die nicht existieren, werden nicht angelegt. Schlüssel und/oder Sektionen werden am Ende angehängt und in keiner Weise sortiert.
    Wenn ein Wert in Anführungszeichen angegeben wird, so werden die Anführungszeichen entfernt. Wenn die Anführungszeichen ausgegeben werden sollen, so müssen sie gedoppelt werden, z.B.: ""Dies ist ein Test"" ergibt in der Datei "Dies ist ein Test".
    Voranstehende und nachfolgende Leerzeichen werden entfernt. Um die Leerzeichen beizubehalten, muss der String in Anführungszeichen gesetzt werden. Beispiel: " Dies ist ein Test" wird die Leerzeichen erhalten. Jedoch werden die Anführungszeichen entfernt.
    Mehrzeilige Werte sind nicht möglich.

    mfg autoBert

  • Exe unsichtbar öffnen

    • autoBert
    • 30. August 2010 um 20:11

    Hallo sp3333dy,

    was soll das pushen nach 10 Minten?

    Bevor das Rätselraten weiter geht poste doch dein Skript und benenne das Programm, das du automaisieren möchtest, oder da

    Zitat von Hife zu ControlClick

    Bemerkungen

    Einige Controls in inaktiven Fenstern widerstehen Klicks, bis das Fenster das aktive Fenster ist. Hierzu ist zuerst die WinActivate()-Funktion zu benutzen, um das Fenster in den Vordergrund zu zwingen.


    finde dich damit ab, das es nicht funktioniert,

    mfg autoBert

  • Excel, öffnen einer csv Datei mit autoit

    • autoBert
    • 29. August 2010 um 21:42

    Hallo oh-ha,

    Zitat von Andy

    Wieso fügst du die fehlenden Feldtrenner nicht per AutoIt in die CSV ein bzw machst die CSV Excel-tauglich?
    Sollten doch nur eine Handvoll Zeilen Code sein....

    bist du so bequem oder was hindert dich daran die paar Zeilen Code zu schreiben?

    [autoit]

    #include <File.au3>
    #include <array.au3>
    #Include <String.au3>

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

    $aLines = ""
    $sSep =";"
    _FileReadToArray(@ScriptDir & "\CSVwrong.csv",$aLines)
    _ArrayDelete($aLines,0) ;1. Zeile (=ANzahl der eigelesenen Zeilen) löschen
    _ArrayDisplay($aLines,"Falsches Format")
    $iSepCount = StringInStr($aLines[0],$sSep)
    For $i = 1 To UBound($aLines) -1
    $sLine = $aLines[$i]
    StringReplace($sLine,$sSep,"")
    $iDif = $iSepCount - @extended
    if $iDif >0 Then $aLines[$i] &= $aLines[$i] & _StringRepeat($sSep,$iDif)
    Next
    _ArrayDisplay($aLines,"richtiges Format")
    _FileWriteFromArray(@ScriptDir & "\CSVcorrect.csv",$aLines)

    [/autoit]

    mfg autoBert

  • StringInStr mit platzhalter

    • autoBert
    • 29. August 2010 um 15:45

    Schau dir die Hilfe zu

    [autoit]

    IniReadSectionNames

    [/autoit]

    an

    mfg autoBert

  • Gleiche Werte aus Quelltext auslesen

    • autoBert
    • 29. August 2010 um 02:51

    Hallo texos

    Zitat von Texos

    das dauert aber zu lange bei 49 bildern... sie immer alle auf den pc zu laden etc.


    hast du mein Edit in meinem vorhergehenden Post nicht gelesen, habe diese Anregungen in ein Beispielskript umgesetzt: [Beispiel] Bild aus Inet auf Gui anzeigen ohne ein TMP-File zu erzeugen

    mfg autoBert

  • [Beispiel] Bild aus Inet auf Gui anzeigen ohne ein TMP-File zu erzeugen

    • autoBert
    • 29. August 2010 um 02:46

    angeregt durch [ offen ] Gleiche Werte aus Quelltext auslesen wollte ich natürlich Wissen ob meine Theorie stimmt. Zu allererst ein grosses Danke an UEZ bis auf lächerliche 6 Zeilen Code von mir selbst, ist das komplette Skript aus Skripten von ihm zusammenkopiert).

    Und hier ist das Wunderwerk:

    Spoiler anzeigen
    [autoit]

    ; *** Start added by AutoIt3Wrapper ***
    #include <GUIConstantsEx.au3>
    ; *** End added by AutoIt3Wrapper ***
    #region ;**** Directives created by AutoIt3Wrapper_GUI ****
    #AutoIt3Wrapper_Add_Constants=n
    #endregion ;**** Directives created by AutoIt3Wrapper_GUI ****
    #include <GDIPlus.au3>
    #include <Memory.au3>
    #include <INet.au3>
    #include <String.au3>

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

    Local Const $width = 351
    Local Const $height = 470
    Local $hGraphics, $hBackbuffer, $hBitmap, $i, $pi_div_180 = 4 * ATan(1) / 180
    Local $w_h = $width * 0.5, $h_h = $height * 0.5

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

    Local $title = "Shows Pic from Inet without TMP-File"
    Local $sInfo = "Danke UEZ für:"
    Local $sInfo1 = "Load_BMP_From_Mem"
    Local $sInfo2 = "_WinAPI_CreateStreamOnHGlobal"
    Local $sInfo3 = "_GDIPlus_BitmapCreateFromStream"

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

    Opt("GUIOnEventMode", 1)
    $hwnd = GUICreate($title, $width, $height, -1, -1)
    GUISetOnEvent($GUI_EVENT_CLOSE, "_exit")
    GUISetState()

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

    _GDIPlus_Startup()
    $hGraphics = _GDIPlus_GraphicsCreateFromHWND($hwnd)
    $hBitmap = _GDIPlus_BitmapCreateFromGraphics($width, $height, $hGraphics)
    $hBackbuffer = _GDIPlus_ImageGetGraphicsContext($hBitmap)
    _GDIPlus_GraphicsSetSmoothingMode($hBackbuffer, 2)
    $hImage = Load_BMP_From_Mem(LoadPicFromInet("http://1.2.3.11/bmi/www.autoit.de/wcf/images/avatars/avatar-865.png"))
    _GDIPlus_GraphicsDrawImageRect($hBackbuffer, $hImage, 0, 0, $width, $height)
    _GDIPlus_GraphicsDrawImageRect($hGraphics, $hBitmap, 0, 0, $width, $height) ;kopiere Backbuffer in die GUI
    $hBrush = _GDIPlus_BrushCreateSolid(); $Color)
    $hFormat = _GDIPlus_StringFormatCreate()
    $hFamily = _GDIPlus_FontFamilyCreate("Arial")
    $hFont = _GDIPlus_FontCreate($hFamily, 18, 5)
    $tLayout = _GDIPlus_RectFCreate($width - 190, $height - 130)
    $aInfo = _GDIPlus_GraphicsMeasureString($hGraphics, $sInfo, $hFont, $tLayout, $hFormat)
    _GDIPlus_GraphicsDrawStringEx($hGraphics, $sInfo, $hFont, $aInfo[0], $hFormat, $hBrush)
    $hFont = _GDIPlus_FontCreate($hFamily, 12, 2)
    $tLayout = _GDIPlus_RectFCreate($width - 280, $height - 80)
    $aInfo = _GDIPlus_GraphicsMeasureString($hGraphics, $sInfo1, $hFont, $tLayout, $hFormat)
    _GDIPlus_GraphicsDrawStringEx($hGraphics, $sInfo1, $hFont, $aInfo[0], $hFormat, $hBrush)
    $tLayout = _GDIPlus_RectFCreate($width - 280, $height - 60)
    $aInfo = _GDIPlus_GraphicsMeasureString($hGraphics, $sInfo2, $hFont, $tLayout, $hFormat)
    _GDIPlus_GraphicsDrawStringEx($hGraphics, $sInfo2, $hFont, $aInfo[0], $hFormat, $hBrush)
    $tLayout = _GDIPlus_RectFCreate($width - 280, $height - 40)
    $aInfo = _GDIPlus_GraphicsMeasureString($hGraphics, $sInfo3, $hFont, $tLayout, $hFormat)
    _GDIPlus_GraphicsDrawStringEx($hGraphics, $sInfo3, $hFont, $aInfo[0], $hFormat, $hBrush)
    GUIRegisterMsg(0x000F, "WM_PAINT") ;$WM_PAINT = 0x000F

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

    While 1
    WEnd

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

    Func _exit()
    _GDIPlus_ImageDispose($hImage)
    _GDIPlus_FontDispose($hFont)
    _GDIPlus_BrushDispose($hBrush)
    _GDIPlus_GraphicsDispose($hBackbuffer)
    _GDIPlus_BitmapDispose($hBitmap)
    _GDIPlus_GraphicsDispose($hGraphics)
    _GDIPlus_Shutdown()
    Exit
    EndFunc ;==>_exit

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

    Func LoadPicFromInet($sUrl)
    Return "0x" & _StringToHex(_INetGetSource($sUrl, True))
    EndFunc ;==>LoadPicFromInet

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

    Func WM_PAINT()
    _GDIPlus_GraphicsDrawImageRect($hGraphics, $hBitmap, 0, 0, $width, $height) ;kopiere Backbuffer in die GUI
    Return "GUI_RUNDEFMSG"
    EndFunc

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

    Func Load_BMP_From_Mem($pic)
    ;UEZ postet in http://www.autoit.de/index.php?page…0225#post170225
    Local $memBitmap, $len, $tMem, $hImage, $hData, $pData, $hStream, $hBitmapFromStream
    $memBitmap = Binary($pic)
    $len = BinaryLen($memBitmap)

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

    $hData = _MemGlobalAlloc($len, 0x0002)
    $pData = _MemGlobalLock($hData)
    $tMem = DllStructCreate("byte[" & $len & "]", $pData)
    DllStructSetData($tMem, 1, $memBitmap)
    _MemGlobalUnlock($hData)

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

    $hStream = _WinAPI_CreateStreamOnHGlobal($pData)
    $hBitmapFromStream = _GDIPlus_BitmapCreateFromStream($hStream)
    $tMem = ""
    Return $hBitmapFromStream
    EndFunc ;==>Load_BMP_From_Mem

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

    Func _WinAPI_CreateStreamOnHGlobal($hGlobal = 0, $fDeleteOnRelease = True)
    ;UEZ postet in http://www.autoit.de/index.php?page…0225#post170225
    Local $aResult = DllCall("ole32.dll", "int", "CreateStreamOnHGlobal", "hwnd", $hGlobal, "int", $fDeleteOnRelease, "ptr*", 0)
    If @error Then Return SetError(@error, @extended, 0)
    Return $aResult[3]
    EndFunc ;==>_WinAPI_CreateStreamOnHGlobal

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

    Func _GDIPlus_BitmapCreateFromStream($pStream)
    ;UEZ postet in http://www.autoit.de/index.php?page…0225#post170225
    Local $aResult = DllCall($ghGDIPDll, "uint", "GdipCreateBitmapFromStream", "ptr", $pStream, "int*", 0)
    If @error Then Return SetError(@error, @extended, 0)
    Return $aResult[2]
    EndFunc ;==>_GDIPlus_BitmapCreateFromStream

    [/autoit]

    Ps.: ich selbst werde bei solchen Anlässen weiter den koventionellen Weg

    [autoit]

    InetGet
    GuiCtrlCreatePic

    [/autoit]

    gehen, wollte nur aufzeigen dass es funktioniert,

    Edit: Skript ausgetauscht um dem GDI+ Meister gebührend zu danken für seine Funktionen, speziell

    • Load_BMP_From_Mem
    • _WinAPI_CreateStreamOnHGlobal
    • _GDIPlus_BitmapCreateFromStream

    Bei Verwendung dieser Funktionen bestehe ich auch auf der Nennung von UEZ als Urheber,

    mfg autoBert

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™