Welche AutoIt Version benutzt du?
Beiträge von UEZ
-
-
Hier eine kleine UDF zum Anzeigen eines Splash Screens wie die Built-in Funktion SplashTextOn, aber mit GDI+ erweitert.
AutoSave_20150510_103300.jpg AutoSave_20150510_103317.jpg
AutoSave_20150510_103311.jpg AutoSave_20150510_103332.jpg
Benötigt AutoIt Version 3.3.12.0 oder höher!
Download UDF: _SplashTextOnEx
Beispiel: Example
-
Nimm lieber dieser Version: http://www.autoitscript.com/forum/topic/11…ldrdll-library/
Gruß,
UEZ -
Hier meine Version:
Spoiler anzeigen
[autoit]#include <Array.au3>
[/autoit] [autoit][/autoit] [autoit]$sText = FileRead(@ScriptDir & "\C_01.cli")
[/autoit] [autoit][/autoit] [autoit]$aText = StringSplitW($sText, " ")
[/autoit] [autoit][/autoit] [autoit]
For $i = 0 To UBound($aText) - 1
$aText[$i][4] += 2
$aText[$i][5] += 2
Next
_ArrayDisplay($aText); #FUNCTION# ========================================================================================================================================
[/autoit]
; Name .................: StringSplitW()
; Description ..........: Splits a string into columns instead of rows as it is done by SplitString(), like a csv file to a 2d array
; Syntax ...............: StringSplitW($sString[, $sDelimiter = ";"[, $bStripWS = True[, $sQuotationMark = '"'[, $sDummy = "¦"[, $iWidthLen = 256]]]]])
; Parameters ...........: $sString - A string value.
; $sDelimiter - [optional] A string value. Default is ";".
; $bStripWS - [optional] A binary value. Default is True.
; $sQuotationMark - [optional] A string value. Default is '"'.
; $sDummy - [optional] A string value. Default is "¦".
; $iWidthLen - [optional] An integer value. Default is 256.
; Return values .......: Success - 2d array
; Error 1 - $sStringis not set
; Error 2 - $delimter is not set
; Error 3 - error splitting string
; Error 4 - array width exceeded
;
; Version .............: v0.97 build 2015-03-03 beta
; Author ..............: UEZ
; Modified ............:
; Remarks .............: RegEx take from http://stackoverflow.com/questions/4476…r-within-quotes
; Related .............: StringSplit, StringReplace, StringRegExpReplace, StringLen, StringStripCR
; ===================================================================================================================================================
Func StringSplitW($sString, $sDelimiter = ";", $bStripWS = True, $sQuotationMark = '"', $sDummy = "¦", $iWidthLen = 256)
If $sString = "" Then Return SetError(1, 0, 0)
If $sDelimiter = "" Then Return SetError(2, 0, 0)
Local $aSplit = StringSplit(StringStripCR($sString), @LF)
If @error Then Return SetError(3, 0, 0)
Local $chk, $iWidth, $i, $j, $k, $iLen, $iMax = 1, $iMaxWidth, $iSum = 0
Local $aPos[1], $l = 0
Local $aVertical[$aSplit[0]][$iWidthLen], $iDelimiterLen = StringLen($sDelimiter) - 1, $sLine
For $k = 1 To $aSplit[0]
$iLen = StringLen($aSplit[$k])
If $iLen > 1 Then
Switch $bStripWS
Case True
$sLine = StringRegExpReplace(StringStripWS($aSplit[$k], 4), '(?m)\' & $sDelimiter & '(?=[^' & $sQuotationMark & ']*' & $sQuotationMark & '(?:[^' & $sQuotationMark & '\r\n]*' & $sQuotationMark & '[^' & $sQuotationMark & ']*' & $sQuotationMark & ')*[^' & $sQuotationMark & '\r\n]*$)', $sDummy)
Case False
$sLine = StringRegExpReplace($aSplit[$k], '(?m)\' & $sDelimiter & '(?=[^' & $sQuotationMark & ']*' & $sQuotationMark & '(?:[^' & $sQuotationMark & '\r\n]*' & $sQuotationMark & '[^' & $sQuotationMark & ']*' & $sQuotationMark & ')*[^' & $sQuotationMark & '\r\n]*$)', $sDummy)
EndSwitch
$chk = StringReplace($sLine, $sDelimiter, $sDelimiter)
$iWidth = @extended
$iSum += $iWidth
If $iWidth > $iWidthLen Then Return SetError(4, 0, 0)
If $iWidth >= $iMax Then $iMax = $iWidth + 1
Switch $iWidth
Case 0
$aVertical[$l][0] = $sLine
Case Else
Dim $aPos[$iWidth * 2 + 2]
$j = 1
$aPos[0] = 1
For $i = 0 To $iWidth - 1
$aPos[$j] = StringInStr($sLine, $sDelimiter, 0, $i + 1) - 1
$aPos[$j + 1] = $aPos[$j] + 2 + $iDelimiterLen
$j += 2
Next
$aPos[UBound($aPos) - 1] = StringLen($sLine)
$j = 0
For $i = 0 To UBound($aPos) - 1 Step 2
$aVertical[$l][$j] = StringMid(StringReplace($sLine, $sDummy, $sDelimiter), $aPos[$i], $aPos[$i + 1] - $aPos[$i] + 1)
$j += 1
Next
EndSwitch
$l += 1
EndIf
Next
ReDim $aVertical[$l][$iMax]
Return $aVertical
EndFuncGruß,
UEZ -
Alles Gute zum Geburtstag, viel Gesundheit und viel GDI+ Inspiration für die Zukunft!
[Blockierte Grafik: http://www.mdr.de/sachsen/geburtstag120_v-teaserTop_zc-11a84362.jpg]
Gruß,
UEZ
-
Gefällt mir ganz gut, und wenn ich die Bitmap mit dem Geheimtext in einem anderen Programm speichere, bleibt sogar die Geheimschrift intakt.
Lehrreiche ASM Codes!

Nur sind die Links in deinem Post kaum erkennbar.
Gruß,
UEZ -
Hier ein Ansatz:
[autoit]#Include <GUIConstantsEx.au3>
[/autoit][autoit][/autoit][autoit]
#Include <WindowsConstants.au3>AutoItSetOption("MouseCoordMode", 2)
[/autoit][autoit][/autoit][autoit]#Region ### START Koda GUI section ### Form=
[/autoit][autoit][/autoit][autoit]
$Form1 = GUICreate("Mp3 Player", 333, 437, -1, -1, BitOR($WS_MINIMIZEBOX,$WS_SYSMENU,$WS_POPUP,$WS_GROUP,$WS_CLIPSIBLINGS))
$Progress1 = GUICtrlCreateProgress(8, 100, 319, 17)
GUISetState(@SW_SHOW)
#EndRegion ### END Koda GUI section ###Global $iProgress = 0, $bMP = False, $iProgressMax = 319
[/autoit][autoit][/autoit][autoit]AdlibRegister("Playing")
[/autoit][autoit][/autoit][autoit]Do
[/autoit][autoit][/autoit][autoit]
Switch GUIGetMsg()
Case $GUI_EVENT_CLOSE
AdlibUnRegister("Playing")
GUIDelete()
Exit
EndSwitch
$a = GUIGetCursorInfo ($Form1)
If $a[4] = $Progress1 And $a[2] Then
$bMP = True
$aPos = ControlGetPos($Form1, "", $Progress1)
$iProgress = Int((-8 + MouseGetPos(0)) / $iProgressMax * 100)
GUICtrlSetData($Progress1, $iProgress)
Else
$bMP = False
EndIf
Until FalseFunc Playing()
[/autoit]
If Not $bMP Then
GUICtrlSetData($Progress1, $iProgress)
$iProgress += 0.25
If $iProgress > 100 Then AdlibUnRegister("Playing")
EndIf
EndFuncGruß,
UEZ -
Alternativ probiere mal dies aus:
[autoit]$colItems = $objWMIService.ExecQuery("SELECT * FROM Win32_NetworkAdapterConfiguration WHERE IPEnabled=True AND NOT Description LIKE '%Virtual%' AND DNSDomain<>''", "WQL", 0x30)
[/autoit]Hier werden die virtuellen Adapter ausgelassen und DNSDomain darf nicht leer sein.
IPConnectionMetric scheint nicht akkurat zu sein.
Edit: habe noch DNSDomain<>'' hinzugefügt.
Gruß,
UEZ -
Es scheint, als ob bei dir die IPConnectionMetric nicht 25 ist.
Bei mir sind 4 Adapter gelistet, wobei nur die Aktive auf 25 steht und der Rest auf 20.
Du kannst ja mal Scriptomatic anschmeißen und sehen, was bei dir gelistet wird.
Gruß,
UEZ -
Kannst ja dies mal testen:
[autoit]
[/autoit][autoit][/autoit][autoit]
$sHost = @ComputerName
MsgBox(0, "Test", "IP: " & WMI_GetIPFromActiveNetworkAdapters($sHost))Func WMI_GetIPFromActiveNetworkAdapters($sHost)
[/autoit]
Local $objWMIService = ObjGet("winmgmts:\\" & $sHost & "\root\cimv2")
If @error Then Return SetError(1, 0, 0)
$colItems = $objWMIService.ExecQuery("SELECT IPAddress FROM Win32_NetworkAdapterConfiguration WHERE IPEnabled=True AND IPConnectionMetric=25", "WQL", 0x30)
If IsObj($colItems) Then
For $objItem in $colItems
With $objItem
If IsArray(.IPAddress) Then Return .IPAddress[0]
EndWith
Next
Else
Return SetError(2, 0, 0)
EndIf
EndFuncAuf meiner Kiste mit WLAN, LAN, VMware und VirtualBox funktioniert es, wobei die WLAN nur aktiv ist.
Gruß,
UEZ -
Sieht aus wie der Windows Ressourcenmonitor.
Gruß,
UEZ -
Öffne doch einfach eine CMD Box und gibt Zeile 1 / 5 ein...
Gruß,
UEZ -
Ich habe letztens ein Tool für die Firma programmiert, wo ich eine MySQL Datenbank ausgelesen habe und mich wunderte, warum das Tool so unterschiedlich lange benötigt, bis es startet.
Grund war eben immer der Download der DLL.
Hier der Code aus SQLite.au3
[autoit]
[/autoit][autoit][/autoit][autoit]
Func __SQLite_Download_SQLite3File(ByRef $sFilePath, $sFileName, $sVersion, $sFileExt, $bDownload = False, $iScripLineNumber = @ScriptLineNumber)
Local $sRetFile = $sFileName & $sVersion & $sFileExt
Local $sTempfile = $sFilePath & $sRetFile
If $bDownload And FileExists($sTempfile) Then Return $sTempfileLocal $sURL = "http://www.autoitscript.com/autoit3/files/beta/autoit/archive/sqlite/"
[/autoit][autoit][/autoit][autoit]
Local $iInetRet = InetGet($sURL & $sRetFile, $sTempfile, $INET_FORCERELOAD)
Local $iError = @error
If @error And StringInStr($sTempfile, @SystemDir) Then
$sFilePath = @TempDir & "\"
$sTempfile = _TempFile(@TempDir, "~", ".dll")
_ArrayAdd($__g_aTempFiles_SQLite, $sTempfile)
OnAutoItExitRegister("_SQLite_Shutdown") ; in case the script exit without calling _SQLite_Shutdown()
$iInetRet = InetGet($sURL & $sRetFile, $sTempfile, $INET_FORCERELOAD)
$iError = @error
Local $iPos = StringInStr($sTempfile, "\", 0, -1)
$sRetFile = StringTrimLeft($sTempFile, $iPos)
EndIf
If $iError Then __SQLite_Print('@@ Debug(' & $iScripLineNumber & ') : __SQLite_Download_SQLite3File : $URL = ' & $sURL & $sFileName & $sFileExt & @CRLF & @TAB & '$sTempfile = ' & $sTempfile & @CRLF & '>Error: ' & $iError & @CRLF)Local $sModifiedTime = Call('__SQLite_Inline_Modified')
[/autoit][autoit][/autoit][autoit]
If Not @error Then FileSetTime($sTempfile, $sModifiedTime, 0) ; update filetime if definedReturn SetError($iError, $iInetRet, $sRetFile)
[/autoit]
EndFunc ;==>__SQLite_Download_SQLite3FileAm Besten die DLL in das Skript integrieren...
Gruß,
UEZ -
@UEZ, woher kommt der Codegenerator?
Guckst du hier: File to Base64 String Code Generator v1.20 Build 2015-01-20
Gruß,
UEZ -
Hier die SQLite3.dll als Binärstring:
Der Inhalt kann nicht angezeigt werden, da er nicht mehr verfügbar ist. Gruß,
UEZ -
Probiere es mal damit:
Spoiler anzeigen
[autoit]
[/autoit] [autoit][/autoit] [autoit]
#include <ButtonConstants.au3>
#include <GUIConstantsEx.au3>
#include <WindowsConstants.au3>
#include <ComboConstants.au3>
#include <StaticConstants.au3>
#include <Array.au3>
#include <IE.au3>$Haus1 = 1
[/autoit] [autoit][/autoit] [autoit]
$Haus2 = 1
$Haus3 = 1
$Haus4 = 1
$Baum1 = 1
$Baums1 = 1
Global $MAPfunc _map_kulsav()
[/autoit] [autoit][/autoit] [autoit]
$MAP = GUICtrlCreatePic("kulsav.bmp", 0, 0, 850, 600) ; Map
$Haus1 = GUICtrlCreatePic("Haus1_wiese.bmp", 640, 35, 116, 156) ; Oben rechts
$Haus2 = GUICtrlCreatePic("Haus1_wiese.bmp", 99, 60, 116, 156) ; Oben Links
$Haus3 = GUICtrlCreatePic("Haus1_wiese.bmp", 99, 322, 116, 156) ; Unten Links
$Haus4 = GUICtrlCreatePic("Haus1_wiese.bmp", 640, 322, 116, 156) ; Unten Rechts
$Baum1 = GUICtrlCreatePic("Baum_wiese.bmp", 272, 216, 108, 124) ; Baum 1
GUICtrlSetState($MAP, $GUI_DISABLE)
EndFuncFunc _baum1()
[/autoit] [autoit][/autoit] [autoit]
GUICtrlDelete($Baum1)
GUICtrlSetState($MAP, $GUI_ENABLE)
$Baums1 = GUICtrlCreatePic("Baumstamm_wiese.bmp", 296, 304, 52, 36) ; Baumstamm 1
GUICtrlSetState($MAP, $GUI_DISABLE)
EndFunc$TG = GUICreate("The Cold", 850, 600, -1, -1, BitOR($WS_MAXIMIZEBOX,$WS_SYSMENU,$WS_POPUP,$WS_TABSTOP))
[/autoit] [autoit][/autoit] [autoit]
GUISetBkColor(0x000000)
$Start = GUICtrlCreateButton("Start", 350, 16, 163, 57)
GUICtrlSetBkColor(-1,0x000000)
GUICtrlSetColor(-1,0xff0000)
$Profil = GUICtrlCreateButton("Profil", 350, 88, 163, 57)
GUICtrlSetBkColor(-1,0x000000)
GUICtrlSetColor(-1,0xff0000)
$Exit = GUICtrlCreateButton("Exit", 350, 160, 163, 57)
GUICtrlSetBkColor(-1,0x000000)
GUICtrlSetColor(-1,0xff0000)
GUISetState(@SW_SHOW)While 1
[/autoit] [autoit][/autoit] [autoit]
$nMsg = GUIGetMsg()
Switch $nMsg
Case $GUI_EVENT_CLOSE, $Exit
Exit;;;;;;;;;;;;;;;;;;;;;;;; START ;;;;;;;;;;;;;;;;;;;;
[/autoit] [autoit][/autoit] [autoit]
Case $start
GUICtrlDelete($Start)
GUICtrlDelete($Profil)
GUICtrlDelete($Exit)
_map_kulsav()
$Exit = GUICtrlCreateButton("X", 808, 0, 27, 25)
GUICtrlSetBkColor(-1,0x000000)
GUICtrlSetColor(-1,0xff0000)Case $Haus1
[/autoit] [autoit][/autoit] [autoit]
MsgBox(0,"x","x1")Case $Haus2
[/autoit] [autoit][/autoit] [autoit]
MsgBox(0,"x","x2")Case $Haus3
[/autoit] [autoit][/autoit] [autoit]
MsgBox(0,"x","x3")Case $Haus4
[/autoit] [autoit][/autoit] [autoit]
MsgBox(0,"x","x4")Case $Baum1
[/autoit] [autoit][/autoit] [autoit]
_baum1()EndSwitch
[/autoit]
WEndGruß,
UEZ -
Bitte sehr wakillon.
Merci.
Gruß,
UEZ -
Funzt auch bei mir auf meiner Fritz!Box 7362 SL.
Gruß,
UEZ -
@UEZ
Gute Umsetzung.
Nur was ist, wenn eine Zeile zwei mal vorhanden ist, dann wird nur der erste Treffer ersetzt.Die Nachtmaus im Nachtmodus

_ArraySearch findet leider nur den ersten Eintrag, aber man kann die Funktion ZeileSuchenUndErsetzen() solange aufrufen, bis nichts mehr gefunden wird.
Gruß,
UEZ
-
Dann probiere mal dies aus:
[autoit]#include <Array.au3>
[/autoit][autoit][/autoit][autoit]
$sTest = "Zeile1" & @CRLF & _
"Zeile2" & @CRLF & _
"Zeile3" & @CRLF & _
"Zeile4" & @CRLF & _
"Zeile5" & @CRLF & _
"Zeile6"
$hFile = FileOpen(@ScriptDir & "\Settings.txt", 2)
FileWrite($hFile, $sTest)
FileClose($hFile)ZeileSuchenUndErsetzen(@ScriptDir & "\Settings.txt", "Zeile4", "Zeile444")
[/autoit][autoit][/autoit][autoit]Func ZeileSuchenUndErsetzen($sDatei, $sZeileSuchen, $sErsetzen, $bUeberschreiben = True)
[/autoit]
Local $aZeilen = FileReadToArray($sDatei)
If Not IsArray($aZeilen) Or UBound($aZeilen) < 2 Then Return SetError(1, 0, "")
Local $iPos = _ArraySearch($aZeilen, $sZeileSuchen)
If Not $iPos Then Return SetError(2, 0, "")
$aZeilen[$iPos] = $sErsetzen
Local $sNeu = _ArrayToString($aZeilen, @CRLF)
If $bUeberschreiben Then
Local $hFile = FileOpen($sDatei, 2)
If @error Then Return SetError(3, 0, "")
FileWrite($hFile, $sNeu)
FileClose($hFile)
EndIf
Return $sNeu
EndFunc_FileWriteToLine macht im Prinzip das Gleiche...
Gruß,
UEZ