netwerkprogramm öffnen

  • Hallo,
    ich möchte mir auf Arbeit die arbeit ein wenig vereinfachen.
    Um folgendes geht es.
    1.Es wird eine Netzwerkprogramm mit einer Konfigurationsdatei geöffnet.
    2.Es kommt eine Benutzeranfrage durch Windows.
    3.Dann fragt windows ob ich es wirklich ausführen will
    4.Es kommt eine Benutzeranfrage durch das Programm.

    Schritt 2 und 3 kommen nur 1x am tag.

    Ich bin noch ganz am anfang...

    [autoit]

    ; Zuda Vari
    $user = "user"
    $passwd = "passwd"

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

    Run('\\192.168.202.150\tect\programm.exe \\192.168.202.150\tect\config.cfg')
    ;WinWait("Windows-Sicherheit",[500])
    ;ControlSend("Windows-Sicherheit", "", "[CLASS:Edit; INSTANCE:1]", $user)
    ;ControlSend("Windows-Sicherheit", "", "[CLASS:Edit; INSTANCE:2]", $passwd)
    ;ControlClick("Windows-Sicherheit", "", "[CLASS:Button; TEXT:OK; INSTANCE:1]")

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

    WinWait("Login for 192.168.206.60")
    ControlSend("Login for 192.168.206.60", "", "[CLASS:Edit; INSTANCE:1]", $user)
    ControlSend("Login for 192.168.206.60", "", "[CLASS:Edit; INSTANCE:2]", $passwd)
    ControlClick("Login for 192.168.206.60", "", "[CLASS:Button; TEXT:Connect; INSTANCE:1]")

    [/autoit]

    Wie sage ich nun das er schritt 2 und 3 prüft. wenn es aber nach ne paar sec nicht kommt überspringt?
    mit einer if schleife?

    vielleicht habt ihr ja ein paar tipps für mich.

    würde mich freuen.

    danke & gruß
    vip

    4 Mal editiert, zuletzt von Viperdriver2000 (16. November 2010 um 16:23)

  • \programm.exe was macht das, was für eine Art Verbindung soll es werden?

    Vorab prüfen ob man das Programm erreicht, und falls ja bist Du schon mal im richtigen Netz ;)
    Dann mit
    While wend
    so lange versuchen bis es klappt?

    Achtung Anfänger! :whistling:

    Betrachten des Quellcodes auf eigene Gefahr, bei Übelkeit,Erbrechen,Kopfschmerzen übernehme ich keine Haftung. 8o

  • also so wie es es oben steht geht es schon mal....

    nur das problem mit der win abfrage 1 mal am tag habe ich noch.

    ich weiß nur nicht wie ich das mache das er das prüft und wenn es nicht kommt er es überspringt...

  • Hallo Viperdriver2000,

    für mich sieht es so aus als ob du damit die Sichertsvorkerungen deiner Firma umgehst und auch aufweichst.

    Bin der Meinung, dass soetwas nicht supported werden sollte.

    Das Skript macht zwar nichts anderes als was du machen würdest, stell dir aber vor durch irgendeinen Umstand (Mittagspause, dringende Besprechnung etc.) vergisst du vor dem Verlassen deines Arbeitsplatzes dich abzumelden. Danach kann jeder der an deinen Rechner kommt mit Hilfe dieses Skriptes an Daten kommen, die normalerweise für ihn gesperrt sind.
    Sollte der Admin/Chef dahinterkommen riskierst du deinen Arbeitsplatz, überleg dir also gut ob du das fertigstellen willst oder besser das Skript vernichtest.
    Falls du weitermachen willst wird dir die Hilfe zu WinWait schon den richtigen Tipp geben,

    mfg autoBert

  • autoBert
    Danke für deinen Hinweis, aber ich werde es weiter machen da ich es auch auf andere Dinge in meinem privaten Umfeld anwenden kann.

  • Also ich bin nun schon ein stück weiter.

    [autoit]

    ; Zuda Vari
    $user = "user"
    $passwd = "passwd"

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

    Run('\\192.168.202.150\tect\programm.exe \\192.168.202.150\tect\config.cfg')

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

    If WinExists("Windows-Sicherheit") Then
    ControlSend("Windows-Sicherheit", "", "[CLASS:Edit; INSTANCE:1]", $user)
    ControlSend("Windows-Sicherheit", "", "[CLASS:Edit; INSTANCE:2]", $passwd)
    ControlClick("Windows-Sicherheit", "", "[CLASS:Button; TEXT:OK; INSTANCE:1]")
    EndIf
    Sleep(500)
    If WinExists("Datei öffnen - Sicherheitswarnung") Then
    ControlClick("Windows-Sicherheit", "", "[CLASS:Button; TEXT:A&usführen; INSTANCE:1]")
    EndIf
    Sleep(500)
    WinWait("Login for 192.168.206.60")
    ControlSend("Login for 192.168.206.60", "", "[CLASS:Edit; INSTANCE:1]", $user)
    ControlSend("Login for 192.168.206.60", "", "[CLASS:Edit; INSTANCE:2]", $passwd)
    ControlClick("Login for 192.168.206.60", "", "[CLASS:Button; TEXT:Connect; INSTANCE:1]")

    [/autoit]

    Auf meinem Rechner geht es. Auf einem anderen Testrechner nicht.
    Da wird dann schon das:

    [autoit]

    Run('\\192.168.202.150\tect\programm.exe \\192.168.202.150\tect\config.cfg')

    [/autoit]


    nicht ausgeführt.
    Execute brachte auch keine Veränderung.

    jemand ne idee?

    Danke & Gruß
    Vip

  • Auch bedacht, dass sich die IP Konfiguration unterscheiden könnte und damit auch andere IP's in den Fenstertiteln stehen könnten?
    Wenn der run Befehl schon nicht klappt teste erstmal ob du auf dem Problem Rechner per Hand übe die Eingabeaufforderung mit diesem Befehl erfolg hast.

  • Die Ziel IP ist immer die selbe.
    Da es sich alles in einem Netzwerk befindet kann ich das eigentlich ausschließen.

    Wenn ich den befehl über "Start > Ausführen" ausführe klappt er auch!

  • \\192.168.202.150\tect\programm.exe \\192.168.202.150\tect\config.cfg
    Über Start Ausführen, .... so aber nicht, oder

    Programm.exe ist doch von Dir oder?
    Kannst Du ihm nicht sagen das cfg im ScriptDir liegt (prüfen ob der Pfad auf \ endet ;))
    Warum startest es denn remote und nicht lokal, irgendwie sieht der Aufruf seltsam aus ;(

    Achtung Anfänger! :whistling:

    Betrachten des Quellcodes auf eigene Gefahr, bei Übelkeit,Erbrechen,Kopfschmerzen übernehme ich keine Haftung. 8o

    Einmal editiert, zuletzt von Dietmar (16. November 2010 um 22:15)

  • Je nach Größe frage ich mich trotzdem warum er die beiden Dateien nicht mit Fileinstall mit einbaut und dann brauch er es nicht mit diesem
    irgendwie seltsam ausehenden Aufruf starten auch wenn es so iregndwie "manchmal" geht.
    Das Programm läuft ja trotzdem auf seinem PC und nicht remote, es liegt ja nur remote.

    Achtung Anfänger! :whistling:

    Betrachten des Quellcodes auf eigene Gefahr, bei Übelkeit,Erbrechen,Kopfschmerzen übernehme ich keine Haftung. 8o

  • Er redet von der Arbeit und nicht von seinem kleinen privaten Spielerechner-Netzwerk bei sich zuhause. ;)

    Es wird sich also um ein zentrales Programm seines Arbeitgebers handeln dass er da startet. Ich geh auch mal davon aus, dass er garnicht die notwendige Berechtigung hat um das besagte Programm inklusive aller abhängigen Daten auf seiner Workstation zu "installieren" bzw. in sein script zu integrieren. Höchstwahrscheinlich hat sich der Arbeitgeber schon was dabei gedacht als er entschieden hat das Programm auf einem zentralen Server zu hinterlegen. Dazu zählt z.B. die Möglichkeit jederzeit ohne großen Aufwand eine aktuelle Version des Programms zur Verfügung zu stellen. Warum hunderte Rechner updaten wenn es auch reicht eine einzige zentrale Datei zu aktualisieren?

    Aber wie auch schon von autobert angesprochen wird der Arbeitgeber vermutlich auch nicht sehr erfreut über automatische Anmeldescripte sein.

  • Zitat

    Höchstwahrscheinlich hat sich der Arbeitgeber schon was dabei gedacht als er entschieden hat das Programm auf einem zentralen Server zu hinterlegen. Dazu zählt z.B. die Möglichkeit jederzeit ohne großen Aufwand eine aktuelle Version des Programms zur Verfügung zu stellen. Warum hunderte Rechner updaten wenn es auch reicht eine einzige zentrale Datei zu aktualisieren?


    Mir ist der Sinn und Zweck von Terminalservern / Citrix etc durchaus bewusst, aber davon stand hier nix,
    nur das er irgend eine Exe auf einem Netzlaufwerk starten will, das kann von calc.exe bis irgendeine Branchesoftware alles sein.
    Dachte eher an irgendwas Seltsames was der Arbeitgeber evtl. gar nicht installiert hätte, haben will.
    Aber im Prinzip hast Du recht, es reicht vermutlich wenn einer seinen Kopf dafür riskiert. :thumbup:

    Achtung Anfänger! :whistling:

    Betrachten des Quellcodes auf eigene Gefahr, bei Übelkeit,Erbrechen,Kopfschmerzen übernehme ich keine Haftung. 8o

  • Ich finde es nett von euch das Ihr euch Gedanken um meine berufliche zufunkt macht. Aber bitte lasst das meine sorge sein (ist nicht böse gemeint).

    Also wie misterspeed schon vermutet hat ist es einfach eine Anwendung die im LAN liegt damit sie nicht überall installiert sein muss.

    Ich habe noch ein wenig rumgespielt. Scheitere aber noch an ein paar schritten.

    [autoit]

    ; Zuda Vari
    $user = "user"
    $passwd = "pw"
    $baan = "\\192.168.202.150\tect\programm.exe \\192.168.202.150\tect\config.cfg "

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

    Send("#r")
    WinWaitActive("Ausführen")
    ControlSend("Ausführen", "", "[CLASS:Edit; INSTANCE:1]", $baan)
    Send("{Enter}")
    Sleep(1000)
    If WinExists("Windows-Sicherheit") Then
    ControlSend("Windows-Sicherheit", "", "[CLASS:Edit; INSTANCE:1]", $user)
    ControlSend("Windows-Sicherheit", "", "[CLASS:Edit; INSTANCE:2]", $passwd)
    ControlClick("Windows-Sicherheit", "", "[CLASS:Button; TEXT:OK; INSTANCE:1]")
    EndIf
    If WinExists("Datei öffnen - Sicherheitswarnung") Then
    ControlClick("Windows-Sicherheit", "", "[CLASS:Button; TEXT:Ausführen; INSTANCE:1]")
    EndIf
    WinWait("Login for 192.168.206.60")
    ControlSend("Login for 192.168.206.60", "", "[CLASS:Edit; INSTANCE:1]", $user)
    ControlSend("Login for 192.168.206.60", "", "[CLASS:Edit; INSTANCE:2]", $passwd)
    ControlClick("Login for 192.168.206.60", "", "[CLASS:Button; TEXT:Connect; INSTANCE:1]")

    [/autoit]


    Irgendwie klappt das nicht:

    [autoit]

    ControlSend("Windows-Sicherheit", "", "[CLASS:Edit; INSTANCE:1]", $user)
    ControlSend("Windows-Sicherheit", "", "[CLASS:Edit; INSTANCE:2]", $passwd)

    [/autoit]


    Ich bin der meinung das er dann von der einen Zeile die andere anklicken müsste.
    Macht er aber nicht.
    Verstehe ich das nur falsch?

    Danke & Gruß
    Vip