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

Beiträge von bernd670

  • Warten

    • bernd670
    • 5. April 2008 um 20:01

    Hallo,

    versuch mal WinWaitClose("Self extracting ZIP File")

  • Ordner in Laufwerk suchen...

    • bernd670
    • 5. April 2008 um 19:54

    Hallo,

    ich hatte mir da auch mal eine Funktion geschrieben, probiers mal so!

    Spoiler anzeigen
    [autoit]

    #include <Constants.au3>
    #Include <File.au3>
    #Include <Array.au3>
    #Include <Date.au3>

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

    Const $cszApplication = "gepackt.exe"

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

    Local $aszDS[1][2] = [ [ "gepacktdat", "C:\" ] ]

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

    $aszPath = _DirSearch($aszDS)
    If Not @error And IsArray($aszPath) Then
    Select
    Case $aszPath[0] = 0
    MsgBox(0, "", "Kein Verzeichnis auf dem Laufwerk gefunden!")

    Case $aszPath[0] > 1
    _ArrayDisplay($aszPath, "Der Ordner existiert mehrmals auf dem Laufwerk!")
    Exit

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

    Case $aszPath[0] = 1
    $szDestPath = $aszPath[1]
    EndSelect
    EndIf

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

    MsgBox(0, "", $szDestPath)

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

    FileCopy(@ScriptDir & "\" & $cszApplication, $szDestPath & "\", 1) ; EXE in gefundenen Ordner kopieren
    Run($szDestPath & "\" & $cszApplication, $szDestPath)

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

    ; =================================================================================================
    ; Function Name: _DirSearch()
    ; Description: Sucht Verzeichnisse rekursiv in angegebenen Verzeichnissen
    ; Parameter(s): $aszSuche = Array mit folgendem Inhalt
    ; $aszSuche[n][0] = Verzeichnisname nach dem gesucht werden soll
    ; $aszSuche[n][0] = Startverzeichnis in dem gesucht werden soll
    ; $iBase = Startindex für $aszSuche (Vorgabe = 0)
    ; Return Value(s): Erfolg: (@error = 0) -> Array mit den Pfaden zu den gefundenen Ordnern zurück
    ; Array[0] = 0 -> keine Ordern gefunden
    ;
    ; Fehler: @error = 1 -> $aszSuche ist kein Array
    ; @error = 2 -> $aszSuche ist kein 2-Dimensioales Array
    ; @error = 3 -> $aszSuche enthält eine Leerstring
    ; Author(s): bernd670
    ;==================================================================================================
    Func _DirSearch($aszSuche, $iBase = 0)
    Local $szStOut = ""
    Local $aResult[1] = [0]
    Local $aszWD[1]
    Local $aszPattern[1][2]

    If IsArray($aszSuche) Then
    If UBound($aszSuche,0) <> 2 Then Return SetError(2,0,$aResult)
    ReDim $aszPattern[UBound($aszSuche)][2]
    $aszWD[0] = ""
    For $cIndex = $iBase To UBound($aszSuche) - 1
    If (StringLen($aszSuche[$cIndex][0]) = 0) Or (StringLen($aszSuche[$cIndex][1]) = 0) Then SetError(3,0,$aResult)
    If Not StringInStr($aszWD[0],StringLeft($aszSuche[$cIndex][1],2)) Then $aszWD[0] &= StringLeft($aszSuche[$cIndex][1],2)
    If StringLeft($aszSuche[$cIndex][0],1) <> "\" Then $aszSuche[$cIndex][0] = "\" & $aszSuche[$cIndex][0]
    $aszPattern[$cIndex][0] = _StringToPattern($aszSuche[$cIndex][0])
    If StringRight($aszSuche[$cIndex][1],1) = "\" Then $aszSuche[$cIndex][1] = StringTrimRight($aszSuche[$cIndex][1],1)
    $aszPattern[$cIndex][1] = _StringToPattern($aszSuche[$cIndex][1])
    Next
    $cWDLen = StringLen($aszWD[0])
    if $cWDLen > 2 Then
    ReDim $aszWD[$cWDLen / 2]
    For $cIndex = $cWDLen - 1 To 1 Step -2
    $aszWD[Floor($cIndex / 2)] = StringMid($aszWD[0],$cIndex,2)
    Next
    EndIf
    Else
    SetError(1,0,$aResult)
    EndIf

    For $cIndex = 0 To UBound($aszWD) - 1
    $PID = Run(@ComSpec & " /c DIR * /A:D /B /S", $aszWD[$cIndex] & "\", @SW_HIDE, $STDOUT_CHILD)

    While 1
    $szStOut &= StdoutRead($PID)
    If @error Then ExitLoop
    WEnd
    Next
    $szStOut = StringSplit(OemToChar($szStOut), @CRLF, 1)

    For $cZeile = 1 To $szStOut[0]
    For $cIndex = 0 To UBound($aszPattern) - 1
    If StringRegExp($szStOut[$cZeile],"(?i)^(" & $aszPattern[$cIndex][1] & ".*" & $aszPattern[$cIndex][0] & ")$") Then
    if UBound($aResult) <= ($aResult[0] + 1) Then ReDim $aResult[UBound($aResult) + 100]
    $aResult[0] += 1
    $aResult[$aResult[0]] = $szStOut[$cZeile]
    EndIf
    Next
    Next
    ReDim $aResult[$aResult[0]+1]

    Return SetError(0,0,$aResult)
    EndFunc ;==>_DirSearch

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

    ; =================================================================================================
    ; Function Name: _FileSearch()
    ; Description: Sucht Dateien rekursiv in angegebenen Verzeichnissen
    ; Parameter(s): $aszSuche = Array mit folgendem Inhalt
    ; $aszSuche[n][0] = Dateiname nach dem gesucht werden soll
    ; $aszSuche[n][0] = Startverzeichnis in dem gesucht werden soll
    ; $iBase = Startindex für $aszSuche (Vorgabe = 0)
    ; Return Value(s): Erfolg: (@error = 0) -> Array mit den Pfaden zu den gefundenen Dateien zurück
    ; Array[0] = 0 -> keine Datei gefunden
    ;
    ; Fehler: @error = 1 -> $aszSuche ist kein Array
    ; @error = 2 -> $aszSuche ist kein 2-Dimensioales Array
    ; @error = 3 -> $aszSuche enthält eine Leerstring
    ; Author(s): bernd670
    ;==================================================================================================
    Func _FileSearch($aszSuche, $iBase = 0)
    Local $szStOut = ""
    Local $aResult[1] = [0]
    Local $aszWD[1]
    Local $aszPattern[1][2]

    If IsArray($aszSuche) Then
    If UBound($aszSuche,0) <> 2 Then Return SetError(2,0,$aResult)
    ReDim $aszPattern[UBound($aszSuche)][2]
    $aszWD[0] = ""
    For $cIndex = $iBase To UBound($aszSuche) - 1
    If (StringLen($aszSuche[$cIndex][0]) = 0) Or (StringLen($aszSuche[$cIndex][1]) = 0) Then SetError(3,0,$aResult)
    If Not StringInStr($aszWD[0],StringLeft($aszSuche[$cIndex][1],2)) Then $aszWD[0] &= StringLeft($aszSuche[$cIndex][1],2)
    If StringLeft($aszSuche[$cIndex][0],1) <> "\" Then $aszSuche[$cIndex][0] = "\" & $aszSuche[$cIndex][0]
    $aszPattern[$cIndex][0] = _StringToPattern($aszSuche[$cIndex][0])
    If StringRight($aszSuche[$cIndex][1],1) = "\" Then $aszSuche[$cIndex][1] = StringTrimRight($aszSuche[$cIndex][1],1)
    $aszPattern[$cIndex][1] = _StringToPattern($aszSuche[$cIndex][1])
    Next
    $cWDLen = StringLen($aszWD[0])
    if $cWDLen > 2 Then
    ReDim $aszWD[$cWDLen / 2]
    For $cIndex = $cWDLen - 1 To 1 Step -2
    $aszWD[Floor($cIndex / 2)] = StringMid($aszWD[0],$cIndex,2)
    Next
    EndIf
    Else
    SetError(1,0,$aResult)
    EndIf

    For $cIndex = 0 To UBound($aszWD) - 1
    $PID = Run(@ComSpec & " /c DIR * /A:-D /B /S", $aszWD[$cIndex] & "\", @SW_HIDE, $STDOUT_CHILD)

    While 1
    $szStOut &= StdoutRead($PID)
    If @error Then ExitLoop
    WEnd
    Next
    $szStOut = StringSplit(OemToChar($szStOut), @CRLF, 1)

    For $cZeile = 1 To $szStOut[0]
    For $cIndex = 0 To UBound($aszPattern) - 1
    If StringRegExp($szStOut[$cZeile],"(?i)^(" & $aszPattern[$cIndex][1] & ".*" & $aszPattern[$cIndex][0] & ")$") Then
    if UBound($aResult) <= ($aResult[0] + 1) Then ReDim $aResult[UBound($aResult) + 100]
    $aResult[0] += 1
    $aResult[$aResult[0]] = $szStOut[$cZeile]
    EndIf
    Next
    Next
    ReDim $aResult[$aResult[0]+1]

    Return SetError(0,0,$aResult)
    EndFunc ;==>_FileSearch


    ;=======================================================================================


    ;===============================================================================
    ; Name: OemToChar
    ; Description: Wandelt einen ASCII- in einen ANSI-String
    ; Parameter(s): $szSrc = String der umgewandelt werden soll
    ; Requirement(s): keine
    ; Return Value(s): bei Erfolg: umgewandelter String
    ; bei Fehler: "" und @error = 1
    ; Author(s): bernd670
    ;===============================================================================
    Func OemToChar($szSrc)
    ;~ Private Declare Function OemToChar Lib "user32.dll" Alias "OemToCharA" (ByVal lpszSrc As String, ByVal lpszDst As String) As Long

    Local $strSrc = DllStructCreate("char[" & StringLen($szSrc) + 1 & "]")
    Local $strDst = DllStructCreate("char[" & StringLen($szSrc) * 2 + 1 & "]")
    DllStructSetData($strSrc,1,$szSrc)
    DllStructSetData($strDst,1,0)

    Local $lRetVal = DllCall("user32.dll", "long", "OemToChar", "ptr", DllStructGetPtr($strSrc), "ptr", DllStructGetPtr($strDst))
    If IsArray($lRetVal) And $lRetVal[0] = 1 Then
    Return SetError(0,0,DllStructGetData($strDst,1))
    EndIf

    Return SetError(1,0,"")
    EndFunc ;==>OemToChar


    ;===============================================================================
    ; Name: _StringToPattern
    ; Description: Bereitet einen String für eine StringRegExp-Pattern vor
    ; Parameter(s): $szStrToPattern = String der umgewandelt werden soll
    ; Requirement(s): keine
    ; Return Value(s): umgewandelter String
    ; Author(s): bernd670
    ;===============================================================================
    Func _StringToPattern($szStrToPattern)
    $szStrToPattern = StringReplace($szStrToPattern, "\", "\\")
    $szStrToPattern = StringReplace($szStrToPattern, ".", "\.")
    $szStrToPattern = StringReplace($szStrToPattern, "+", "\+")
    $szStrToPattern = StringReplace($szStrToPattern, "-", "\-")
    $szStrToPattern = StringReplace($szStrToPattern, "(", "\(")
    $szStrToPattern = StringReplace($szStrToPattern, ")", "\)")
    $szStrToPattern = StringReplace($szStrToPattern, "[", "\[")
    $szStrToPattern = StringReplace($szStrToPattern, "]", "\]")
    $szStrToPattern = StringReplace($szStrToPattern, "?", ".")
    $szStrToPattern = StringReplace($szStrToPattern, "*", ".*")

    Return $szStrToPattern
    EndFunc ;==>_StringToPattern

    [/autoit]
  • Speicher berechnen

    • bernd670
    • 5. April 2008 um 19:04

    Hallo,

    so werden die Leerzeilen übergangen egal wo sie in der Datei sind!

    [autoit]

    #include <File.au3>

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

    dim $drives, $file

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

    _FileReadToArray("Diskinfo6.txt",$drives)

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

    If IsArray($drives) Then ; Test, ob $drives = Array
    $file = FileOpen("test.txt", 1)
    If $file = -1 Then ; Check if file opened for writing OK
    MsgBox(0, "Error", "Unable to open file.")
    Exit
    EndIf

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

    For $i = 1 to $drives[0]
    If (StringStripWS($drives[$i],8) = "") Then ContinueLoop ; Leerzeilen übergehen
    $free = DriveSpaceFree($drives[$i])
    $total = DriveSpaceTotal($drives[$i])
    $belegt = Round($total-$free)
    FileWrite($file, $belegt & @CRLF)
    Next

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

    FileClose($file)
    EndIf

    [/autoit]
  • CMD-Programm erstellen, das in das CMD-Fenster von dem es gestartet wurde schreibt

    • bernd670
    • 4. April 2008 um 10:35

    Hallo,

    eine andere Möglichkeit findest Du im Beitrag "Ausgabe in CMD mittlerweile möglich ?"

  • script um IP Adresse und SID Ändern

    • bernd670
    • 3. April 2008 um 08:36

    Hallo,

    wahrscheinlich steht auch nach dem newsid immer noch der alte Name in @ComputerName!
    Dieser Wert wird wohl erst nach einem Neustart aktualisiert!

    einfach Zeile 40

    [autoit]

    RegWrite("HKLM\Software\pronotar\netconfig\", "PC-Name", "REG_SZ", $spcnameneu)

    [/autoit]

    so ändern

    [autoit]

    RegWrite("HKLM\Software\pronotar\netconfig\", "PC-Name", "REG_SZ", $spcname)

    [/autoit]
  • CMD-Programm erstellen, das in das CMD-Fenster von dem es gestartet wurde schreibt

    • bernd670
    • 3. April 2008 um 06:50

    Hallo,

    einfach

    [autoit]

    #AutoIt3Wrapper_Change2CUI=y

    [/autoit]


    am den Anfang des Quellcodes schreiben, dann kann man ConsoleWrite in das CMD-Fenster schreiben.

    Funktioniert erst ab Version 3.2.10.0!

  • Kompal. Script als Dienst starten

    • bernd670
    • 2. April 2008 um 16:42

    Hallo,

    probiers mal hiermit!

    ServiceInst.au3
    [autoit]

    #include <ButtonConstants.au3>
    #include <EditConstants.au3>
    #include <GUIConstantsEx.au3>
    #include <StaticConstants.au3>
    #include <WindowsConstants.au3>

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

    FileInstall(".\InstSrv.exe", @ScriptDir & "\InstSrv.exe")
    FileInstall(".\SrvAny.exe", @ScriptDir & "\SrvAny.exe")

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

    Local $szFileName, $szDesc, $szServiceName

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

    $FrmServiceInst = GUICreate("Service-Installer", 443, 169, 213, 117)
    GUISetFont(10, 400, 0, "MS Sans Serif")
    $LblName = GUICtrlCreateLabel("Name des Dienstes:", 24, 16, 126, 20)
    $LblDesc = GUICtrlCreateLabel("Beschreibungstext:", 24, 48, 117, 20)
    $LblPath = GUICtrlCreateLabel("Pfad zum Programm:", 24, 80, 128, 20)
    $IbName = GUICtrlCreateInput("", 168, 16, 200, 21)
    $IbDesc = GUICtrlCreateInput("", 168, 48, 200, 21)
    $IbPath = GUICtrlCreateInput("", 168, 80, 200, 21)
    $BtPath = GUICtrlCreateButton("···", 392, 80, 27, 25, 0)
    GUICtrlSetFont(-1, 8, 800, 0, "Symbol")
    $BtInst = GUICtrlCreateButton("Installieren", 224, 128, 91, 25, 0)
    $BtCancel = GUICtrlCreateButton("Abbrechen", 336, 128, 91, 25, 0)
    GUISetState(@SW_SHOW)

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

    While 1
    $nMsg = GUIGetMsg()
    Switch $nMsg
    Case $GUI_EVENT_CLOSE, $BtCancel
    Exit

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

    Case $BtPath
    $szFileName = FileOpenDialog ("Programm wählen", "::{20D04FE0-3AEA-1069-A2D8-08002B30309D}", "All (*.*)", 3)
    If Not @error Then GUICtrlSetData($IbPath, $szFileName)

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

    Case $BtInst
    $szServiceName = GUICtrlRead($IbName)
    $szDesc = GUICtrlRead($IbDesc)
    $szFileName = GUICtrlRead($IbPath)

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

    If ($szServiceName <> "") And ($szFileName <> "") Then
    Run(@ScriptDir & "\instsrv.exe " & $szServiceName & " """ & $szFileName & """", @ScriptDir, @SW_HIDE)
    RegWrite("HKEY_LOCAL_MACHINE\SYSTEM\CurrentControlSet\Services\" & $szServiceName, "Type", "REG_DWORD", 272)
    RegWrite("HKEY_LOCAL_MACHINE\SYSTEM\CurrentControlSet\Services\" & $szServiceName, "Start", "REG_DWORD", 2)
    RegWrite("HKEY_LOCAL_MACHINE\SYSTEM\CurrentControlSet\Services\" & $szServiceName, "DisplayName", "REG_SZ", $szServiceName)
    RegWrite("HKEY_LOCAL_MACHINE\SYSTEM\CurrentControlSet\Services\" & $szServiceName, "ObjectName", "REG_SZ", "LocalSystem")
    RegWrite("HKEY_LOCAL_MACHINE\SYSTEM\CurrentControlSet\Services\" & $szServiceName, "Description", "REG_SZ", $szDesc)
    RegWrite("HKEY_LOCAL_MACHINE\SYSTEM\CurrentControlSet\Services\" & $szServiceName & "\Parameters", "Application", "REG_SZ", $szFileName)

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

    MsgBox(64, "", "Service wurde installiert!")

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

    GUICtrlSetData($IbName, "")
    GUICtrlSetData($IbDesc, "")
    GUICtrlSetData($IbPath, "")
    Else
    MsgBox(16,"Fehler", "'Name des Dienstes' und 'Pfad zum Programm' müssen angegeben werden!")
    EndIf

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

    EndSwitch
    WEnd

    [/autoit]

    Die Programme instsrv.exe und srvany.exe aus dem Windows Server 2003 Resource Kit Tools müssen sich im gleichen Verzeichnis befinden wie das Programm.

  • Zahlenfolge

    • bernd670
    • 25. März 2008 um 19:43

    Hallo,

    Operationen in Funktionsaufrufen sind in AutoIt nicht erlaubt!

    so wird's gemacht!

    [autoit]

    $i =1

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

    do
    if IsArray($2) Then IniWrite("C:\1\Index-Files\msg.ini", "Nachrichten", $i, $2[0])
    $i += 1
    until $blabla

    [/autoit]
  • In jeder Zeile einer Textdatei einen String einfügen?

    • bernd670
    • 25. März 2008 um 19:10

    Hallo,

    im Script von BugFix hat sich ein Fehler eingeschlichen, die Zeile

    [autoit]

    $aFile = _FileReadToArray($Path, $aFile)

    [/autoit]

    kann nicht funktionieren, weil $aFile, nachdem das Array gelesen wurde wieder mit dem Rückgabewert von _FileReadToArray überschrieben wird!

    so geht's!

    [autoit]

    #include <File.au3>

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

    Global $Path = "xxx.list", $aFile
    Global $append = 'C:\temp\'

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

    If Not _FileReadToArray($Path, $aFile) Then Exit MsgBox(0, '', 'Datei konnte nicht gelesen werden!')
    For $i = 1 To UBound($aFile) -1
    If $aFile[$i] <> '' Then $aFile[$i] = $append & $aFile[$i]
    Next
    FileMove($Path, $Path & '.BAK', 1) ; bestehende Datei sichern
    If _FileWriteFromArray($Path, $aFile, 1) = 1 Then
    MsgBox(0, '', 'Ferddisch :-)')
    Else
    MsgBox(0, '', 'Fehler beim Rückschreiben der Datei')
    EndIf

    [/autoit]
  • Neuling hat einige Fragen

    • bernd670
    • 22. März 2008 um 12:49

    Hallo,

    [autoit]

    If WinGetTitle($Gui) <> $varName_read Then WinSetTitle($Gui, "", $varName_read)

    [/autoit]
  • Wie Buchstaben multiplizeren

    • bernd670
    • 22. März 2008 um 11:42

    Hallo,

    shau dir mal die Funktion _StringRepeat an!

  • Neuling hat einige Fragen

    • bernd670
    • 21. März 2008 um 12:53

    Hallo,

    z.B. so:

    [autoit]

    Local $retValue = 0
    ;~ Local $processList = ProcessList("Anwendung")
    Local $comboList = ""

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

    If ProcessExists("Anwendung") Then
    Local $processList = ProcessList("Anwendung")
    Else
    MsgBox(0, "", "Anwendung läuft nicht!")
    Exit
    EndIf

    [/autoit]

    oder wenn gewartet werden soll bis die Anwendung läuft, so:

    [autoit]

    While Not ProcessExists("Anwendung")
    Sleep(500)
    WEnd

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

    Local $retValue = 0
    Local $processList = ProcessList("Anwendung")
    Local $comboList = ""

    [/autoit]
  • wieder mal die schleife...

    • bernd670
    • 21. März 2008 um 12:09

    Hallo,

    das Beispiel ist fehlerhaft:

    • Starte mal das Programm, öffne Fenster2 dann verschiebe Fenster2 und drücke auf das X von Fenster1. Obwohl das X von Fenster1 gedrückt wurde schliesst sich Fenster2.
    • Ausserdem wird das Fenster2 in der Schleife immer wieder neu erstellt!

    Besser macht man es so:

    • Erst alle Fenster am Anfang des Programms definieren.
    • GUIGetMsg in den advanced-Modus schalten, dann wird ein Array zurückgegeben das unter anderem auch die ID des Fensters enthält.
    Beispiel
    [autoit]

    #include <GUIConstants.au3>

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

    $GUI1 = GUICreate("test", 200, 200)
    $button1 = GUICtrlCreateButton("ok", 10, 10, 40, 20)

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

    $GUI2 = GUICreate("fenster2", 200, 200)
    $button2 = GUICtrlCreateButton("zurück", 10, 10, 60, 20)
    $button3 = GUICtrlCreateButton("weiter", 80, 10, 40, 20)

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

    GUISetState(@SW_SHOW, $GUI1)

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

    While 1
    $msg = GUIGetMsg(1)
    Select
    Case $msg[0] = $button1
    GUISetState(@SW_SHOW, $GUI2)

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

    Case $msg[0] = $button2
    GUISetState(@SW_HIDE, $GUI2)

    Case $msg[0] = $gui_event_close
    Switch $msg[1]
    Case $GUI1
    ExitLoop

    Case $GUI2
    GUISetState(@SW_HIDE, $GUI2)
    EndSwitch
    EndSelect
    WEnd

    [/autoit]
  • GUI dynamisch an Desktopauflösung anpassen

    • bernd670
    • 17. März 2008 um 06:32

    Hallo,

    wenns beim Resizen funktioniert benutze doch einfach WinMove zum verkleinern.

  • Neuling hat einige Fragen

    • bernd670
    • 11. März 2008 um 20:38

    Hallo,

    die CPU-Last hat nichts mit dem Modus zu tun!

    Sobald Du in einer Schleife eine Sleep-Anweisung schreibst ist quasi keine CPU-Last mehr vorhanden.
    Einfach mal den folgenden Code ausführen und die CPU-Belastung im Task-Manager beobachten!

    [autoit]

    While 1
    Sleep(100)
    WEnd

    [/autoit]
  • Eigenes Sleep zählfunktion spinnt ?

    • bernd670
    • 10. März 2008 um 15:50

    Das hilft auch nicht, die Variablen sind eh schon global da sie ausserhalb der Funktionen deklariert sind.

    Das Problem ist das durch die Funktionsdefinition der Funktion Time zwei neue (lokale) Variablen definiert werden, die dann den Wert zugewiesen bekommen. Diese Variablen werden aber am Ende der Funktion Time wieder gelöscht und die globalen Variablen erhalten nie eine Wertzuweisung.

    Eine Möglichkeit wäre folgende:

    [autoit]

    Func Time(ByRef $Time1, ByRef $Time2)
    $Time1 = InputBox("Mein Proggie","Geben sie hier die errechnete Zeit an (in Millisekunden) Das Proggie drückt dann auf den link, dann wartet er Zeit eins drückt wieder wartet wieder und klickt")
    $Time2 = InputBox("Mein Proggie","Zeit2")
    Click($x,$y)
    EndFunc

    [/autoit]

    Am besten mal den Abschnitt über lokale und globale Variablen zu gemüte führen!

  • Ausgabe bei StringRegExpReplace

    • bernd670
    • 9. März 2008 um 21:30

    So wird ein Schuh draus:

    [autoit]

    $var2 = StringRegExpReplace($var1, "\((20\d\d)\)", "$1"))

    [/autoit]
  • Wie kann ich einen Button so verlinken das beim Klick eine Funktion ausgeführt wird in der ControlSend vorkommt?

    • bernd670
    • 9. März 2008 um 20:42

    Hallo,

    Notepad wird mit "d" geschrieben und das Fenster an das gesendet werden soll heisst Standardmässig "Unbenannt - Editor" in der deutschen Version!

    [autoit]

    Func schreibe()
    WinActivate ( "Unbenannt")
    ControlSend ( "Unbenannt", "", "Edit1", "test")
    EndFunc

    [/autoit]
  • Neuling hat einige Fragen

    • bernd670
    • 9. März 2008 um 19:47

    Ich habe dein Programm mal wieder in den OnEvent-Modus umgeschaltet!

    Die Combobox wird jetzt alle 5 sek. aktuallisiert!

    Spoiler anzeigen
    [autoit]

    #include <GUIConstants.au3>
    #include <NomadMemory.au3>
    #include <String.au3>
    #NoTrayIcon

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

    Const $cnRefreshTime = 5000 ; Combobox alle 5000 ms aktualisieren

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

    Local $pid, $info, $tRefresh

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

    $varName = IniRead("Watch.ini", "Address", "Name", "NotFound")
    $varGeld = IniRead("Watch.ini", "Address", "Geld", "NotFound")

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

    Opt("TrayAutoPause", 0)
    Opt("TrayMenuMode", 1)
    Opt("GUIOnEventMode", 1)

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

    $Gui = GUICreate("Watch", 200, 104)
    Local $quitButton = GUICtrlCreateButton("Cancel", 148, 76, 50)
    GUICtrlCreateLabel("Name: ", 5, 10)
    GUICtrlCreateLabel("Geld: ", 5, 30)
    GUICtrlCreateLabel("Prozess: ", 5, 60)
    Local $text = GUICtrlCreateLabel("", 55, 60, 50)
    Local $comboBox = GUICtrlCreateCombo("", 5, 80, 110, 200, BitOR($CBS_DROPDOWNLIST, $CBS_AUTOHSCROLL))
    Local $controlName = GUICtrlCreateLabel("", 45, 10, 200)
    Local $controlGeld = GUICtrlCreateLabel("", 45, 30, 200)
    GUISetOnEvent($GUI_EVENT_CLOSE, "Close_Or_Quit_Clicked")
    GUICtrlSetOnEvent($quitButton, "Close_Or_Quit_Clicked")
    GUICtrlSetOnEvent($comboBox,"ComboBox_Clicked")

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

    GUISetState(@SW_SHOW)

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

    Refresh()
    ComboBox_Clicked()

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

    $tRefresh = TimerInit()

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

    While 1
    ;~ $Msg = GUIGetMsg()
    ;~ Switch $Msg
    ;~ Case $GUI_EVENT_CLOSE, $quitButton
    ;~ Exit
    ;~ Case $comboBox
    ;~ _MemoryClose($info)
    ;~ $pid = GUICtrlRead($comboBox)
    ;~ GUICtrlSetData($text, $pid)
    ;~ $info = _MemoryOpen($pid)
    ;~ EndSwitch

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

    if TimerDiff($tRefresh) >= $cnRefreshTime Then
    If Refresh() Then ComboBox_Clicked()
    $tRefresh = TimerInit()
    EndIf

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

    $info = _MemoryOpen($pid)
    $varName_read = _MemoryRead("0x" & $varName, $info)
    $varGeld_read = _MemoryRead_dword("0x" & $varGeld, $info)
    $varGeld_format = _StringAddComma($varGeld_read)
    _MemoryClose($info)

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

    If GUICtrlRead($controlName) <> $varName_read Then GUICtrlSetData($controlName, $varName_read)
    If GUICtrlRead($controlGeld) <> $varGeld_format Then GUICtrlSetData($controlGeld, $varGeld_format)

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

    Sleep(100)
    WEnd

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

    ; Combo aktualisieren
    ; Rückgabe 1 = ComboBox_Clicked muss aufgerufen werden
    Func Refresh()
    Local $retValue = 0
    Local $processList = ProcessList("...")
    Local $comboList = ""

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

    For $i = 1 To $processList[0][0]
    $comboList &= "|" & $processList[$i][1]
    Next

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

    If (StringInStr($comboList, "|" & $pid) = 0) Or ($pid = "") Then
    $pid = $processList[1][1]
    $retValue = 1
    EndIf
    GUICtrlSetData($comboBox, $comboList, $pid)

    Return $retValue
    EndFunc

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

    Func Close_Or_Quit_Clicked()
    Exit
    EndFunc

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

    Func ComboBox_Clicked()
    $pid = GUICtrlRead($comboBox)
    GUICtrlSetData($text, $pid)
    EndFunc

    [/autoit]
  • Neuling hat einige Fragen

    • bernd670
    • 9. März 2008 um 13:58

    In der Version ohne Combobox lief dein Programm auch noch im OnEvent-Modus!

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™