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

Beiträge von DasIch

  • Menü Item Check

    • DasIch
    • 19. Dezember 2013 um 17:48
    Zitat von Raupi

    Haken vor dem Menü geht ohne Probleme. Habe jetzt zwar nicht ganz verstanden wann er gesetzt werden soll, aber ist auch egal.
    Im Beispiel wird der Haken gesetzt/nicht gesetzt wenn du den OK Button anklickst. Wie das geht siehst du also.

    Spoiler anzeigen
    [autoit]

    #include
    #include
    #include
    #include

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

    $_1 = GUICreate("Notiz Tool", 196, 175, 192, 125, BitOR($GUI_SS_DEFAULT_GUI, $WS_MAXIMIZEBOX, $WS_SIZEBOX, $WS_THICKFRAME, $WS_TABSTOP))
    $menOptions = GUICtrlCreateMenu("Einstellungen")
    $smenMouseClick = GUICtrlCreateMenuItem("Automatisch OK", $menOptions)
    $cmdOk = GUICtrlCreateButton("OK", 2, 34, 90, 20)
    $edtText = GUICtrlCreateEdit("", 0, 56, 185, 89)
    GUICtrlSetData(-1, "edtText")
    GUISetState(@SW_SHOW)
    $iOption = 0

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

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

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

    Case $nMsg = $smenMouseClick
    Select
    Case $iOption = 0
    $iOption = 1
    Case $iOption = 1
    $iOption = 0
    EndSelect

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

    Case $nMsg = $cmdOk
    Select
    Case $iOption = 0
    GUICtrlSetState($smenMouseClick, $GUI_UNCHECKED)
    GUICtrlSetData($edtText, "Unchecked")
    Case $iOption = 1
    GUICtrlSetState($smenMouseClick, $GUI_CHECKED)
    GUICtrlSetData($edtText, "Checked")
    EndSelect
    EndSwitch
    WEnd

    [/autoit]

    BugFix, warum soll ein Haken vor dem Menü nicht gehen? Ist doch das klassische Beispiel von Checked/Unchecked in einem Menüitem.
    Schau dir das Beispiel von GUICtrlCreateMenuItem mal an :P

    DasIch, schau dir das Beispiel in der Hilfe an ;)

    Alles anzeigen


    Raupi, du bist mein Held! DANKE!! :party: :D Hat super funktioniert :love:

  • Menü Item Check

    • DasIch
    • 19. Dezember 2013 um 16:33
    Zitat von BugFix


    Mag ja sein - aber nochmal: Mit den Standard-AutoIt-Funktionen ist das nicht realisierbar.


    Und genau deshalb frage ich hier nach, ob jemand eine Ahnung hat, denn eine Standard-Funktion hierfür kann ich nicht finden und ich habe hier bisher nur gute Erfahrungen gemacht.

  • Menü Item Check

    • DasIch
    • 19. Dezember 2013 um 16:27
    Zitat von BugFix


    Da hilft besseres Beschreiben? :P

    Also MenuItem können m.W. mit Standardfunktionen keine Checkbox erhalten, nur RadioItem sind möglich.


    Ich habe doch sogar ein bild gemacht davon, wie es aussehen soll :( Das mit der Checkbox hat NightmarePhoenix als Vorschlag eingebracht. Aber ich möchte ja dort keine klassische Checkbox haben, sondern einfach ein "aktiv = Häkchen", "inaktiv = kein Häkchen".

    Sowas gibt es doch bei vielen Programmen. Beispielsweise beim Editor von Windows: Im Reiter "Format" gibt es die Option "Zeilenumbruch". Ist der Zeilenumbruch aktiv, wird ein Häkchen davor eingeblendet. Ist er inaktiv, wird das Häkchen wieder entfernt. Genau so etwas möchte ich auch haben. Wenn es aktiv ist, soll die Variable 1 sein, wenn es inaktiv ist, soll sie 0 betragen.

  • Menü Item Check

    • DasIch
    • 19. Dezember 2013 um 15:58
    Zitat von NightmarePhoenix

    Du könntest ja mal eine Checkbox erstellen ($GUICtrlCreateCheckbox) und dann sagen wenn der Knopf gedrückt wird und die Checkbox = 4 (deaktiviert) dann soll sie auf 1 (aktiviert) gesetzt werden und wenn sie nicht auf 4 ist ( wodurch sie ja auf dann nur auf 1 sein kann) soll sie auf 4 gesetzt werden.

    Und wie schaffe ich es, eine Checkbox oben in das Menü zu bekommen, direkt vor den Schriftzug?! Das Häkchen soll dort gesetzt werden (Also unter Einstellungen > Automatisch OK)

    Soll dann ungefähr so aussehen wie im Anhang. (Übrigens ein erstklassiges MSPaint-Projekt! :thumbup: )

    P.S.: Ich glaube, ihr missversteht mein Problem ein bisschen :P

    Bilder

    • speichern.png
      • 15,86 kB
      • 207 × 204
  • Menü Item Check

    • DasIch
    • 19. Dezember 2013 um 15:08
    Zitat von chip

    Stell ein funktionsfähiges Beispielscript rein welches dein Problem darstellt. Du willst schließlich etwas von uns und nicht umgekehrt ;).


    Gerne. Hier:

    Spoiler anzeigen
    [autoit]

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

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

    $_1 = GUICreate("Notiz Tool", 196, 175, 192, 125, BitOR($GUI_SS_DEFAULT_GUI,$WS_MAXIMIZEBOX,$WS_SIZEBOX,$WS_THICKFRAME,$WS_TABSTOP))
    $menOptions = GUICtrlCreateMenu("Einstellungen")
    $smenMouseClick = GUICtrlCreateMenuItem("Automatisch OK", $menOptions)
    $cmdOk = GUICtrlCreateButton("OK", 2, 34, 90, 20)
    $edtText = GUICtrlCreateEdit("", 0, 56, 185, 89)
    GUICtrlSetData(-1, "edtText")
    GUISetState(@SW_SHOW)
    $iOption = 0

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

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

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

    Case $nMsg = $smenMouseClick
    Select
    Case $iOption = 0
    $iOption = 1
    Case $iOption = 1
    $iOption = 0
    EndSelect

    Case $nMsg = $cmdOk
    Select
    Case $iOption = 0
    GUICtrlSetData($edtText, "Unchecked")
    Case $iOption = 1
    GUICtrlSetData($edtText, "Checked")
    EndSelect
    EndSwitch
    WEnd

    [/autoit]

    Allerdings versteht er nicht, wann die Variable auf 0, und wann sie auf 1 steht...

    Zitat

    naja, wenn du eine checkbox davor setzt und sie dann mit dem Knopf verbindest, müsste das doch gehen oder?

    Sowas geht im Menü?

  • Menü Item Check

    • DasIch
    • 19. Dezember 2013 um 14:31

    Hallo zusammen,

    erstmal hier der Teil des Codes, der interessant ist:

    Spoiler anzeigen
    [autoit]

    $_1 = GUICreate("Notiz Tool", 243, 465, 192, 125, BitOR($GUI_SS_DEFAULT_GUI,$WS_SIZEBOX,$WS_MAXIMIZEBOX,$WS_THICKFRAME))
    $menHelp = GUICtrlCreateMenu("Hilfe")
    $smenInfo = GUICtrlCreateMenuItem("Info", $menHelp)
    $smenVersion = GUICtrlCreateMenuItem("Versionshinweise", $menHelp)
    $smenMouseClick = GUICtrlCreateMenuItem("Automatisch OK", $menHelp)

    [/autoit]

    Ich möchte nun, dass beim Klick auf den Button "$smenMouseClick" eine Variable (nennen wir sie einfach $iOption) auf 1 gesetzt wird, soweit nicht schwer.

    Allerdings soll, wenn man darauf geklickt hat, ein Häkchen davor symbolisieren, dass die Option aktuell ausgewählt ist. Bei einem erneuten Klick darauf soll $iOption wieder auf 0 gesetzt und das Häkchen vor dem Menüpunkt wieder entfernt werden.

    Wie setze ich sowas um?

    Vielen Dank vorab für eure Hilfe

  • Liste beim Starten des Programmes aus Datei einpflegen

    • DasIch
    • 29. November 2013 um 20:30

    Wow! :D So funktioniert es :D Danke dir vielmals für deine Hilfe! Das Thema kann als gelöst betrachtet werden :)

  • Liste beim Starten des Programmes aus Datei einpflegen

    • DasIch
    • 29. November 2013 um 19:53
    Zitat von Xenon

    _GUICtrlListBox_DeleteString ($hlstPrograms, _GUICtrlListBox_FindInText ($hlstPrograms, $aProgram[0][$i]))

    Löscht leider den Text in der Liste nicht :(

  • Liste beim Starten des Programmes aus Datei einpflegen

    • DasIch
    • 29. November 2013 um 19:43
    Zitat von Xenon

    Dann erstelle mal deine Liste mit

    [autoit]

    $lstPrograms = GUICtrlCreateList("", 14, 72, 120, 305, $WS_BORDER + $WS_VSCROLL)

    [/autoit]


    Dann ist die "automatische Sortierfunktion" nicht dabei und dann sollten die Indexe(heißt das so?) gleich sein, oder?

    MfG Xenon :)


    Hi Xenon,

    funktioniert leider auch nicht. Sobald ich mehr als einen Eintrag lösche, spinnt es :/

    Oh, und P.S.: Indexe stimmt in dem Zusammenhang ^^

  • Liste beim Starten des Programmes aus Datei einpflegen

    • DasIch
    • 29. November 2013 um 19:32
    Zitat von Xenon

    Die _GUIListView - Fuktionen werden da nicht funktionieren, da du keine ListView hast.
    Da kannst du die ListBox - Funktion

    [autoit]

    _GUICtrlListBox_DeleteString ($hlstPrograms, $Index)

    [/autoit]

    benutzen.

    MfG Xenon :)

    Hatte ich auch versucht. Auch kein Erfolg.. Wenn ich _GUICtrlListBox_DeleteString($lstPrograms, $i) versuche, löscht er das falsche. Weil Listen Index <> Array Index ist :/

  • Liste beim Starten des Programmes aus Datei einpflegen

    • DasIch
    • 29. November 2013 um 18:39

    Ich habs verstanden denke ich :D Danke, danke, danke Xenon :D Dein Beispiel war echt super und hat mir geholfen, meine Problemchen zu beheben! :)

    Jetzt gibt es nurnoch ein kleines Problem, was mich verzweifeln lässt :P Und zwar schaffe ich es um's verrecken nicht, dass er aus der Liste den gelöschten Eintrag entfernt. Habs schon mit _GUICtrlListView_DeleteItemsSelected, _GUICtrlListView_GetSelected und _GUICtrlListView_GetSelectedIndices versucht, aber es mag einfach nicht verschwinden :(

    Hier der aktuelle Quellcode:

    Spoiler anzeigen
    [autoit]

    #include <ButtonConstants.au3>
    #include <GUIConstantsEx.au3>
    #include <GUIListBox.au3>
    #include <TabConstants.au3>
    #include <WindowsConstants.au3>
    #Include <File.au3>
    #Include <Array.au3>
    #include <GuiListView.au3>

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

    #region Variablen
    Global $iSize = 30
    Global $aProgram[2][$iSize]
    Global $iCounter = 0
    Global $sIniPath = @ScriptDir & "\Settings.ini"
    #endregion

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

    #region ini auslesen
    Global $sProgramsIni = IniRead ($sIniPath, "Programme", "Programm", "")
    Global $aProgramsIni = StringSplit ($sProgramsIni, "|", 2)
    Global $sPathsIni = IniRead ($sIniPath, "Programme", "Pfad", "")
    Global $aPathsIni = StringSplit ($sPathsIni, "|", 2)
    #endregion

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

    #region GUI Initialisierung
    $ProgrammStarter = GUICreate("ProgrammStarter", 615, 433, 572, 214)

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

    ; -----------------------------------------
    ; MenüItems
    $menDatei = GUICtrlCreateMenu("&Datei")
    $smenNotepad = GUICtrlCreateMenuItem("Notepad öffnen", $menDatei)
    $smenExit = GUICtrlCreateMenuItem("Schließen", $menDatei)
    $menInfo = GUICtrlCreateMenu("&Info")
    $smenAbout = GUICtrlCreateMenuItem("About", $menInfo)
    $smenHistory = GUICtrlCreateMenuItem("Patch Logs", $menInfo)

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

    ; -----------------------------------------
    ; Tab 1 Buttons (Not functional!)
    $tabTablist = GUICtrlCreateTab(0, 0, 145, 401)
    $TabSheet1 = GUICtrlCreateTabItem("Buttons")
    $cmdAddProgramB = GUICtrlCreateButton("Add", 12, 41, 58, 25)
    $cmdDelProgramB = GUICtrlCreateButton("Delete", 76, 41, 58, 25)
    $Button1 = GUICtrlCreateButton("Button1", 12, 73, 91, 25)
    $Button2 = GUICtrlCreateButton("", 108, 73, 27, 25, $BS_ICON)
    GUICtrlSetImage(-1, "C:\Users\localuser\Desktop\mana.ico", -1, 0)

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

    ; -----------------------------------------
    ; Tab 2 Liste
    $TabSheet2 = GUICtrlCreateTabItem("Liste")
    GUICtrlSetState(-1,$GUI_SHOW)
    $cmdDelProgramL = GUICtrlCreateButton("Delete", 76, 41, 58, 25)
    $cmdAddProgramL = GUICtrlCreateButton("Add", 12, 41, 58, 25)
    $lstPrograms = GUICtrlCreateList("", 14, 72, 120, 305)
    Inifill()
    GUICtrlCreateTabItem("")
    GUISetState(@SW_SHOW)
    #endregion

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

    While 1
    $nMsg = GUIGetMsg()
    Switch $nMsg
    ; -----------------------------------------
    ;~ Menue Bar Controls
    Case $GUI_EVENT_CLOSE
    Exit

    Case $smenExit
    Exit

    Case $smenNotepad
    Run("notepad.exe")

    Case $smenAbout
    MsgBox(0, "Info zum Programm", "Entwickler: Ich" & @CRLF & "Version: 0.0.1 Alpha")

    Case $smenHistory

    ; -----------------------------------------
    ;~ Functionbuttons Tab Liste
    Case $cmdAddProgramL
    ProgAdd()

    Case $cmdDelProgramL
    ProgDelete()
    MsgBox(0,"", "ID: " & $iArNr)
    _ArrayDisplay ($aProgram)
    EndSwitch
    WEnd

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

    Func IniFill()
    If UBound ($aProgramsIni) = UBound ($aPathsIni) Then
    For $i = 0 To UBound ($aProgramsIni) - 1
    If $iCounter > $iSize - 1 Then
    ExitLoop
    EndIf
    $aProgram[0][$iCounter] = $aProgramsIni[$i]
    $aProgram[1][$iCounter] = $aPathsIni[$i]
    GUICtrlSetData($lstPrograms, $aProgram[0][$iCounter])
    $iCounter += 1
    Next
    EndIf
    EndFunc

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

    Func ProgAdd()
    Global $sProgram = ""
    Global $sPath = ""

    For $i = 0 To $iSize -1
    If $aProgram[0][$i] <> "" Then
    $sProgram &= $aProgram[0][$i] & "|"
    $sPath &= $aProgram[1][$i] & "|"
    EndIf
    Next

    MsgBox(0,"","Prog: " & $sProgram & @CRLF & "Pfad: " & $sPath)

    For $i = 0 To $iSize - 1
    If $aProgram[0][$i] = "" Then
    $aProgram[0][$i] = InputBox("Programm hinzufügen", "Bitte geben Sie den Programmnamen ein.")
    $aProgram[1][$i] = FileSelectFolder("Speicherpfad des Programmes auswählen","")
    GUICtrlSetData($lstPrograms, $aProgram[0][$i])
    If $aProgram[0][$i] <> "" Then
    $sProgram &= $aProgram[0][$i] & "|"
    $sPath &= $aProgram[1][$i] & "|"
    ExitLoop
    EndIf
    EndIf
    Next
    If StringRight ($sProgram, 1) = "|" Then $sProgram = StringLeft($sProgram, StringLen($sProgram) - 1)
    If StringRight ($sPath, 1) = "|" Then $sPath = StringLeft($sPath, StringLen($sPath) - 1)
    IniWrite($sIniPath, "Programme", "Programm", $sProgram)
    IniWrite($sIniPath, "Programme", "Pfad", $sPath)
    EndFunc

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

    Func ProgDelete()
    $sSelected = GUICtrlRead($lstPrograms)
    For $i = 0 To $iSize -1
    If $aProgram[0][$i] = $sSelected Then
    MsgBox(0, "Löschen", $aProgram[0][$i] & "wurde gelöscht.")
    MsgBox(0, "ID", "Programm: " & $aProgram[0][$i] & @CRLF & "Speicherpfad: " & $aProgram[1][$i] )
    $aProgram[0][$i] = ""
    $aProgram[1][$i] = ""
    Global $iArNr = $i
    EndIf
    Next
    EndFunc

    [/autoit]
  • Liste beim Starten des Programmes aus Datei einpflegen

    • DasIch
    • 29. November 2013 um 14:15

    Xenon, du bist der Beste! :D Ich werde es mir sofort wenn ich heim komme anschauen und berichten. Danke dir vielmals für deine Geduld und Hilfe :D

    Edit:
    Brauche ich die Count-Variable überhaupt in meinem Programm oder wird der Listen-Index automatisch richtig hoch gezählt?

  • Problem: 2 Browserfenster sollen auf 2 Monitoren beim Starten fullscreen öffnen

    • DasIch
    • 29. November 2013 um 14:10
    Zitat von azubine

    Vielen Dank für die Antworten und die Mühe.
    Die Variante von "Mega" übersteigt mein Können um ein Vielfaches :S

    gmmg: Ich habe das Script so nachstellen wollen (als .au3-Datei gespeichert und in den Autostart),
    leider öffnete sich dann nur ein Fenster. :(

    Was ich nicht so ganz verstehe: Wieso x1 = 0 und y1 = 0 sowie y2 = 0? Sind das die Koordinaten für die "Monitorposition"?
    1024 verstehe ich bei x2...

    An welcher Stelle was das Script genau: URL 1 auf Monitor 1 und URL 2 auf Monitor2?

    Dankeschön!

    x1 = 0 == > Das Programm öffnet Firefox bei zwei Bildschirmen ganz links vom ersten Monitor
    y1 = 0 == > Das Programm öffnet Firefox bei zwei Bildschirmen ganz oben vom ersten Monitor
    ----------
    x1 und y1 = Ganz links oben im ersten Monitor

    x2 = 1024 (wenn du eine 1024x768 hast) ==> Das Programm öffnet Firefox bei zwei Bildschirmen ganz links vom zweiten Monitor
    y2 = 0 == > Das Programm öffnet Firefox bei zwei Bildschirmen ganz oben vom zweiten Monitor
    ---------
    x2 und y2 = Ganz links oben im zweiten Monitor

    Das mit den URL's wird dem Run mitgegeben, und das Skript wartet, bis der Firefox da ist, damit er es an die richtige Position "verschieben" kann. Er weiß anhand des Fenstertitels, welcher Firefox wohin gehört. Ist das Fenster an der richtigen Position, wird es dort maximiert. Ist leider etwas statisch, das Thema: wird die Homepage überarbeitet, und ändert sich der Fenstertitel, wird das Skript nicht mehr funktionieren.

    Ich hoffe, ich konnte helfen.

  • Liste beim Starten des Programmes aus Datei einpflegen

    • DasIch
    • 29. November 2013 um 12:38

    Hallo Xenon und danke für deine Antwort.

    Leider verstehe ich nicht so ganz, was du mir damit sagen möchtest:

    Zitat von Xenon

    Die Pfade werden durch | getrennt aneinander gehängt, ebenso alle Programmnamen.
    Dann lässt sich das wie folgt in einer .ini abspeichern:

    Code
    [Programme]
    Pfade=C:\Pfad1\Programm1|D:\Pfad2\Programm2
    Titel=TitelProgramm1|TitelProgramm2

    Zum Auslesen führst du mit den Pfad- bzw. Titelstring ein StringSplit ($Pfade/Titel, "|") durch und erhältst sie als Array. Das kannst du nun durchlaufen und die Liste erstellen.

    Also würde das mit der Ini File so aussehen?

    [autoit]

    IniWrite ("programs.ini", "Programme", "Programm", $aProgram[0][$aCounter]&"|")
    IniWrite ("programs.ini", "Programme", "Pfad", $aProgram[1][$aCounter]&"|"

    [/autoit][autoit]

    $aSplitProgram[0][] = IniRead("programs.ini","Programme","Programm")
    $aSplitProgram[0][] = StringSplit($aProgram[$aCounter], "|")

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

    $aSplitProgram[1][] = IniRead("programs.ini","Programme","Pfad")
    $aSplitProgram[1][] = StringSplit($aProgram[$aCounter], "|")

    [/autoit]

    Oder wie ist das gemeint? Sorry, ich bin etwas überfordert mit der antwort :( Woher soll er denn wissen, wieviel Speicher er für das Array reservieren soll, bzw. wie kann ich einfach alle in den Array schreiben lassen, und den entsprechenden Count davon haben?

    Zitat

    Edit:
    Die Pfade und Titel würde ich in einem
    zweidimensionalen Array speichern. Dadurch ist ein eindeutiger Bezug
    Pfad - Programm möglich. Bspw. $Array[0][$x] -
    Programmname;
    $Array[1][$x] - Pfad.

    Wie sieht das in der Praxis aus? So?

    [autoit]


    $aProgram[0][$aCounter] = InputBox("Programm hinzufügen", "Bitte geben Sie den Programmnamen ein. |")
    GUICtrlSetData($lstPrograms, $aProgram[0][$aCounter])
    $aProgram[1][$aCounter] = FileSelectFolder("Speicherpfad des Programmes auswählen","")
    IniWrite ("programs.ini", "Programme", "Programm", $aProgram[0][$aCounter]&"|")
    IniWrite ("programs.ini", "Programme", "Pfad", $aProgram[1][$aCounter]&"|")
    $aCounter += 1

    [/autoit]

    Sorry, wenn ich dir grade nicht folgen kann, ich bin halt wie gesagt noch neu in der Materie und so ganz ohne ein paar Beispiele kann ich es dann auch nicht wirklich ^^ es mangelt halt an dem "Wie setze ich es um" im Moment :(

  • Liste beim Starten des Programmes aus Datei einpflegen

    • DasIch
    • 28. November 2013 um 21:09

    Hallo zusammen,

    eines vorweg: Dies ist mein erster Post hier, ich bitte also um Umsicht, sollte ich nicht alle Postingregeln beachtet haben ;)

    Nun zum Thema. Ich habe zum Erlernen von Autoit ein kleines Programm geschrieben, welches aus zwei Tabs besteht. Im ersten Tab sollen die Programme über Buttons gestartet werden und im zweiten über eine Liste. Ersteres ist in der Frage irrelevant, soll nur den Aufbau verdeutlichen.

    In dem Tab mit der Liste befinden sich meine "Problemchen", welche für euch sicherlich einfach zu lösen sind, für mich als Neuling (habe erst gestern damit angefangen :P) schon eine kleine Hürde sind. Hier erstmal der Quellcode:

    Spoiler anzeigen
    [autoit]

    #include <ButtonConstants.au3>
    #include <GUIConstantsEx.au3>
    #include <GUIListBox.au3>
    #include <TabConstants.au3>
    #include <WindowsConstants.au3>
    #Include <File.au3>

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

    $ProgrammStarter = GUICreate("ProgrammStarter", 615, 433, 572, 214)

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

    ; -----------------------------------------
    ; MenüItems
    $menDatei = GUICtrlCreateMenu("&Datei")
    $smenNotepad = GUICtrlCreateMenuItem("Notepad öffnen", $menDatei)
    $smenExit = GUICtrlCreateMenuItem("Schließen", $menDatei)
    $menInfo = GUICtrlCreateMenu("&Info")
    $smenAbout = GUICtrlCreateMenuItem("About", $menInfo)
    $smenHistory = GUICtrlCreateMenuItem("Patch Logs", $menInfo)

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

    ; -----------------------------------------
    ; Tab 1 Buttons (Not functional!)
    $tabTablist = GUICtrlCreateTab(0, 0, 145, 401)
    $TabSheet1 = GUICtrlCreateTabItem("Buttons")
    $cmdAddProgramB = GUICtrlCreateButton("Add", 12, 41, 58, 25)
    $cmdDelProgramB = GUICtrlCreateButton("Delete", 76, 41, 58, 25)
    $Button1 = GUICtrlCreateButton("Button1", 12, 73, 91, 25)
    $Button2 = GUICtrlCreateButton("", 108, 73, 27, 25, $BS_ICON)
    GUICtrlSetImage(-1, "C:\Users\localuser\Desktop\mana.ico", -1, 0)

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

    ; -----------------------------------------
    ; Tab 2 Liste
    $TabSheet2 = GUICtrlCreateTabItem("Liste")
    GUICtrlSetState(-1,$GUI_SHOW)
    $cmdDelProgramL = GUICtrlCreateButton("Delete", 76, 41, 58, 25)
    $cmdAddProgramL = GUICtrlCreateButton("Add", 12, 41, 58, 25)
    $lstPrograms = GUICtrlCreateList("", 14, 72, 120, 305)
    GUICtrlCreateTabItem("")
    GUISetState(@SW_SHOW)
    local $aSize = 30
    local $aProgram[$aSize]
    local $aProgramPath[$aSize]
    local $aCounter = 0

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

    While 1
    $nMsg = GUIGetMsg()
    Switch $nMsg

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

    ; -----------------------------------------
    ;~ Menue Bar Controls
    Case $GUI_EVENT_CLOSE
    Exit

    Case $smenExit
    Exit

    Case $smenNotepad
    Run("notepad.exe")

    Case $smenAbout
    MsgBox(0, "Info zum Programm", "Entwickler: Ich" & @CRLF & "Version: 0.0.1 Alpha")

    Case $smenHistory
    )

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

    ; -----------------------------------------
    ;~ Functionbuttons Tab Liste
    Case $cmdAddProgramL
    $aProgram[$aCounter] = InputBox("Programm hinzufügen", "Bitte geben Sie den Programmnamen ein.")
    GUICtrlSetData($lstPrograms, $aProgram[$aCounter])
    $aProgramPath[$aCounter] = FileSelectFolder("Speicherpfad des Programmes auswählen","")
    FileWriteLine('programs.txt', $aProgram[$aCounter])
    $aCounter += 1

    Case $cmdDelProgramL
    $sDelListItem = GUICtrlRead($lstPrograms)
    $sSelected = _GUICtrlListBox_GetCaretIndex($lstPrograms)
    MsgBox(0, "Löschen", $sDelListItem & " mit ID " & $sSelected & " wurde gelöscht.")
    MsgBox(0, "ID", "Programm: " & $sDelListItem & @CRLF & "Speicherpfad: " & $aProgramPath[$sSelected] )
    _GUICtrlListBox_DeleteString($lstPrograms, _GUICtrlListBox_GetCaretIndex($lstPrograms))
    EndSwitch
    WEnd

    [/autoit]

    Problem Nummer Eins: Ich weiß nicht, wie ich es dem Programm beibringen soll, dass es sich merkt, welche Programme beim vorherigen Ausführen des Tools bereits angelegt wurden, und dass diese wieder in die Liste geladen werden. habe es via filewrite versucht, aber irgendwie scheint das auch nicht das richtige zu sein. Schließlich muss er 1. den Programmnamen und 2. den Speicherpfad des Programmes wieder einlesen. Eine ini-File scheint mir auch ungünstig, schließlich ist eine ini-File mehr oder weniger "eindimensional", wenn ihr wisst, was ich meine ^^

    Außerdem besteht noch ein anderes Problem. Angenommen, ich möchte den Acrobat Reader in die Liste schreiben. Dann wähle ich "Add" aus und gebe dem Programm einen Namen. Anschließend kommt eine Abfrage, wo das Programm gespeichert ist. er schreibt beides in jeweils einen Array und das wars. Möchte ich jetzt aber das Programm wieder löschen über "Delete", so weiß das Tool nicht mehr, welchem Programm welcher Pfad zugewiesen wurde.

    Ich hoffe, ich überflute euch jetzt nicht mit Unwissen und verletze euch mit meinen Programmierunkenntnissen :P

    Vielmaligen Dank vorab für eure Hilfe und liebe Grüße

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™