Wer gibt einem Anfänger Starthilfe

  • Hallo alle miteinander,
    ich habe gestern über AutoIt gelesen und dachte, das das für meine Zweck nicht schlecht ist. Da ich nicht auf die Powershell für GUIs zugreifen will würde ich folgendes gerne mit AutoIt ung gegebenenfalls VBSkript machen.

    Was ich machen möchte:
    Ich möchte eine GUI haben, mit der ich eine Sybase DB mit der cmd-Version aufrufen kann und das auch nochauf einem Remoteserver oder auch auf dem lokalen PC.
    Schön wäre es ernn ich das ganze ohne Dienste machen könnte und die Möglichkeit eines Abfragens besteht, ob der Process läuft.
    Super wäre es auch die Kundenliste mit Verzeichnissen oder ähnlich und die Server in einer ini-Datei pflegen zu können.

    Meine Idee für eine GUI (Ich weiß, ist mit Koda erstellt, aber war wenigstens gut für einen ersten Entwurf) habe ich hier als Screenshot und als Quellcode:

    Screenshot:
    [Blockierte Grafik: http://img137.imageshack.us/img137/9761/serverstart.png]

    [autoit]


    #include <GUIConstants.au3>

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

    Opt("TrayMenuMode", 1)
    Opt("TrayMenuMode", 1)
    #Region ### START Koda GUI section ### Form=d:\__gui\koda_1.7.0.1\forms\serverstarter.kxf
    $Serverstarter = GUICreate("Serverstarter", 506, 406, 193, 125)
    GUISetBkColor(0xB9D1EA)
    $Label1 = GUICtrlCreateLabel("Sybase Datenbanken auf Remoteserver starten", 44, 16, 439, 28)
    GUICtrlSetFont(-1, 16, 800, 4, "MS Sans Serif")
    GUICtrlSetColor(-1, 0x000080)
    $Anwendun = GUICtrlCreateGroup("Anwendung", 24, 120, 161, 57)
    $Anwendung = GUICtrlCreateCombo("Bitte auswählen", 32, 144, 145, 25)
    GUICtrlSetData(-1, "|DB A|DB 2|Beide")
    GUICtrlSetCursor (-1, 0)
    GUICtrlCreateGroup("", -99, -99, 1, 1)
    $Kunde = GUICtrlCreateGroup("Kunde", 24, 52, 161, 57)
    $Kunden = GUICtrlCreateCombo("Bitte auswählen", 32, 77, 145, 25)
    GUICtrlSetData(-1, "Kunde1|Kunde2|Kunde3")
    GUICtrlSetCursor (-1, 0)
    GUICtrlCreateGroup("", -99, -99, 1, 1)
    $Serve = GUICtrlCreateGroup("Server", 24, 188, 161, 57)
    $Server = GUICtrlCreateCombo("Bitte auswählen", 32, 212, 145, 25)
    GUICtrlSetData(-1, "APP01|APP02|APP03|Eigener PC")
    GUICtrlSetCursor (-1, 0)
    GUICtrlCreateGroup("", -99, -99, 1, 1)
    $Aktuell = GUICtrlCreateGroup("Aktuell gestartet", 200, 52, 281, 305)
    $TreeView1 = GUICtrlCreateTreeView(208, 76, 265, 265)
    $TreeView1_0 = GUICtrlCreateTreeViewItem("APP01", $TreeView1)
    $TreeView1_1 = GUICtrlCreateTreeViewItem("DB A", $TreeView1_0)
    $TreeView1_2 = GUICtrlCreateTreeViewItem("Kunde2", $TreeView1_1)
    $TreeView1_3 = GUICtrlCreateTreeViewItem("DB B", $TreeView1_0)
    $TreeView1_4 = GUICtrlCreateTreeViewItem("APP02", $TreeView1)
    $TreeView1_5 = GUICtrlCreateTreeViewItem("DB A", $TreeView1_4)
    $TreeView1_6 = GUICtrlCreateTreeViewItem("DB B", $TreeView1_4)
    $TreeView1_7 = GUICtrlCreateTreeViewItem("APP03", $TreeView1)
    $TreeView1_8 = GUICtrlCreateTreeViewItem("DB A", $TreeView1_7)
    $TreeView1_9 = GUICtrlCreateTreeViewItem("Kunde3", $TreeView1_8)
    $TreeView1_10 = GUICtrlCreateTreeViewItem("DB B", $TreeView1_7)
    $TreeView1_11 = GUICtrlCreateTreeViewItem("Kunde3", $TreeView1_10)
    $TreeView1_12 = GUICtrlCreateTreeViewItem("WORKSTATION1", $TreeView1)
    $TreeView1_13 = GUICtrlCreateTreeViewItem("DB A", $TreeView1_12)
    $TreeView1_14 = GUICtrlCreateTreeViewItem("DB B", $TreeView1_12)
    $TreeView1_15 = GUICtrlCreateTreeViewItem("Kunde1", $TreeView1_14)
    $TreeView1_16 = GUICtrlCreateTreeViewItem("WORKSTATION2", $TreeView1)
    $TreeView1_17 = GUICtrlCreateTreeViewItem("DB A", $TreeView1_16)
    $TreeView1_18 = GUICtrlCreateTreeViewItem("Kunde1", $TreeView1_17)
    $TreeView1_19 = GUICtrlCreateTreeViewItem("DB B", $TreeView1_16)
    GUICtrlCreateGroup("", -99, -99, 1, 1)
    $Button1 = GUICtrlCreateButton("Server starten", 32, 264, 147, 25, 0)
    GUICtrlSetCursor (-1, 0)
    $TreeView1context = GUICtrlCreateContextMenu($TreeView1)
    $MenuItem1 = GUICtrlCreateMenuItem("Aktualisieren", $TreeView1context)
    $MenuItem13 = GUICtrlCreateMenuItem("Beenden", $TreeView1context)
    $MenuItem3 = GUICtrlCreateMenu("&System")
    $MenuItem9 = GUICtrlCreateMenuItem("Programminfo", $MenuItem3)
    $MenuItem2 = GUICtrlCreateMenuItem("Beenden", $MenuItem3)
    $MenuItem5 = GUICtrlCreateMenu("&Konfiguration anpassen")
    $MenuItem8 = GUICtrlCreateMenuItem("Ändern", $MenuItem5)
    $MenuItem7 = GUICtrlCreateMenuItem("Entfernen", $MenuItem5)
    $MenuItem6 = GUICtrlCreateMenuItem("Hinzufügen", $MenuItem5)
    $MenuItem4 = GUICtrlCreateMenu("&Laufende DBs")
    TraySetClick("9")
    $MenuItem10 = TrayCreateItem("Anzeigen")
    $MenuItem11 = TrayCreateItem("Verstecken")
    $MenuItem12 = TrayCreateItem("Beenden")
    GUISetState(@SW_SHOW)
    #EndRegion ### END Koda GUI section ###

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

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

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

    Case $Kunden
    EndSwitch
    WEnd

    [/autoit]

    Ich hoffe, mir kann geholfen werden^^

    Vielen Dank

    P.S.: Dies ist keine Nachricht nach dem Motto: gib mir! 8)

  • Ersteinmal: Herzlich willkommen im Forum ;)

    Für einen Anfänger ist das sicherlich ein sehr großes Projekt.
    Hast du denn schon Erfahrungen im Scripting Bereich?

    Deine GUI ist ja schonmal schön und gut.
    Wichtiger wäre aber:
    - Wo liegen deine Probleme?
    - Was verstehst du nicht?
    - Wie genau sollen die Dinge verarbeitet werden die du haben willst?

    Gruß
    Schnitzel

  • - Wo liegen deine Probleme?
    - Was verstehst du nicht?
    - Wie genau sollen die Dinge verarbeitet werden die du haben willst?

    Da ich das nur in meiner Arbeitsfreien Zeit oder wenn ich gerade nichts zu tun habe vorran treiben kann, ist mein erstes Problem die Zeit.
    Skripting ist kein Problem ich kann schon vieles in VBS lösen, villeicht könnte ich das ja einbinden.

    Zu meinen Problemen:
    - Kann ich mit AutoIt aus ini-Dateien lesen?
    - Kann ich Prozesse auf Servern abfragen, und kann ich das filtern?
    - Kann ich Befehle über Kommandozeile ausführen und zwar auf einem Remote System?
    - Sollte die vorherige Frage nicht funktionieren: Ist es möglich Dienste remote zu starten?
    - Funktionen, die ich aufrufe, lassen sich doch bestimmt auch generieren, oder?

    Was verstehe ich nicht:
    - Wie kann ich bei z.B. einer Auswahl sagen, dass erst alle Parameter ausgewählt werden müssen?
    - Wie kann ich das GUI mit funktionen belegen
    - kann ich VBS Code mit einbinden?

    Wie sollen die Dinge verarbeitet werden:
    - Also, ich hätte gerne eine DB oder ähnliches, xml-Datei genügt vielleicht, welche mir Anzeigt, wenn ich eine DB gestartet habe, auf welchem Server diese läuft und welche Version, dies soll in der Baumansicht dann angezeigt werden und ich möchte das ganze Programm halt einfach beleben^^

    Vielen Dank, und bei Fragen, denkt bitte dran, ich habe gestern zum ersten mal mit AutoIt versucht zu arbeiten ;) !

    Vielen Dank

  • Zu meinen Problemen:
    - Kann ich mit AutoIt aus ini-Dateien lesen?
    - Kann ich Prozesse auf Servern abfragen, und kann ich das filtern?
    - Kann ich Befehle über Kommandozeile ausführen und zwar auf einem Remote System?
    - Sollte die vorherige Frage nicht funktionieren: Ist es möglich Dienste remote zu starten?
    - Funktionen, die ich aufrufe, lassen sich doch bestimmt auch generieren, oder?

    Zu .ini Dateien: Mit den Befehlen IniDelete, IniRead, iniwrite,etc. kannst du eigentlich so ziemlich alles mit ini Dteien anstellen. Am Besten mal in der AutoIT Hilfe nachschlagen!

    Zu Befehlen über Kommandozeile: Uach das geht: Am Besten auch hier erstmal in der Hilfe nach den Befehlen Run bzw. RunWait geschaut!

    Bezgl. Remote-Abfragen von Diesnten usw. befinden sich mit Sicherheit noch einige Lücken in AutoIT, ich geh auch hier immer den Umweg über die Kommandozeile und bereite die Daten dann auf!

    Was meints du mit Funktionen und generieren? Da versteh ich dich nicht so ganz...

  • Remote wird nur funktionieren, wenn du auf dem Ziel-Rechner auch ein AutoIt Skript laufen lässt, und dieses dann mit deinem kommuniziert.
    (TCP ist die Lösung)