Beiträge von autoBert
-
-
Hallo zero2q,
mach es so:
Spoiler anzeigen
[autoit]#include <ButtonConstants.au3>
[/autoit] [autoit][/autoit] [autoit]
#include <GUIConstantsEx.au3>
#include <GUIListBox.au3>
#include <StaticConstants.au3>
#include <WindowsConstants.au3>
#include <File.au3>$sFilePath = @ScriptDir & "\Test.txt"
[/autoit] [autoit][/autoit] [autoit]
if not FileExists($sFilePath) then
For $i = 1 to 9
FileWriteLine($sFilePath,$i &". Link")
Next
EndIf
Global $links[1]$Form3 = GUICreate("Form1", 405, 296, 302, 218)
[/autoit] [autoit][/autoit] [autoit][/autoit] [autoit]
$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)While 1
[/autoit]
$nMsg = GUIGetMsg()
Switch $nMsg
Case $GUI_EVENT_CLOSE
Exit
EndSwitch
WEnddu must nur noch den Pfad zu deiner Datei anpassen,
mfg autoBert
-
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
-
einen herzlichen Glückwuunsch
von autoBert
-
Hallo,
benutze die SuFu BugFix hat afaik einen Post dazu veröffentlicht (LV SubItems einzeln färben, oder so ähnlich)
mfg autoBert
-
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
-
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 peethebeeund jetzt zu deinem Problem: idealerweise nimmst du dazu
[autoit]_FileReadToArray; zum einelsen der Textdate
[/autoit]
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 Untildies als kleiner Auszug der nötigsten Funktionen.
mfg autoBert
-
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>
[/autoit] [autoit][/autoit] [autoit]
#include <GUIConstants.au3>
#include <WindowsConstants.au3>
#include <GuiListView.au3>
#include <ListViewConstants.au3>
#include <File.au3>;#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)
[/autoit] [autoit][/autoit] [autoit][/autoit] [autoit]
$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$listview2 = GUICtrlCreateListView("Gruppe2 | BlubText", 230, 10, 200, 100, BitOR($LVS_REPORT, $LVS_SHOWSELALWAYS), BitOR($LVS_EX_FULLROWSELECT, $WS_EX_CLIENTEDGE))
[/autoit] [autoit][/autoit] [autoit]
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)For $i = 1 To 9
[/autoit] [autoit][/autoit] [autoit]
$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)GUIRegisterMsg($WM_NOTIFY, "WM_NOTIFY") ;<=========================================== Bemachrichtigung Doppelklick
[/autoit] [autoit][/autoit] [autoit]
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
WEndFunc SaveLV($sFile)
[/autoit] [autoit][/autoit] [autoit]
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 ;==>SaveLVFunc LoadLV($sFile)
[/autoit] [autoit][/autoit] [autoit][/autoit] [autoit]
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 ;==>LoadLVFunc WM_NOTIFY($hWnd, $MsgID, $wParam, $lParam)
[/autoit]
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_NOTIFYSchau dir den Case-Zweig für $idClipmenu (Kontextmenü | Selektierte ins ClipBoard) an,
mfg autoBert
-
Hallo ophiel,
so z.B.:
[autoit]#include <File.au3>
[/autoit]
#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)mfg autoBert
-
Hallo GtaSpider,
leider sind die Werte dieser Seite zumindest bei meinem Test (Web'n'Walk Zugang leider nur GPRS-Verbindung) absolut unrealistisch:
ZitatAlles anzeigenYour speed: 615.385 Kbps
Your latency: 0.629 seconds
Transferred 100 KB in 1.3 secondsYour 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 secondshier 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/secmfg autoBert
-
Hallo GummiBaer,
laut Hilfe klappt Shellexecute mit dem Verb properties. Dies klappt bei mir (WinXP SP3) aber nicht,
mfg autoBert
-
Hallo billemg,
ZitatUns 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 ****
[/autoit] [autoit][/autoit] [autoit][/autoit] [autoit]
#AutoIt3Wrapper_UseUpx=n
#EndRegion ;**** Directives created by AutoIt3Wrapper_GUI ****
#include <Date.au3>
#include <array.au3>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
[/autoit] [autoit][/autoit] [autoit]
$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]Do
[/autoit] [autoit][/autoit] [autoit]
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])InetClose($hDownLoad) ; Handle schließen um die Resourcen freizugeben.
[/autoit] [autoit][/autoit] [autoit]
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);FileDelete(@ScriptDir & "\Testdownload.htm")
[/autoit] [autoit][/autoit] [autoit]Func _CalcPerformance($iRead, $bDone)
[/autoit] [autoit][/autoit] [autoit]$tDiff = TimerDiff($tStart)
[/autoit]
$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 ;==>_CalcPerformancemfg autoBert
-
-
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 -
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 IniWriteBemerkungen
Eine standardkonforme .ini-Datei sieht folgendermaßen aus:
[SektionsName]
Schlüssel=WertWenn 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
-
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 ControlClickBemerkungen
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
-
Hallo oh-ha,
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>
[/autoit][autoit][/autoit][autoit]
#include <array.au3>
#Include <String.au3>$aLines = ""
[/autoit]
$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)mfg autoBert
-
Schau dir die Hilfe zu
[autoit]IniReadSectionNames
[/autoit]an
mfg autoBert
-
Hallo 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 erzeugenmfg autoBert
-
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 ***
[/autoit] [autoit][/autoit] [autoit][/autoit] [autoit]
#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>Local Const $width = 351
[/autoit] [autoit][/autoit] [autoit]
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.5Local $title = "Shows Pic from Inet without TMP-File"
[/autoit] [autoit][/autoit] [autoit]
Local $sInfo = "Danke UEZ für:"
Local $sInfo1 = "Load_BMP_From_Mem"
Local $sInfo2 = "_WinAPI_CreateStreamOnHGlobal"
Local $sInfo3 = "_GDIPlus_BitmapCreateFromStream"Opt("GUIOnEventMode", 1)
[/autoit] [autoit][/autoit] [autoit]
$hwnd = GUICreate($title, $width, $height, -1, -1)
GUISetOnEvent($GUI_EVENT_CLOSE, "_exit")
GUISetState()_GDIPlus_Startup()
[/autoit] [autoit][/autoit] [autoit]
$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 = 0x000FWhile 1
[/autoit] [autoit][/autoit] [autoit][/autoit] [autoit]
WEndFunc _exit()
[/autoit] [autoit][/autoit] [autoit]
_GDIPlus_ImageDispose($hImage)
_GDIPlus_FontDispose($hFont)
_GDIPlus_BrushDispose($hBrush)
_GDIPlus_GraphicsDispose($hBackbuffer)
_GDIPlus_BitmapDispose($hBitmap)
_GDIPlus_GraphicsDispose($hGraphics)
_GDIPlus_Shutdown()
Exit
EndFunc ;==>_exitFunc LoadPicFromInet($sUrl)
[/autoit] [autoit][/autoit] [autoit]
Return "0x" & _StringToHex(_INetGetSource($sUrl, True))
EndFunc ;==>LoadPicFromInetFunc WM_PAINT()
[/autoit] [autoit][/autoit] [autoit]
_GDIPlus_GraphicsDrawImageRect($hGraphics, $hBitmap, 0, 0, $width, $height) ;kopiere Backbuffer in die GUI
Return "GUI_RUNDEFMSG"
EndFuncFunc Load_BMP_From_Mem($pic)
[/autoit] [autoit][/autoit] [autoit]
;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)$hData = _MemGlobalAlloc($len, 0x0002)
[/autoit] [autoit][/autoit] [autoit]
$pData = _MemGlobalLock($hData)
$tMem = DllStructCreate("byte[" & $len & "]", $pData)
DllStructSetData($tMem, 1, $memBitmap)
_MemGlobalUnlock($hData)$hStream = _WinAPI_CreateStreamOnHGlobal($pData)
[/autoit] [autoit][/autoit] [autoit][/autoit] [autoit]
$hBitmapFromStream = _GDIPlus_BitmapCreateFromStream($hStream)
$tMem = ""
Return $hBitmapFromStream
EndFunc ;==>Load_BMP_From_MemFunc _WinAPI_CreateStreamOnHGlobal($hGlobal = 0, $fDeleteOnRelease = True)
[/autoit] [autoit][/autoit] [autoit]
;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_CreateStreamOnHGlobalFunc _GDIPlus_BitmapCreateFromStream($pStream)
[/autoit]
;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_BitmapCreateFromStreamPs.: ich selbst werde bei solchen Anlässen weiter den koventionellen Weg
[autoit]InetGet
[/autoit]
GuiCtrlCreatePicgehen, 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