hallo @Fabian,
was ein "schwarzes Bild" ist weis ich auch, nur tritt dieser Fehler bei mir nicht auf (ich kann ihn also nicht nachvollziehen).
Hast du die neue Version aus Post #1 getestet, passiert dies immer noch ![]()
mfg (Auto)Bert
hallo @Fabian,
was ein "schwarzes Bild" ist weis ich auch, nur tritt dieser Fehler bei mir nicht auf (ich kann ihn also nicht nachvollziehen).
Hast du die neue Version aus Post #1 getestet, passiert dies immer noch ![]()
mfg (Auto)Bert
halo fireman-HH,
danke für deine Hilfe kannst du vielleicht noch ein beispiel machen
hier:
#include <File.au3>
#include <array.au3>
$csvFile = @ScriptDir & "\fireman.csv"
Dim $arCSV
_FileReadToArray($csvFile, $arCSV)
_ArrayDelete($arCSV,0)
$aItem = StringSplit($arCSV[1], ";", 2)
$i = UBound($arCSV)
$j = UBound($aItem)
Dim $aNew[$i][$j]
_SplitInArray($arCSV, $aNew, ";")
_ArrayDisplay($aNew)
$aNew[1][1] = "X=U??"
_ArrayDisplay($aNew)
_SaveArray($csvFile, $aNew)
Func _SplitInArray($arCSV, ByRef $aNew, $sep = ";")
[/autoit] [autoit][/autoit] [autoit]For $i = 0 To UBound($arCSV) - 1
$aItem = StringSplit($arCSV[$i], $sep, 2)
For $j = 0 To UBound($aItem) - 1
$aNew[$i][$j] = $aItem[$j]
Next
Next
EndFunc ;==>_SplitInArray
Func _SaveArray($sFileName, ByRef $aNew, $sep = ";")
Local $s, $hFile = FileOpen($sFileName, 10)
For $i = 0 To UBound($aNew) - 1
For $j = 0 To UBound($aNew, 2) - 1
$s &= $aNew[$i][$j]
if $j <> (UBound($aNew, 2) - 1 )Then $s &= $sep
Next
$s &= @CRLF
Next
FileWrite($hFile, $s)
FileClose($hFile)
EndFunc ;==>_SaveArray
mfg (Auto)Bert
Hallo com,
Update ist draussen 0.8.1.2 siehe Post #1
Nice, aber bei mir sehen alle Bilder gleich aus. Das erste Bild passt, danach sind alles nur noch Kopien im Ordner enthalten.
dieser Bug ist damit beseitigt,
@@Fabian:
falls ich das Programm schliesse und erneut öffne krieg ich nur noch ein schwarzes Bild
diesen Fehler kann ich nicht nachvollziehen.
@all: hätte nict gedacht, das so ein kleines Beispiel so ein grosses Interesse weckt (immerhin schon 19 Downloads), falls ihr weitere Wünsche und Anregungen habt => einfach posten,
mfg (Auto)Bert
in dem Skript von Rodny le lude fehlen Funktionen (warscheins included)
>"C:\Programme\AutoIt3\SciTE\AutoIt3Wrapper\AutoIt3Wrapper.exe" /run /prod /ErrorStdOut /in "C:\Programme\AutoIt3\Examples\Tests\padTest.au3" /autoit3dir "C:\Programme\AutoIt3" /UserParams
+>16:44:38 Starting AutoIt3Wrapper v.2.0.1.24 Environment(Language:0407 Keyboard:00000407 OS:WIN_XP/Service Pack 3 CPU:X86 OS:X86)
>Running AU3Check (1.54.19.0) from:C:\Programme\AutoIt3
C:\Programme\AutoIt3\Examples\Tests\padTest.au3(39,43) : ERROR: DllStructSize(): undefined function.
DllStructSet($joy,1,DllStructSize($joy)
~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~^
C:\Programme\AutoIt3\Examples\Tests\padTest.au3(39,46) : ERROR: DllStructSet(): undefined function.
DllStructSet($joy,1,DllStructSize($joy),1)
~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~^
C:\Programme\AutoIt3\Examples\Tests\padTest.au3(64,38) : ERROR: DllStructPtr(): undefined function.
"ptr",DllStructPtr($lpJoy)
~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~^
C:\Programme\AutoIt3\Examples\Tests\padTest.au3(67,46) : ERROR: DllStructGet(): undefined function.
$coor[0] = DllStructGet($lpJoy,1,3)
~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~^
C:\Programme\AutoIt3\Examples\Tests\padTest.au3(85,25) : ERROR: DllStructFree(): undefined function.
DllStructFree($lpJoy)
~~~~~~~~~~~~~~~~~~~~~~~~^
C:\Programme\AutoIt3\Examples\Tests\padTest.au3 - 5 error(s), 0 warning(s)
!>16:44:38 AU3Check ended.rc:2
>Exit code: 0 Time: 3.062
Alles anzeigen
mfg (Auto)Bert
du kannst
[autoit]_GDIPlus_Startup()
[/autoit]vor die Schleife setzen
[autoit]_GDIPlus_Shutdown()
[/autoit]nach der setzen. Dies könnte eventuell auch helfen. Kannst du mir bitte aber erklären, warum du laufend den aktuellen Bildschirm und ein Textdokument überträgst und dabei das vorherige überschreibst,
mfg (Auto)Bert
Scha dir einmal meinen [Beispiel] Internetbrowser mit Ladebalken an, vielleicht bringt dich das ja auf die richtige Idee,
mfg (Auto)Bert
danke das hilft mit leider, nicht viel weiter. Da ich das scripte soweit fertig habe und jetzt halt nur noch daten rein schreiben muss.
Du kannst dir doch die Technik von funkey anschauen und umsetzen ==> alles in ein Array einlesen, im Array ändern, Array komplett abspeichern,
mfg (Auto)Bert
thanks ,sorry for asking.
schön, dann ist dein Problem ja gelöst, schön wäre es allerdings auch wenn du den Thread auf gelöst setzt. Einfach 1. Beitrag bearbeiten, Präfix (nähe Überschrift) ändern und speichern (absenden)
mfg (Auto)Bert
Scön dass du Verwendung für diese Routine hast. Mit FTP kenne ich mich mangels FTP-Server nicht aus, vermute aber dass ein sleep($Sleeptime) an der Stelle wo du die MsgBox setzt ausreicht,
mfg (Auto)Bert
mit dem script im ersten post verkleiner ich das bild auf 50KB mit deinem in 175kb. Im ersten ist zwar die quali nicht so gut aber das macht mir nix.Hauptsache es ist klein.Also wie mache ich das am besten jetzt :D?
einfach die func _imageResize mit deinen Daten aufrufen:
#include<Gdiplus.au3>
[/autoit] [autoit][/autoit] [autoit]$oFile = @ScriptDir & "\Bild.bmp" ;Pfade anpassen
$nFile = @ScriptDir & "\Bild8.jpg"
_GDIPlus_Startup()
Local $hImage = _GDIPlus_ImageLoadFromFile($oFile)
Local $ImageWidth = _GDIPlus_ImageGetWidth($hImage)
Local $ImageHeight = _GDIPlus_ImageGetHeight($hImage)
Local $NewImageWidth = ($ImageWidth / 100) * 50
Local $NewImageHeight = ($ImageHeight / 100) * 50
_ImageResize($oFile, $nFile, $NewImageWidth, $NewImageHeight) ;Breite Höhe 50%
;_ImageResize($oFile, $nFile, $ImageWidth, $ImageHeight) ;Original
_GDIPlus_ImageDispose($hImage)
_GDIPlus_Shutdown()
; Resize function
Func _ImageResize($sInImage, $sOutImage, $iW, $iH)
Local $hWnd, $hDC, $hBMP, $hImage1, $hImage2, $hGraphic, $CLSID, $i = 0
;OutFile path, to use later on.
Local $sOP = StringLeft($sOutImage, StringInStr($sOutImage, "\", 0, -1))
;OutFile name, to use later on.
Local $sOF = StringMid($sOutImage, StringInStr($sOutImage, "\", 0, -1) + 1)
;OutFile extension , to use for the encoder later on.
Local $Ext = StringUpper(StringMid($sOutImage, StringInStr($sOutImage, ".", 0, -1) + 1))
; Win api to create blank bitmap at the width and height to put your resized image on.
$hWnd = _WinAPI_GetDesktopWindow()
$hDC = _WinAPI_GetDC($hWnd)
$hBMP = _WinAPI_CreateCompatibleBitmap($hDC, $iW, $iH)
_WinAPI_ReleaseDC($hWnd, $hDC)
;Start GDIPlus
_GDIPlus_Startup()
;Get the handle of blank bitmap you created above as an image
$hImage1 = _GDIPlus_BitmapCreateFromHBITMAP ($hBMP)
;Load the image you want to resize.
$hImage2 = _GDIPlus_ImageLoadFromFile($sInImage)
;Get the graphic context of the blank bitmap
$hGraphic = _GDIPlus_ImageGetGraphicsContext ($hImage1)
;Draw the loaded image onto the blank bitmap at the size you want
_GDIPLus_GraphicsDrawImageRect($hGraphic, $hImage2, 0, 0, $iW, $iH)
;Get the encoder of to save the resized image in the format you want.
$CLSID = _GDIPlus_EncodersGetCLSID($Ext)
;Generate a number for out file that doesn't already exist, so you don't overwrite an existing image.
Do
$i += 1
Until (Not FileExists($sOP & $i & "_" & $sOF))
;Prefix the number to the begining of the output filename
$sOutImage = $sOP & $i & "_" & $sOF
;Save the new resized image.
_GDIPlus_ImageSaveToFileEx($hImage1, $sOutImage, $CLSID)
;Clean up and shutdown GDIPlus.
_GDIPlus_ImageDispose($hImage1)
_GDIPlus_ImageDispose($hImage2)
_GDIPlus_GraphicsDispose ($hGraphic)
_WinAPI_DeleteObject($hBMP)
_GDIPlus_Shutdown()
EndFunc ;==>_ImageResize
Dass das 1. Skript weniger kb verbraucht ist logisch weil ja gleichzeitig auch die Breite und Höhe auf 50% reduziert werden. Wenn du die Routine mit den Originalmassen aufrufst ist die Grösse idedntisch zu meiner Lösung.
Hier kannst du dir die Hilfe herunterladen. Darin solltest du auch die nativen AutoIt-Funktionen durcharbeiten, damit du die Grundlagen beherscht,
mfg (Auto)Bert
Micha_he danke, habs berichtigt,
mfg (Auto)Bert
Dafür kannst d GDI+ vcverwenden:
#include<Gdiplus.au3>
[/autoit] [autoit][/autoit] [autoit][/autoit] [autoit]_GDIPlus_Startup()
[/autoit] [autoit][/autoit] [autoit][/autoit] [autoit]$oFile = @ScriptDir & "\Bild.bmp" ;Pfade anpassen
$nFile = @ScriptDir & "\Bild7.jpg"
#cs
Local $aDT = FileGetTime($oFile, 1, 0)
$sInfo = $aDT[0] & "/" & $aDT[1] & "/" & $aDT[2] & " " & $aDT[3] & ":" & $aDT[4] & ":" & $aDT[5]
ConsoleWrite($sInfo & @CRLF)
#ce
$himg = _GDIPlus_ImageLoadFromFile($oFile)
$hGraphics = _GDIPlus_ImageGetGraphicsContext($himg)
#cs
$iX = _GDIPlus_ImageGetWidth($himg)
$iy = _GDIPlus_ImageGetHeight($himg)
$hBrush = _GDIPlus_BrushCreateSolid(); $Color)
$hFormat = _GDIPlus_StringFormatCreate()
$hFamily = _GDIPlus_FontFamilyCreate("Arial")
$hFont = _GDIPlus_FontCreate($hFamily, 20, 2)
$tLayout = _GDIPlus_RectFCreate($iX -220, $iY - 30)
$aInfo = _GDIPlus_GraphicsMeasureString($hGraphics, $sInfo, $hFont, $tLayout, $hFormat)
_GDIPlus_GraphicsDrawStringEx($hGraphics, $sInfo, $hFont, $aInfo[0], $hFormat, $hBrush)
#ce
_GDIPlus_GraphicsDrawImage($hGraphics, $himg, 0, 0)
_GDIPlus_ImageSaveToFile($himg, $nFile)
;_GDIPlus_BrushDispose($hBrush)
_GDIPlus_ImageDispose($himg)
_GDIPlus_Shutdown()
ShellExecute($nFile)
die auskommentierten Zeilen würden das Änderungsdatum der Originaldatei in die neue schreiben
mfg (Auto)Bert
Hallo neuton,
herzlich willkommen im Forum und viel Spass an 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
Du verwendest doch gar keine ListView-Control (und daher auch keine ListViewItems) sondern eine List-Control.
ich habe dein Skript mal etwas angepasst:
; *** Start added by AutoIt3Wrapper ***
#include <ListBoxConstants.au3>
#include <WindowsConstants.au3>
; *** End added by AutoIt3Wrapper ***
#Region ;**** Directives created by AutoIt3Wrapper_GUI ****
#AutoIt3Wrapper_Add_Constants=n
#EndRegion ;**** Directives created by AutoIt3Wrapper_GUI ****
#include <GUIConstantsEx.au3>
#include <Array.au3>
#include <File.au3>
Opt("GUIOnEventMode", 1)
GUICreate("Das ist meine erste Gui", 600, 600)
$Button1 = GUICtrlCreateButton("lol", 30, 30)
GUICtrlSetOnEvent($Button1, "_msg")
$Exit = GUICtrlCreateButton("Ende", 60, 30)
GUICtrlSetOnEvent($Exit, "close")
GUISetOnEvent($GUI_EVENT_CLOSE, "close")
;GUISetOnEvent($GUI_EVENT_MINIMIZE, "minimize")
$input = GUICtrlCreateInput("", 120, 30)
$msg = GUIGetMsg()
$array = WinList()
$list = GUICtrlCreateList("", 250, 60, 100, 300,BitOr($LBS_NOTIFY, $WS_VSCROLL, $WS_BORDER) )
;<==== da ansonsten die Einträge sortiert werden da im default zusätzlich noch $LBS_SORT gesetzt
GUISetState(@SW_SHOW)
[/autoit] [autoit][/autoit] [autoit]#region datei
$file = @ScriptDir & "\Hallo.txt"
MsgBox(0, "", _FileCountLines($file))
$text = _Dateilesen($file)
_ArrayDisplay($text)
#endregion
For $i = 0 To UBound($text) - 1 ;Step + 1 nicht nötig da Standard
;<========== Arrays beginnen bei 0
; MsgBox(0, "", $text[$i])
GUICtrlSetData($list,$text[$i] & @CR)
Next
While 1
Sleep(20)
WEnd
Func _Dateilesen($path)
Local $dateien[1] = ["0"]
Local $icheck = 0
For $j = 1 To _FileCountLines($file) Step +1
If $icheck = 0 Then
$dateien[0] = FileReadLine($path, $j)
$icheck = 1
Else
_ArrayAdd($dateien, FileReadLine($path, $j))
EndIf
Next
Return $dateien
EndFunc ;==>_Dateilesen
Func IsVisible($handle)
If BitAND(WinGetState($handle), 2) Then
Return 1
Else
Return 0
EndIf
EndFunc ;==>IsVisible
Func _msg()
MsgBox(0, "haha", "Funktioniert")
EndFunc ;==>_msg
Func close()
Exit
EndFunc ;==>close
die beiden wichtigen Stellen sind mit ;<===== gekennzeichnet
mfg (Auto)Bert
Hallo Com,
angeregt durch [ offen ] Webcam Ordner öffnen habe ich mich entschlossen ein Kleines Tool zu schreiben, um von der WebCam Schnappschüsse aufzunehmen.
#Region ;**** Directives created by AutoIt3Wrapper_GUI ****
#AutoIt3Wrapper_UseUpx=n
#EndRegion ;**** Directives created by AutoIt3Wrapper_GUI ****
#cs ----------------------------------------------------------------------------
AutoIt Version: 3.3.6.1
Author: autoBert http://www.autoit.de/index.php?page…2937#post182937
based on http://www.autoitscript.com/forum/index.ph…ndpost&p=572154
Script Function:
Demo for Webcam Udf
#ce ----------------------------------------------------------------------------
#include 'webcam.au3'
#include<GDIPlus.au3>
#Include <Misc.au3>
#include<array.au3>
$cam_xlength = 640;Breite
$cam_ylength = 480 ;Höhe
$sProgTitel ="SnapShot from WebCam"
$sProgVer = "v 0.8.1.3"
$capDir = @ScriptDir & "\captures"
If Not FileExists($capDir) Then DirCreate($capDir)
HotKeySet("{INSERT}", "SnapShot")
[/autoit] [autoit][/autoit] [autoit]If _Singleton($sProgTitel & $sProgVer, 1) = 0 Then
WinActivate($sProgTitel & $sProgVer)
Exit
EndIf
$gui = GUICreate($sProgTitel & $sProgVer, $cam_xlength, $cam_ylength + 20, 0, 0)
[/autoit] [autoit][/autoit] [autoit]$WebcamID = _WebcamOpen($gui, 0, 0, $cam_xlength + 30, $cam_ylength)
if $WebcamID = -1 Then
MsgBox(16,"Fehler","WebCam kann nicht initialisiert werden!")
exit
EndIf
$label1 = GUICtrlCreateLabel("", 0, $cam_ylength + 5, $cam_xlength, 20)
_GDIPlus_Startup()
GUISetState(@SW_SHOW)
AdlibRegister("SnapShot", 10000)
Do
Until GUIGetMsg() = -3
AdlibUnRegister("SnapShot")
_WebcamClose($WebcamID)
ConsoleWrite($WebcamID& @CRLF)
_GDIPlus_Shutdown()
Func SnapShot()
$nr = 1
While FileExists($capDir & "\Bild" & $nr & ".jpg")
$nr += 1
WEnd
$oFile = $capDir & "\Bild.bmp"
$nFile = $capDir & "\Bild" & $nr & ".jpg"
if FileExists($oFile) Then FileDelete($oFile)
_WebcamSnap($WebcamID, $oFile)
Local $aDT = FileGetTime($oFile)
$sInfo = $aDT[0] & "/" & $aDT[1] & "/" & $aDT[2] & " " & $aDT[3] & ":" & $aDT[4] & ":" & $aDT[5]
ConsoleWrite($sInfo & @CRLF)
$himg = _GDIPlus_ImageLoadFromFile($oFile)
[/autoit] [autoit][/autoit] [autoit]$hGraphics = _GDIPlus_ImageGetGraphicsContext($himg)
$iX = _GDIPlus_ImageGetWidth($himg)
$iy = _GDIPlus_ImageGetHeight($himg)
$hBrush = _GDIPlus_BrushCreateSolid(); $Color)
$hFormat = _GDIPlus_StringFormatCreate()
$hFamily = _GDIPlus_FontFamilyCreate("Arial")
$hFont = _GDIPlus_FontCreate($hFamily, 20, 2)
$tLayout = _GDIPlus_RectFCreate($iX -260, $iy -30)
$aInfo = _GDIPlus_GraphicsMeasureString($hGraphics, $sInfo, $hFont, $tLayout, $hFormat)
_GDIPlus_GraphicsDrawStringEx($hGraphics, $sInfo, $hFont, $aInfo[0], $hFormat, $hBrush)
_GDIPlus_GraphicsDrawImage($hGraphics, $himg, $iX, $iy)
_GDIPlus_ImageSaveToFile($himg, $nFile)
_GDIPlus_FontDispose($hFont)
_GDIPlus_BrushDispose($hBrush)
_GDIPlus_GraphicsDispose($hGraphics)
_GDIPlus_ImageDispose($himg)
GUICtrlSetData($label1, $nr)
FileDelete($oFile)
EndFunc ;==>SnapShot
In die Schnappschüsse wird mit GDi+ Datum und Zeit geschrieben,
anbei noch die benötigte WebCam.udf von @ludocus, er hat die webcam.au3 veröffentlicht,
Edit: jetzt wird die richtige Dateiendung verwendet, danke Micha_he
Edit2: Formel für die Plazierung des Textes eingebaut, dadurch ist Script leichter auf andere Abmessungen
anpassbar
Edit3: den Bug, dass das 1. Bild immer wieder kopiert wurde beseitigt
Edit4: da es (zumindest bei
@Fabian) vorkommt, dass sich das Programm nur einmal nestarten lässt Zwangsabbruch bei bereits laufender Instanz und fehlschlagender WebCam-Initialisierung eingefügt
mfg (Auto)Bert
Hallo Acanis,
wenn du 2 Schleifen für die Erstellung nimmst klappt es, da sie ja dann in der gewünschten Reigenfolge erstellt wurden,
mfg (auto)Bert
Hallo CodaXYZ,
angeregt durch deinen Thread habe ich in Skripte ein Beispiel veröffentlicht. Es bassiert auf webcam.au3 von @ludocus,
mfg (Auto)Bert
Hallo Mr.MultiBot,
wo ist das Problem
[autoit]GuiCreate
[/autoit]nehmen, notfalls Hilfe oder SuFu bemühen,
mfg (auto)Bert
Hallo Mr.MultiBot,
für was brauchst du den soetwas ![]()
mfg (auto)Bert
Hallo Oscar,
schönes Tool, klappt bei mir mit GMX.de und WEB.de beim 3. Account (HotMail.De) verweigert das Tool leider, über Browser kann ich aber darauf zugreifen.
Da du in Projekte veröffnetlichst hoffe ich auf eine Weiterführung bis hin zu einem EMail-Client ![]()
mfg (auto)Bert
Hallo Bakku,
scha die die Hilfe zu
[autoit]_GDIPlus_MatrixRotate
[/autoit]an, besonders das Beispiel dazu,
mfg (auto)Bert