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

Beiträge von Lottich

  • hilfe bei Protokoll-Erstellung nötig

    • Lottich
    • 31. Oktober 2011 um 12:38

    Aha!!!! 8o
    Danke für diesen Tip!!!

    Ich dachte bisher immer, dass man diese While-Schleife nur mit 1 und nur ein mal am Ende eines Scripts verwenden kann :wacko:
    Weil ich das sooo noch nirgends gesehen hab. Werde das gleich mal testen :D

  • hilfe bei Protokoll-Erstellung nötig

    • Lottich
    • 31. Oktober 2011 um 00:43

    ähhhm....

    [autoit]

    For $prozess1 = False To True
    Sleep(10)
    Next

    FileWrite($logfile, "[ " & @HOUR & ":" & @MIN & ":" & @SEC & "." & ......

    [/autoit]


    Ich gehe davon aus, dass ich mit der Schleife abfrage, ob der Prozess vorhanden ist oder nicht.
    Und solange er nicht vorhanden ist soll die Schleife 10ms schlafen und wieder abfragen und erst mit dem Script weitermachen,
    bis der Prozess tatsächlich existiert.

    Wie könnte ich das sonst realisieren wenn nicht mit true und false?!


    Edit:
    so sollte es aber nun korrekt sein....

    [autoit]

    For $i = 1 To 999999
    If ProcessExists($prozess1) Then
    ExitLoop
    Else
    Sleep(10)
    EndIf

    Next
    _FileWriteLog($logfile,$mamname & @TAB & "der Prozess wurde erfolgreich neu gestartet")

    [/autoit]
  • hilfe bei Protokoll-Erstellung nötig

    • Lottich
    • 30. Oktober 2011 um 20:02

    Okay, habs selbst lösen können...

    [autoit]


    For $prozess1 = False To True
    Sleep(10)
    Next

    FileWrite($logfile, "[ " & @HOUR & ":" & @MIN & ":" & @SEC & "." & @MSEC & " ] --> " & $mamname & @TAB & "der Prozess wurde erfolgreich neu gestartet" & @LF)

    [/autoit]


    Danke trotzdem ;)

  • hilfe bei Protokoll-Erstellung nötig

    • Lottich
    • 30. Oktober 2011 um 19:25

    Hey dudes,

    der DAU hier :D

    Folgendes Problem:
    Laufende Prozesse werden von meinem Programm gestoppt --> Dateien werden gelöscht/umbenannt --> Programm wird gestartet, dass einen Prozess startet

    Das will ich in einem Protokoll genau festhalten mit Zeit und so.

    Bisheriger Source

    Spoiler anzeigen
    [autoit]


    FileMove($namealt, $nameneu)

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

    FileWrite($logfile, "[ " & @HOUR & ":" & @MIN & ":" & @SEC & "." & @MSEC & " ] --> " & $mamname & @TAB & "Dateien chronologisch umbenannt" & @LF)
    FileWrite($logfile, "[ " & @HOUR & ":" & @MIN & ":" & @SEC & "." & @MSEC & " ] --> " & $mamname & @TAB & "der Watcher wird den Prozess neu starten" & @LF)

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

    ShellExecute($programm,"",$pfad, "", @SW_MINIMIZE)
    ; Das Programm (der "Watcher"), was zuerst wieder gestartet wird, startet den Prozess immer wieder, falls er abschmiert.

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

    ;hier müsste dann der benötigte Code hin...

    [/autoit]

    wie müsste ich das schreiben, dass das aktuelle Script mir den genauen Zeitpunkt des Prozess-starts wiedergibt?

    [autoit]

    If Not ProcessExists ($prozess1)
    Sleep(200)
    If Not ProcessExists ($prozess1)
    Sleep(200)
    If Not ProcessExists ($prozess1)
    Sleep(200)
    If Not ProcessExists ($prozess1)
    Sleep(200)
    EndIf
    EndIf
    EndIf
    EndIf

    [/autoit]

    Das kann ja nicht die Lösung sein.
    Habt ihr Vorschläge für mich?

  • VLC Media Player

    • Lottich
    • 28. Oktober 2011 um 03:49
    Zitat von Amateur

    irgendwie steh ich jetzt auf der Leiter
    Müsste ich jz nicht die Zeit zurückbekommen wenn ein Video läuft ?

    [autoit]

    #include <VLC.au3>

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

    Global $vlc

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

    _GUICtrlVLC_GetLength($vlc)
    _GUICtrlVLC_GetTime($vlc)

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

    MSGBox(4096,"",_GUICtrlVLC_GetTime($vlc))

    [/autoit]

    sollte das nicht eher so aussehen?

    [autoit]


    #include <VLC.au3>

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

    Global $vlc

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

    Global $laenge = _GUICtrlVLC_GetLength($vlc)
    Global $zeit = _GUICtrlVLC_GetTime($vlc)

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

    MSGBox(4096,"","Zeit: " & @Tab & $zeit & @LF & "Länge: " & @Tab & $laenge)

    [/autoit]

    Kein Plan, ob das so funktioniert, aber ich bin mir sicher, dass deine MsgBox nicht funktionieren wird.
    Man kann doch keine Funktion in einer MsgBox aufrufen... oder?

  • Problem: Ini-Werte werden (scheinbar?) nicht korrekt in GUI übernommen

    • Lottich
    • 26. Oktober 2011 um 03:20

    Wenn ich mich nicht irre, dann kann man mit dem Run Befehl nur externe Programme aufrufen/starten.
    Deshalb wird das wohl nicht funktionieren und darum wird dir die Fehlermeldung angezeigt.

    Ich würde folgendes versuchen:

    Spoiler anzeigen
    [autoit]


    #include <ButtonConstants.au3>
    #include <GUIConstantsEx.au3>
    #include <ProgressConstants.au3>
    #include <StaticConstants.au3>
    #include <WindowsConstants.au3>
    #include <String.au3>

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

    #Region
    $Form1 = GUICreate("Macro", 378, 460, 393, 137)
    $Button1 = GUICtrlCreateButton("Browse...", 16, 68, 75, 25, $WS_GROUP)
    $Button2 = GUICtrlCreateButton("Okay", 64, 416, 243, 33, $WS_GROUP)
    $input1 = GUICtrlCreateInput("", 17, 35, 342, 21)
    $input2 = GUICtrlCreateInput("", 16, 168, 177, 21)
    $input3 = GUICtrlCreateInput("", 16, 224, 177, 21)
    $input4 = GUICtrlCreateInput("", 16, 280, 177, 21)
    $input5 = GUICtrlCreateInput("", 16, 360, 177, 21)
    $Label1 = GUICtrlCreateLabel("", 16, 48, 4, 4)
    $Label2 = GUICtrlCreateLabel("text1", 16, 144, 262, 17)
    $Label3 = GUICtrlCreateLabel("text2", 16, 200, 77, 17)
    $Label4 = GUICtrlCreateLabel("text3", 16, 256, 197, 17)
    $Label5 = GUICtrlCreateLabel("text4", 16, 312, 210, 17)
    $Label6 = GUICtrlCreateLabel("text5", 16, 336, 168, 17)
    $Group1 = GUICtrlCreateGroup("Specify the path to the .exe", 8, 8, 361, 97, $BS_RIGHTBUTTON)
    GUICtrlSetColor(-1, 0x0000FF)
    GUICtrlCreateGroup("", -99, -99, 1, 1)
    $Group2 = GUICtrlCreateGroup("Setup", 8, 120, 361, 281, $BS_RIGHTBUTTON)
    GUICtrlSetColor(-1, 0x0000FF)
    GUICtrlCreateGroup("", -99, -99, 1, 1)
    GUISetState(@SW_SHOW)
    #EndRegion

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

    datenimport()
    Func datenimport()
    If FileExists(@ScriptDir & "\Macro.ini") Then
    GUICtrlSetData($input1, IniRead(@ScriptDir & "\Macro.ini", "Section", "Path","No data!"))
    GUICtrlSetData($input2, IniRead(@ScriptDir & "\Macro.ini", "Section", "1","No data!"))
    GUICtrlSetData($input3, IniRead(@ScriptDir & "\Macro.ini", "Section", "2","No data!"))
    GUICtrlSetData($input4, IniRead(@ScriptDir & "\Macro.ini", "Section", "3","No data!"))
    GUICtrlSetData($input5, IniRead(@ScriptDir & "\Macro.ini", "Section", "4","No data!"))
    EndIf
    EndFunc

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

    While 1
    $nMsg = GUIGetMsg()

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

    Switch $nMsg
    Case $GUI_EVENT_CLOSE
    Exit

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

    Case $Button1
    $dialog = FileOpenDialog("open", "C:\","(*.exe)")
    GUICtrlSetData($input1, $dialog)
    $read = GUICtrlRead($input1)

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

    Case $input1
    $read = GUICtrlRead($input1)

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

    Case $input2
    $time = GUICtrlRead($input2)
    $timeforsleep = $time * 1000

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

    Case $input3
    $prefix = GUICtrlRead($input3)

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

    Case $input4
    $suffix = GUICtrlRead($input4)

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

    Case $input5
    $NumberOfMeasurements = GUICtrlRead($input5)

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

    Case $Button2
    SaveToIni()
    GUIDelete()
    ExitLoop

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

    EndSwitch
    WEnd

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

    Func SaveToIni ()
    IniWrite(@ScriptDir & "\Macro.ini", "Section Path to ARTA.exe", "Path",GUICtrlRead($input1))
    IniWrite(@ScriptDir & "\Macro.ini", "Section Measurement Setup", "1",GUICtrlRead($input2))
    IniWrite(@ScriptDir & "\Macro.ini", "Section Measurement Setup", "2",GUICtrlRead($input3))
    IniWrite(@ScriptDir & "\Macro.ini", "Section Measurement Setup", "3",GUICtrlRead($input4))
    IniWrite(@ScriptDir & "\Macro.ini", "Section Measurement Setup", "4",GUICtrlRead($input5))
    EndFunc

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

    ; ab hier soll´s starten...

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

    datenimport()
    WinWaitActive("Programm")

    [/autoit]

    Den Bereich mit GUICtrlSetData in eine Funktion gesteckt, und aufgerufen. 1x beim Scriptstart und 1x nach beenden der While-Schleife. Nicht getestet, sollte aber funktionieren.

    mfG Lottich

  • Der Gaming-Thread (nur für Freaks)

    • Lottich
    • 22. Oktober 2011 um 16:52
    Zitat von Cheater Dieter

    Wo gibts den Übersetzer? :rofl:

    Call of Duty
    Damit hab ich angefangen und es gibt keine besseren Shooter für mich, nur andere, nicht so gute :D

  • "Programme" <- verzeichnis-link durch reales verzeichnis "program files" ersetzen.

    • Lottich
    • 22. Oktober 2011 um 13:39

    Mit dem Auslesen der Registry ist das aber so ne Sache für sich.

    Ich hab mir zB nen Serverjoiner gebaut. Da wollt ich dann prüfen, ob das Game auch installiert ist und wenn nicht, den entsprechenden Join-Button deaktivieren.
    Allerdings musste ich feststellen, dass je nach OS und @Arch die Pfade in der Registry viel zu unterschiedlich sind.
    Sicher, man könnte dann mit ner Select-Case-Abfrage die verschiedensten Varianten durchgehen und dann die Variablen entsprechend setzen, aber das war mir zu aufwendig.

    Weiss zwar nicht, was WhiteLion hier coden will, aber ich geh mal davon aus, dass er mit dem Auslesen der Registry auf das gleiche Problem stoßen wird.

  • Der Gaming-Thread (nur für Freaks)

    • Lottich
    • 22. Oktober 2011 um 13:31

    CoD UO --- CoD 4 --- CoD 5 --- CoD MW2 (aIW) --- CoD BO --- CoD MW3 ist vorbestellt --- Homefront (seltener) --- Crysis2 im Besitz aber noch kein MP gestartet

    Hauptsächlich CoD weil ich da eigene dedi´s hab. Und nen Clan.
    Die Programme, die ich bisher gescriptet hab sind alle für den Clan und zum Managen der Server xD

  • "Programme" <- verzeichnis-link durch reales verzeichnis "program files" ersetzen.

    • Lottich
    • 21. Oktober 2011 um 01:54

    Hallo,

    Ich würd es ja damit versuchen:

    [autoit]

    @ProgramFilesDir

    [/autoit]

    also beispielsweise:

    [autoit]

    $path = @ProgramFilesDir & "\Steam\steamapps\common\Call of Duty 4\"
    $reg = @ProgramFilesDir & "\steam\steamapps\common\call of duty 4\"
    if StringLower($path) = StringLower($reg) then msgbox(0, "ok", "das spiel ist installiert")

    [/autoit]

    Edit:
    Damit sparst du dir auch das Ersetzen des "Programme-Ordner-Namens"

  • brauch Hilfe bei eigener UDF

    • Lottich
    • 13. Oktober 2011 um 18:45

    Hallo, der DAU meldet sich mal wieder...

    Ich versuch grad eine neue Version meins Server-Kontroll-Managers zu erstellen. Die soll natürlich besser werden als die vorherige, auch vom Quellcode her.
    Da sich darin sehr viele Funktionen immer wiederholen (nur mit verschiedenen Parametern), glaub ich, dass es Sinn macht, wenn ich mir eine eigene UDF schreibe,
    sodass ich nur noch die Funktionen aufrufen brauch inder ich dann die entsprechenden Werte übergebe.

    Nun stehe ich am Anfang... und schon Probleme ;(
    Folgendes Szenario:

    Was ich IMMER bei mir einbaue

    [autoit]

    ; Damit das Fenster nur einmal geöffnet werden kann

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

    $instanz = "irgend ein text"
    If WinExists($instanz) Then Exit
    AutoItWinSetTitle($instanz)

    [/autoit]


    Jetzt versuch ich, das so zu realisieren, dass ich im Programm-Script nur noch reinschreibe:

    [autoit]

    #include <_meine_UDF.au3>
    $instanz = "irgend ein text"

    [/autoit]

    und in der UDF:

    [autoit]

    #include-once
    Func _Instanz_der_GUI($instanz)
    MsgBox(0,"Information",$instanz); dient dazu, dass mir angezeigt wird, ob die UDF den text aus meinem Programmscript korrekt übernimmt.

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

    :rofl::rofl: looooool :rofl::rofl:
    Geht euch das auch manchmal so?
    Beim Schreiben dieses Topics ist mir mein Fehler bewusst geworden. Ich muss im ProgrammScript nicht die Variable setzen, sondern die Funktion der UDF aufrufen.
    Wenn ich hier nochmal hilfe brauch, dann öffne ich diesen Thread nochmal xD
    ;- If WinExists($instanz) Then Exit
    ;- AutoItWinSetTitle($instanz)
    EndFunc

    [/autoit]

    Es will aber gar nicht so wie ich!

    :rofl::rofl::rofl: loool :rofl::rofl::rofl:
    Geht euch das auch manchmal so, dass euch beim Schreiben eines Hilfsegesuchs euer Fehler bewusst wird?

    In diesem Fall ist die Lösung so simpel. Ich muss "irgend ein Text" nicht als Variable setzen, sondern mit der Funktion aus der UDF aufrufen.
    Und dabei hab ich mich schon immer gefragt, was man denn eigendlich alles so in diese Klammern nach der Funktion reinschreiben kann...

    Sollte ich hierbei nochmal hilfe benötigen, werd ich diesen Thread nochmal auf offen setzen.
    Man liest sich.

    Grüsse,

    Lottich

  • CSV Datei auslesen und bearbeiten; Script von Oscar

    • Lottich
    • 3. Oktober 2011 um 02:23

    Alter, wie g**l!!!
    Genau das ist es! Vielen Dank !!! :rock:

    Und mal ganz nebenbei erwähnt:

    Hier gibt es so viele User die hervorragende und exellente Hilfe bieten und Lösungswege aufzeigen! Das ist wirklich beeindruckend!
    Ihr macht hier nen echt Klasse Job!!!

    *musste ich mal los werden*

    Edit:
    Ich setz den Themenstatus mal noch nicht auf gelöst, denn ich muss hier noch ein paar Sachen hinzufügen. da werd ich vermutlich noch 1 - 2 mal auf eure
    unterstützung zurückgreifen müssen.
    Doch zunächst versuch ich es erstmal selbst 8)

    Bis die Tage, man liest sich....

  • CSV Datei auslesen und bearbeiten; Script von Oscar

    • Lottich
    • 3. Oktober 2011 um 00:39

    Vorwort: :D
    Diesen Post hab ich bereits in einem anderen Thread gestellt, dieser war jedoch schon gelöst und ist sicherlich in der breiten Masse untergegangen. Siehe diesen Thread hier... Deshalb mach ich ihn nochmal neu und bitte hiermit die Moderatoren mich nicht zu tadeln :whistling:

    Das Script im Spoiler ist das, was Oscar gebaut hat, deshalb ist mein Anliegen mehr an ihn gerichtet. Aber nicht falsch verstehen, jede hilfreiche Antwort ist willkommen ;)


    Hi Oscar,

    ich find dein Script echt klasse, sowas hab ich auch schon versucht zu basteln. Leider bin ich immer noch nicht gut genug für sowas, deshalb hab ich auchnach genau solch einem Script gesucht.

    Spoiler anzeigen
    [autoit]


    #include <ButtonConstants.au3>
    #include <GUIConstantsEx.au3>
    #include <GuiListView.au3>
    #include <ListViewConstants.au3>
    #include <WindowsConstants.au3>

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

    Global $sHeader = "Artikelnummer|Art|Nummer|Baureihe|Name" ; Die Überschriften für das Listview und für das "Neuer Eintrag"-Fenster
    Global $sDBFile = @ScriptDir & "\datenbank.txt" ; Pfad und Name der Datenbank-Datei
    Global $iEdit = -1 ; Wert auf -1 setzen, weil _GUICtrlListView_GetSelectionMark() einen Nullbasierten Wert liefert

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

    #region Hauptfenster
    Global $hGui = GUICreate("Listview-Datenbank-Beispiel", 600, 480) ; Hauptfenster erstellen
    GUISetBkColor(0xCCCCCC)

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

    Global $hListView = GUICtrlCreateListView($sHeader, 0, 0, 600, 400, $LVS_SHOWSELALWAYS) ; Listview erstellen

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

    Global $hLVHandle = GUICtrlGetHandle($hListView) ; das Handle vom Listview wird für die UDF-Listview-Funktionen benötigt
    _GUICtrlListView_SetColumn($hLVHandle, 0, "Artikelnummer", 120, 1) ; 1. Spalte = 120 Px breit, rechts ausgerichtet
    _GUICtrlListView_SetColumn($hLVHandle, 1, "Art", 60, 0) ; 2. Spalte = 60 Px breit, links ausgerichtet
    _GUICtrlListView_SetColumn($hLVHandle, 2, "Nummer", 90, 0) ; 3. Spalte = 90 Px breit, links ausgerichtet
    _GUICtrlListView_SetColumn($hLVHandle, 3, "Baureihe", 100, 0) ; 4. Spalte = 100 Px breit, links ausgerichtet
    _GUICtrlListView_SetColumn($hLVHandle, 4, "Name", 120, 0) ; 5. Spalte = 120 Px breit, links ausgerichtet

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

    Global $hSearchListView = GUICtrlCreateListView($sHeader, 0, 0, 600, 400, $LVS_SHOWSELALWAYS) ; Listview für die Suche erstellen
    GUICtrlSetState(-1, $GUI_HIDE)
    Global $hSearchLVHandle = GUICtrlGetHandle($hSearchListView) ; das Handle vom Listview wird für die UDF-Listview-Funktionen benötigt
    _GUICtrlListView_SetColumn($hSearchLVHandle, 0, "Artikelnummer", 120, 1) ; 1. Spalte = 120 Px breit, rechts ausgerichtet
    _GUICtrlListView_SetColumn($hSearchLVHandle, 1, "Art", 60, 0) ; 2. Spalte = 60 Px breit, links ausgerichtet
    _GUICtrlListView_SetColumn($hSearchLVHandle, 2, "Nummer", 90, 0) ; 3. Spalte = 90 Px breit, links ausgerichtet
    _GUICtrlListView_SetColumn($hSearchLVHandle, 3, "Baureihe", 100, 0) ; 4. Spalte = 100 Px breit, links ausgerichtet
    _GUICtrlListView_SetColumn($hSearchLVHandle, 4, "Name", 120, 0) ; 5. Spalte = 120 Px breit, links ausgerichtet

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

    GUICtrlCreateLabel("Suchbegriff:", 10, 412, 90, 20)
    GUICtrlSetFont(-1, 11)
    Global $hSearch = GUICtrlCreateInput("", 100, 410, 390, 20)
    GUICtrlSetFont(-1, 11)
    Global $hSearchStart = GUICtrlCreateButton("Suche...", 500, 410, 60, 20, $BS_DEFPUSHBUTTON) ; Dieser Button ist der Default-Push-Button (wenn der User [Enter] drückt)
    GUICtrlSetFont(-1, 9)
    Global $hSearchReset = GUICtrlCreateButton("<-", 562, 410, 28, 20)
    GUICtrlSetFont(-1, 8, 600, 0, "Verdana")
    GUICtrlSetState(-1, $GUI_DISABLE)

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

    Global $hNew = GUICtrlCreateButton("Neuer Eintrag", 5, 440, 80, 35)
    Global $hEdit = GUICtrlCreateButton("Markierten Eintrag bearbeiten", 95, 440, 110, 35, $BS_MULTILINE) ; $BS_Multiline für mehrzeiligen Button
    Global $hLoad = GUICtrlCreateButton("Laden", 230, 440, 70, 35)
    Global $hSave = GUICtrlCreateButton("Speichern", 310, 440, 70, 35)
    Global $hDel = GUICtrlCreateButton("Markierte Einträge löschen", 400, 440, 90, 35, $BS_MULTILINE)
    Global $hDelAll = GUICtrlCreateButton("Alle Einträge löschen", 500, 440, 90, 35, $BS_MULTILINE)

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

    Global $hCM = GUICtrlCreateContextMenu($hListView) ; ein Kontextmenü für das Listview erstellen
    Global $hCMNew = GUICtrlCreateMenuItem("Neuer Eintrag", $hCM) ; der 1. Kontextmenüeintrag
    Global $hCMEdit = GUICtrlCreateMenuItem("Eintrag bearbeiten", $hCM) ; der 2. Kontextmenüeintrag
    Global $hCMDel = GUICtrlCreateMenuItem("Markierte Einträge löschen", $hCM) ; der 3. Kontextmenüeintrag
    #endregion Hauptfenster

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

    #region Fenster für neuen Eintrag
    Global $hGuiNew = GUICreate("Neuer Eintrag", 632, 140, -1, -1, $WS_SYSMENU) ; das Fenster "Neuer Eintrag" erstellen
    Global $aHeader = StringSplit($sHeader, '|') ; Überschriften-Array
    Global $aNew[$aHeader[0]] ; Array für die Input-IDs
    For $i = 1 To $aHeader[0]
    GUICtrlCreateLabel($aHeader[$i], 4 + ($i - 1) * 125, 15, 110, 20) ; Überschriften-Label erstellen
    GUICtrlSetFont(-1, 8, 400, 0, 'Verdana') ; Schriftgröße und -art der Überschriften festlegen
    $aNew[$i - 1] = GUICtrlCreateInput("", 2 + ($i - 1) * 125, 30, 120, 20, Default, $WS_EX_STATICEDGE) ; Eingabefelder erstellen
    GUICtrlSetFont(-1, 10, 600, 0, 'Verdana') ; Schriftgröße und -art der Eingabefelder festlegen
    Next
    Global $hCreate = GUICtrlCreateButton("Eintrag speichern", 254, 65, 120, 25, $BS_DEFPUSHBUTTON) ; Button zum speichern
    #endregion Fenster für neuen Eintrag

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

    _GUICtrlListView_RegisterSortCallBack($hLVHandle) ; damit man das Listview (mit Klick auf die Spaltenüberschrift) sortieren kann

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

    GUISetState(@SW_SHOW, $hGui) ; Hauptfenster sichtbar machen

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

    If FileExists($sDBFile) Then Load() ; wenn Datenbank-Datei existiert, dann Datenbank laden

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

    While 1
    $nMsg = GUIGetMsg(1) ; Message-Event holen (1) = erweiterter Modus
    Switch $nMsg[0] ; anhand der Control-ID das entsprechende Case aufrufen
    Case $hListView ; User hat auf eine Spaltenüberschrift geklickt
    _GUICtrlListView_SortItems($hLVHandle, GUICtrlGetState($hListView)) ; Einträge entsprechend sortieren
    Case $hSearchStart
    GUICtrlSetState($hSearchStart, $GUI_DISABLE)
    _GUICtrlListView_DeleteAllItems($hSearchLVHandle)
    Dim $sSearch = GUICtrlRead($hSearch), $sItem
    For $i = 0 To _GUICtrlListView_GetItemCount($hLVHandle) - 1
    $sItem = _GUICtrlListView_GetItemTextString($hLVHandle, $i)
    If StringInStr($sItem, $sSearch) Then GUICtrlCreateListViewItem($sItem, $hSearchListView)
    Next
    GUICtrlSetState($hListView, $GUI_HIDE)
    GUICtrlSetState($hSearchListView, $GUI_SHOW)
    GUICtrlSetState($hSearchReset, $GUI_ENABLE)
    Case $hSearchReset
    GUICtrlSetData($hSearch, "")
    GUICtrlSetState($hSearchListView, $GUI_HIDE)
    GUICtrlSetState($hListView, $GUI_SHOW)
    GUICtrlSetState($hSearchStart, $GUI_ENABLE)
    GUICtrlSetState($hSearchReset, $GUI_DISABLE)
    Case $hNew, $hCMNew ; User hat auf "Neuer Eintrag" geklickt
    WinSetTitle($hGuiNew, "", "Neuer Eintrag") ; den Titel des Fenster anpassen
    GUISetState(@SW_SHOW, $hGuiNew) ; das Fenster "Neuer Eintrag" anzeigen
    GUISetState(@SW_DISABLE, $hGui) ; das Hauptfenster deaktivieren
    Case $hEdit, $hCMEdit ; User hat auf "Eintrag bearbeiten" geklickt
    WinSetTitle($hGuiNew, "", "Eintrag bearbeiten") ; den Titel des Fenster anpassen
    GUISetState(@SW_SHOW, $hGuiNew) ; das Fenster "Neuer Eintrag" anzeigen
    GUISetState(@SW_DISABLE, $hGui) ; das Hauptfenster deaktivieren
    Edit()
    Case $hLoad ; User hat auf "Laden" geklickt
    Load()
    Case $hSave ; User hat auf "Laden" geklickt
    Save()
    Case $hDel, $hCMDel ; User hat auf "Markierte Einträge löschen" geklickt
    If MsgBox(256 + 32 + 4, "Einträge löschen", "Wollen sie die markierten Einträge wirklich löschen?") = 6 Then _GUICtrlListView_DeleteItemsSelected($hLVHandle)
    Case $hDelAll ; User hat auf "Alle Einträge löschen" geklickt
    If MsgBox(256 + 32 + 4, "Einträge löschen", "Wollen sie wirklich alle Einträge löschen?") = 6 Then _GUICtrlListView_DeleteAllItems($hLVHandle)
    Case $hCreate ; User hat auf "Eintrag speichern" im Fenster "Neuer Eintrag" geklickt
    NewItem()
    Case $GUI_EVENT_CLOSE ; User hat auf das Schließen-Symbol geklickt (bzw. die ESC-Taste gedrückt)
    Switch $nMsg[1] ; erweiterte Abfrage für welches Fenster
    Case $hGui ; User will das Hauptfenster schließen
    If MsgBox(32 + 4, "Beenden", "Wollen sie das Programm wirklich beenden?") = 6 Then End() ; wenn ja, dann End-Funktion aufrufen
    Case $hGuiNew ; User will das "Neuer Eintrag"-Fenster schließen
    $iEdit = -1
    For $i = 0 To UBound($aNew) - 1
    GUICtrlSetData($aNew[$i], "") ; Alle Eingabefelder leeren
    Next
    GUISetState(@SW_HIDE, $hGuiNew) ; "Neuer Eintrag"-Fenster verstecken
    GUISetState(@SW_ENABLE, $hGui) ; Hauptfenster wieder aktivieren
    WinActivate($hGui) ; und in den Vordergrund holen
    EndSwitch
    EndSwitch
    WEnd

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

    Func End()
    ;~ Save() ; wenn der vordere Kommentar entfernt wird, dann werden vor dem beenden noch die Daten gespeichert
    _GUICtrlListView_UnRegisterSortCallBack($hLVHandle) ; Sortierroutine wieder de-registrieren
    Exit ; Programm beenden
    EndFunc ;==>End

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

    Func NewItem() ; Funktion zum auslesen der Eingabefelder (Neuer Eintrag bzw. Eintrag bearbeiten)
    Local $sItem = ""
    For $i = 0 To UBound($aNew) - 1 ; Schleife, um alle Eingabefelder durchzugehen
    If $iEdit > -1 Then ; wenn $iEdit > -1 (Eintrag bearbeiten), dann...
    _GUICtrlListView_SetItemText($hLVHandle, $iEdit, GUICtrlRead($aNew[$i]), $i) ; den Eintrag aus dem Eingabefeld ins Listview schreiben
    Else ; sonst $iEdit = -1 (neuer Eintrag)
    $sItem &= GUICtrlRead($aNew[$i]) & "|" ; den Eintrag aus dem Eingabefeld erstmal in einer Variablen ($sItem) speichern
    EndIf
    GUICtrlSetData($aNew[$i], "") ; das entsprechende Eingabefeld leeren
    Next
    If $iEdit > -1 Then ; wenn $iEdit > -1 (Eintrag bearbeiten), dann...
    $iEdit = -1
    GUISetState(@SW_HIDE, $hGuiNew) ; "Neuer Eintrag"-Fenster verstecken
    GUISetState(@SW_ENABLE, $hGui) ; Hauptfenster wieder aktivieren
    Sleep(300)
    WinActivate($hGui) ; und in den Vordergrund holen
    Else ; sonst $iEdit = -1 (neuer Eintrag)
    GUICtrlSetState($aNew[0], $GUI_FOCUS) ; den Focus wieder auf das erste Eingabefeld setzen, für weitere Eingaben
    GUICtrlCreateListViewItem(StringTrimRight($sItem, 1), $hListView) ; mit den Werten aus $sItem einen neuen Listview-Eintrag hinzufügen
    EndIf
    EndFunc ;==>NewItem

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

    Func Edit() ; Funktion zum bearbeiten eines Listview-Eintrags im "Eintrag bearbeiten"-Fenster
    $iEdit = _GUICtrlListView_GetSelectionMark($hLVHandle) ; auslesen, welcher Listview-Eintrag markiert (bei mehreren, den obersten) ist
    If $iEdit > -1 Then
    Local $aItem = _GUICtrlListView_GetItemTextArray($hLVHandle, $iEdit) ; die Einträge aus dem Listview in ein Array holen
    For $i = 1 To $aItem[0]
    GUICtrlSetData($aNew[$i - 1], $aItem[$i]) ; und in die entsprechenden Eingabefelder schreiben
    Next
    EndIf
    EndFunc ;==>Edit

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

    Func Load() ; Datenbank-Datei laden
    Local $hFile, $sContent, $aNewItems
    $hFile = FileOpen($sDBFile, 0) ; Datei zum lesen öffnen
    If $hFile <> -1 Then ; wenn das öffnen erfolgreich war, dann...
    $sContent = FileRead($hFile) ; Datei komplett einlesen
    FileClose($hFile) ; Datei schließen
    $sContent = StringTrimRight($sContent, 2) ; das letzte @CRLF entfernen
    $aNewItems = StringSplit($sContent, @CRLF, 1) ; Den Dateiinhalt am Zeilenende splitten
    If Not IsArray($aNewItems) Then Return ; Wenn $aNewItems kein Array ist, dann Funktion verlassen
    _GUICtrlListView_BeginUpdate($hLVHandle) ; Listview sperren
    For $i = 1 To $aNewItems[0] ; Alle Einträge des Arrays durchgehen
    GUICtrlCreateListViewItem($aNewItems[$i], $hListView) ; mit den eingelesenen Daten einen neuen Listview-Eintrag erstellen
    Next
    _GUICtrlListView_EndUpdate($hLVHandle) ; Listview wieder freigeben
    EndIf
    EndFunc ;==>Load

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

    Func Save() ; Datenbank-Datei speichern
    Local $sItem, $hFile, $iCount
    $iCount = _GUICtrlListView_GetItemCount($hLVHandle) - 1 ; Anzahl der Listview-Einträge holen
    If $iCount = -1 Then Return FileDelete($sDBFile) ; Wenn das Listview keine Einträge enthält, dann Datei löschen und Funktion verlassen
    $hFile = FileOpen($sDBFile, 2) ; Datei zum speichern (überschreiben) öffnen
    If $hFile <> -1 Then ; wenn das öffnen erfolgreich war, dann...
    For $i = 0 To $iCount ; Schleife, um alle Listview-Einträge durchzugehen
    $sItem = _GUICtrlListView_GetItemTextString($hLVHandle, $i) ; die Werte aus dem Listview-Eintrag holen
    FileWriteLine($hFile, $sItem) ; und in die Datei schreiben
    Next
    FileClose($hFile) ; Datei schließen
    EndIf
    EndFunc ;==>Save

    [/autoit]

    Meine Frage:
    Wenn ich auf den Button "neuer Eintrag" klicke erscheint ja ne neue GUI mit den Eingabefeldern. Die Eingabefelder hab ich bereits für mich angepasst, es sind nun mehr (12 Stück). Leider passt das nicht mit der GUI. Es werden nicht alle Eingabefelder angezeigt, denn die Felder sind nebeneinander angeordnet. Gibt es eine Möglichkeit, die Eingabefelder untereinander aufzulisten?

    Für mich persönlich wär das echt wichtig.

  • Hilfe bei Programm zum Daten auslesen aus Excel (.csv) und Ausgabe in AutoIt

    • Lottich
    • 1. Oktober 2011 um 23:28

    Hi Oscar,

    ich find dein Script echt klasse, sowas hab ich auch schon versucht zu basteln, leider bin ich immer noch nicht gut genug für sowas, deshalb hab ich auch diesen Thread gefunden.

    Meine Frage:
    Wenn ich auf den Button "neuer Eintrag" klicke erscheint ja ne neue GUI mit den Eingabefeldern. Die Eingabefelder hab ich bereits für mich angepasst, es sind nun mehr (12 Stück). Leider passt das nicht mit der GUI. Es werden nicht alle Eingabefelder angezeigt, denn die Felder sind nebeneinander angeordnet. Gibt es eine Möglichkeit, die Eingabefelder untereinander aufzulisten?

    Für mich persönlich wär das echt wichtig.

  • Funktionen in guictrlcreateTab starten?

    • Lottich
    • 8. September 2011 um 23:54

    jaja, die arrays.... damit tu ich mich noch ganz schön schwer... die wollen immer nicht wie ich.
    viel zu oft krieg ich dann Meldungen wie "Array not declared " usw... ich schnall da die Logok nicht wirklich.
    Deshalb versuch ich so lang wie möglich ohne auszukommen.

    Ich werd das mit den oneventmode mal testen.

  • Funktionen in guictrlcreateTab starten?

    • Lottich
    • 8. September 2011 um 22:23

    Hey all

    ich mal wieder mit nem Anfängerproblem.
    Hab mir ne GUI erstellt mit einem ReiterMenü (GUIctrlcreateTab). Pro Tab sind dann 6-10 Buttons, die verschiedene Funktionen starten sollen.
    Aber wenn ich auf nen Button klick passiert überhaupt nichts. Woran liegts??

    Spoiler anzeigen
    [autoit]

    #include
    #include

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

    Opt('MustDeclareVars', 1)

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

    Local $tab, $msg, $nr
    Local $font = "Lucida Console"
    Local $font1 = "Comic Sans MS"
    Local $ini = @ScriptDir&"/inifile.ini"
    Local $tab1, $tab1alias, $tab1titel, $btn11, $btn12, $btn13, $btn14, $btn15, $btn16, $btn17, $btn18, $btn1
    Local $tab2, $tab2alias, $tab2titel, $btn21, $btn22, $btn23, $btn24, $btn25, $btn26, $btn27, $btn28, $btn2
    Local $tab3, $tab3alias, $tab3titel, $btn31, $btn32, $btn33, $btn34, $btn35, $btn36, $btn37, $btn38, $btn3
    Local $tab4, $tab4alias, $tab4titel, $btn41, $btn42, $btn43, $btn44, $btn45, $btn46, $btn47, $btn48, $btn4
    Local $tab5, $tab5alias, $tab5titel, $btn51, $btn52, $btn53, $btn54, $btn55, $btn56, $btn57, $btn58, $btn5
    Local $tab6, $tab6alias, $tab6titel, $btn61, $btn62, $btn63, $btn64, $btn65, $btn66, $btn67, $btn68, $btn6
    Local $tab7, $tab7alias, $tab7titel, $btn71, $btn72, $btn73, $btn74, $btn75, $btn76, $btn77, $btn78, $btn7
    Local $tab8, $tab8alias, $tab8titel, $btn81, $btn82, $btn83, $btn84, $btn85, $btn86, $btn87, $btn88, $btn8
    Local $titel = "Dedicated Server Control 3"
    Local $BGMain = 0x00E0FFFF
    Local $von_oben_1 = 80
    Local $rand_links_1 = 15
    Local $von_oben_2 = $von_oben_1 + 15
    Local $rand_links_2 = $rand_links_1 + 20

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

    $tab1titel=IniRead($ini,"basic","reiter1","Name?")
    $tab2titel=IniRead($ini,"basic","reiter2","Name?")
    $tab3titel=IniRead($ini,"basic","reiter3","Name?")
    $tab4titel=IniRead($ini,"basic","reiter4","Name?")
    $tab5titel=IniRead($ini,"basic","reiter5","Name?")
    $tab6titel=IniRead($ini,"basic","reiter6","Name?")
    $tab7titel=IniRead($ini,"basic","reiter7","Name?")
    $tab8titel=IniRead($ini,"basic","reiter8","Name?")

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

    $tab1alias=IniRead($ini,"basic","reiter1alias","Name?")
    $tab2alias=IniRead($ini,"basic","reiter2alias","Name?")
    $tab3alias=IniRead($ini,"basic","reiter3alias","Name?")
    $tab4alias=IniRead($ini,"basic","reiter4alias","Name?")
    $tab5alias=IniRead($ini,"basic","reiter5alias","Name?")
    $tab6alias=IniRead($ini,"basic","reiter6alias","Name?")
    $tab7alias=IniRead($ini,"basic","reiter7alias","Name?")
    $tab8alias=IniRead($ini,"basic","reiter8alias","Name?")

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

    GUICreate($titel, 800, 600)
    GUISetBkColor($BGMain)
    GUISetFont(9, 400)
    $tab = GUICtrlCreateTab($rand_links_1, 80, 771, 480,$TCS_FIXEDWIDTH)

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

    $tab1 = GUICtrlCreateTabItem($tab1titel)
    GUISetFont(30, 400, 4, $font1)
    GUICtrlCreateLabel($tab1alias,180,10)
    GUISetFont(10, 400,0,$font)
    $btn1 = GUICtrlCreateButton ("OK0", $rand_links_2, $von_oben_2 + 50, 100, 25)
    GUICtrlSetOnEvent($btn1,"func1")

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

    $tab2 = GUICtrlCreateTabItem($tab2titel)
    GUISetFont(30, 400, 4, $font1)
    GUICtrlCreateLabel($tab2alias,180,10)
    GUISetFont(10, 400,0,$font)
    $btn2 = GUICtrlCreateButton ("OK0", $rand_links_2, $von_oben_2 + 50, 100, 25)
    GUICtrlSetOnEvent($btn2,"func2")

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

    Func func1()
    MsgBox(0,"","reiter eins funzt")
    EndFunc

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

    Func func2()
    MsgBox(0,"","reiter zwei funzt")
    EndFunc

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

    GUISetState()

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

    While 1
    $msg = GUIGetMsg()
    If $msg = $GUI_EVENT_CLOSE Then ExitLoop
    WEnd

    [/autoit]
  • autoit.de goes professional

    • Lottich
    • 2. August 2011 um 22:22

    Ich würd gerne mitmachen, aber ich bin viel zu schlecht ;(

  • wie bau ich mir eine uninstall-Funktion?

    • Lottich
    • 1. August 2011 um 00:55

    Vielen Dank für deine Tipps ;)
    Ich werd gleich mal nachschauen.

    Nachtrag:

    Öhm...

    [autoit]

    If $CmdLine[1]= "-uninstall" Then
    MsgBox(0,"", "Uninstall detected...")
    Exit
    EndIf

    [/autoit]


    Ich nehme an, so kann ich nicht überprüfen, ob die Verknüpfung mit dem parameter "-uninstall" gestartet wurde.
    Da schimpft die Console mit mir. Hast du da noch nen Tip für mich?


    Nachtrag 2:
    Habs gefunden xD

    [autoit]

    If $CMDLINE[0] Then
    If $CMDLINE[1] = "uninstall" Then
    MsgBox(0,"", "Uninstall detected...")
    Exit
    EndIf
    EndIf

    [/autoit]


    Jetzt kann ich anstelle der Messagebox den Code platzieren.

  • wie bau ich mir eine uninstall-Funktion?

    • Lottich
    • 1. August 2011 um 00:48

    Auch den Launcher selbst?

  • wie bau ich mir eine uninstall-Funktion?

    • Lottich
    • 1. August 2011 um 00:13

    hey all

    Es geht mal wieder um mein "Tool", wo ich schon eine Weile dran sitze.
    Im Prinzip ist es ja fertig, doch ich würd es gerne noch verfeinern.

    Es ist ein clanspezifischer Serverjoiner, mit dem man per Buttonklick auf den jeweils gewählten Gameserver joinen kann.
    Updatefunktion funktioniert klasse. Und die Setup-Datei wandelt sich um in den "Launcher".
    Was mir jetzt noch fehlt, ist eine Funktion zum Deinstallieren.

    Mein Programm besteht aus 2 Dateien, dem Launcher und dem Joiner. Der Launcher prüft bei Start auf Updates und startet den Joiner.
    Beim Setup wird ja aus der Setup-Datei der Launcher und vom Launcher erstelle ich Verknüpfungen auf dem Desktop, ins Startmenü und wahlweise in den AutostartOrdner.
    Eine weitere Verknüpfung würd ich gern mit ins Startmenü erstellen, diese dann mit Commandline.

    Bsp:

    Ziel: "C:\programme\joiner\launcher.exe" -uninstall

    Wie lässt sich das am besten realisieren?

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™