Laufwerksbuchstaben finden und an shellexecute übergeben

  • hallo,

    habe ein kleines probleme. Habe mir ein Script gemacht, welches Programme installiert und nach neustart
    wie hier ( [ offen ] Neustart mit auto it Wichtige frage! ) nur auf über 30 erweitert.
    soweit so gut ....

    Folgendes Problem jetzt, wenn Neustart kommt hat mein LW plötzlich einen anderen LW-Buchstaben ... also erst O:\ nach dem Neustart dann P:\.

    Spoiler anzeigen
    [autoit]


    Func _install1() ; Installation Ashampoo Registry Cleaner

    ShellExecute("O:\8GB Stick\AAAAA\Programme\Ashampoo\Ashampoo Registry Cleaner\ashampoo_registry_cleaner_1.00_9031.exe")

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

    WinWaitActive("Setup-Sprache auswählen","Sprache")
    if not WinActive("Setup-Sprache auswählen","Sprache") then WinActivate("Setup-Sprache auswählen","Sprache")
    WinWaitActive("Setup-Sprache auswählen","Sprache")
    ControlClick("Setup-Sprache auswählen","Sprache","TNewButton1")

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

    WinWaitActive("Setup - Ashampoo Registry Cleaner","Willkommen zum Ashampoo Registry ")
    ControlClick("Setup - Ashampoo Registry Cleaner","Willkommen zum Ashampoo Registry ","TNewButton1")

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

    WinWaitActive("Setup - Ashampoo Registry Cleaner","Lizenzvereinbarungen")
    ControlClick("Setup - Ashampoo Registry Cleaner","Lizenzvereinbarungen","TNewRadioButton1")
    Sleep(2000)
    ControlClick("Setup - Ashampoo Registry Cleaner","Lizenzvereinbarungen","TNewButton2")

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

    WinWaitActive("Setup - Ashampoo Registry Cleaner",""); "TRadioButton3
    ControlClick("Setup - Ashampoo Registry Cleaner","", "TRadioButton3")

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

    Sleep(1500)

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

    ControlClick("Setup - Ashampoo Registry Cleaner", "Installation für alle Benutze", "TCheckBox2")
    Sleep(500)
    ControlClick("Setup - Ashampoo Registry Cleaner", "Installation für alle Benutze", "TCheckBox1")
    Sleep(500)
    ControlClick("Setup - Ashampoo Registry Cleaner", "Installation für alle Benutze", "TNewButton2")
    Sleep(500)
    WinWaitActive("Setup - Ashampoo Registry Cleaner","Fertigstellen")
    ControlClick("Setup - Ashampoo Registry Cleaner","Fertigstellen","TNewButton2")

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

    ;WinWaitActive("Windows Internet Explorer 8 einrichten","")
    ;WinKill("Windows Internet Explorer 8 einrichten","")
    WinWaitActive("Die Webseite kann nicht angezeigt werden. - Windows Internet Explorer","")
    winkill("Die Webseite kann nicht angezeigt werden. - Windows Internet Explorer","")
    WinWaitActive("Internet Explorer","Möchten Sie alle")
    ControlClick("Internet Explorer","Möchten Sie alle","Button1")

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

    ;ARCLA4-77CF1C-917604
    run("C:\Program Files (x86)\Ashampoo\Ashampoo Registry Cleaner\RegistryCleaner.exe")

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

    WinWaitActive("Ashampoo Registry Cleaner Trial Information","")
    ControlClick("Ashampoo Registry Cleaner Trial Information","","Edit1")

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

    Sleep(2000)

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

    send("ARCLA4-77CF1C-917604")

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

    Sleep(1500) ;
    MouseMove(533,254)
    MouseClick("left")

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

    Sleep(2000)

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

    MouseMove(519,270)
    MouseClick("left")
    Sleep(2000)

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

    if not WinActive("Ashampoo Registry Cleaner (Version 1.00)","") then
    WinActivate("Ashampoo Registry Cleaner (Version 1.00)","")
    EndIf
    WinActive("Ashampoo Registry Cleaner (Version 1.00)","")
    send("!{F4}")
    ;#ce
    Sleep(1000)

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

    EndFunc

    [/autoit]

    Es ist alles bekannt wie die Ordner heißen und wo sie sind ... halt ändert sich jetzt der Buchstabe.
    Dann kommt noch dazu, wenn ich das Script als Exe. direkt über den Autostart laufen lasse, bleibt es direkt beim ersten Fenster hängen.

    Kann mir jemand helfen wie ich das gelöst bekomme....

    Danke im vorraus

  • Also, das mit den Laufwerksbuchstaben:

    Schau dir mal die Hilfe zu

    [autoit]

    FileExists

    [/autoit]

    an - damit könntest du prüfen ob O: oder P: aktuell ist.

    [autoit]

    If FileExists("O:\8GB Stick\AAAAA\Programme\Ashampoo\Ashampoo Registry Cleaner\ashampoo_registry_cleaner_1.00_9031.exe") Then
    ShellExecute("O:\8GB Stick\AAAAA\Programme\Ashampoo\Ashampoo Registry Cleaner\ashampoo_registry_cleaner_1.00_9031.exe")
    Else
    ShellExecute("P:\8GB Stick\AAAAA\Programme\Ashampoo\Ashampoo Registry Cleaner\ashampoo_registry_cleaner_1.00_9031.exe")
    EndIf

    [/autoit]
  • Zum 2. Problem:

    WinWaitActive("Setup-Sprache auswählen","Sprache")
    if not WinActive("Setup-Sprache auswählen","Sprache") then WinActivate("Setup-Sprache auswählen","Sprache")

    mach mal daraus:

    [autoit]

    WinWait("Setup-Sprache auswählen","Sprache")
    if not WinActive("Setup-Sprache auswählen","Sprache") then WinActivate("Setup-Sprache auswählen","Sprache")

    [/autoit]

    Es ist Blödsinn auf ein "aktives" Fenster zu warten und es anschließend zu aktivieren wenn es "nicht" aktiv ist ?!?!

    Zur Nutzung dieses Forum's, ist ein Übersetzer für folgende Begriffe unerlässlich:

    "On-Bort, weier, verscheiden, schädliges, Butten steyling, näckstet, Parr, Porblem, scripe, Kompletenz, harken, manuel zu extramieren, geckukt, würglich, excell, acces oder Compilevorgeng"

  • Hi,

    danke für die antworten erstmals, nur gehts nicht. Weil ich ja nicht weiß welcher Buchstabe es ist nach einem Neustart.
    Kann ja sein, warum auch immer beim nächsten start T:\ oder xy ist.

    @Micha he
    Und zum Fenster... das hab ich auch schon probiert.. geht aber komischer weise auch nicht ...

    • Offizieller Beitrag

    Heyho,

    Probiers doch so :) Überprüft einfach alle angeschlossenen Geräte

    Spoiler anzeigen
    [autoit]

    $aListDrives = DriveGetDrive("ALL")
    If @error Then Exit
    Local $sLW = False
    For $i = 1 To $aListDrives[0]
    If FileExists($aListDrives[$i]&"\8GB Stick\AAAAA\Programme\Ashampoo\Ashampoo Registry Cleaner\ashampoo_registry_cleaner_1.00_9031.exe") Then $sLW = $aListDrives[$i]
    Next
    If Not $sLW Then Exit MsgBox(16,"","LW nicht gefunden :-(")

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

    MsgBox(0,"","Das LW ist "&$sLW)

    [/autoit]

    Gruß
    Spider

  • Wieso macht ihr euch es so umständlich? einfach beim Start des Scriptes mit 'netuse' dir das ganze als Laufwerkmappen mit dem Paramter -p NO also nicht beständig (nach einem neustart wieder gelöscht) und fertig ist die Sache

    Gruß Marvin

  • Wieso macht ihr euch es so umständlich? einfach beim Start des Scriptes mit 'netuse' dir das ganze als Laufwerkmappen mit dem Paramter -p NO also nicht beständig (nach einem neustart wieder gelöscht) und fertig ist die Sache


    Genau so eine Antwort hatte ich als alter Netzwerker auch schon geschrieben .. und dann wieder gelöscht und neu Formuliert.

    Die Antwort ist: Weil er einen USB-Stick und kein Netzlaufwerk benutzt!

  • okay schoen und gut wenn man einem USB aber einen Buchstaben zuweist über die Device Control behält er diesen auch bei im Normalfall.. sollte der Buchstabe natürlich nicht anderweitig belegt sein beim einstecken des Sticks.. einfachen einen Buchstaben nehmen der fast immer frei ist 'O:' oder sonst was und wenn der Gerätetreiber nicht entfernt wird sollte er beim erneuten verbinden auch den selben Buchstaben haben :/ ist mir zumindest noch nicht untergekommen dass ein HotPlug Dev.. sich einfach selber die Zuordnung ändert..


    // Sollte es keine andere Möglichkeit geben würde auch gehen >GetAllDrives > dann Namen der Drives auslesen und vergleichen somit ermittelst du den Aktuellen Zugeordneten Buchstaben und kannst damit arbeiten..

    Gruß

  • okay schoen und gut wenn man einem USB aber einen Buchstaben zuweist über die Device Control behält er diesen auch bei im Normalfall.. sollte der Buchstabe natürlich nicht anderweitig belegt sein beim einstecken des Sticks.. einfachen einen Buchstaben nehmen der fast immer frei ist 'O:' oder sonst was und wenn der Gerätetreiber nicht entfernt wird sollte er beim erneuten verbinden auch den selben Buchstaben haben :/ ist mir zumindest noch nicht untergekommen dass ein HotPlug Dev.. sich einfach selber die Zuordnung ändert..


    Du hast ja recht - aber so hatten wir ein schönes AutoIt Problem ^^
    Zudem - er installiert einen RegCleaner ... da kann alles passieren (ich würde keinen Benutzen)

  • Hallo zusammen,

    so, hab mich mal mit GTASpider weiter kurz geschlossen und folgendes ist rausgekommen.
    Und was soll ich sagen ... perfekt ... geht einfach super.... und das will ich auch keinem vorendhalten...
    drum geht mein Dank an GTA... :rock::thumbup:

    so hier das Ergebnis...

    Spoiler anzeigen
    [autoit][/autoit] [autoit][/autoit] [autoit][/autoit] [autoit]

    Global $LAUFWERK = _FindDevice("\8GB Stick\AAAAA\Programme\") ; an den Anfang vom Script Ordner war ja bekannt

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

    Func _Installation()
    ShellExecute($LAUFWERK&"\8GB Stick\AAAAA\Programme\Ashampoo\Ashampoo Registry Cleaner\ashampoo_registry_cleaner_1.00_9031.exe")
    EndFunc

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

    Func _Installation2()
    ShellExecute($LAUFWERK&"\8GB Stick\AAAAA\Programme\ProgrammXYZ\Setup.exe")
    EndFunc

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

    Func _FindDevice($sPath) ; da ja Funktion egal wo im Script ... bei mir am Ende
    Local $aListDrives = DriveGetDrive("ALL")
    If @error Then Return False
    Local $sLW = False
    For $i = 1 To $aListDrives[0]
    If FileExists($aListDrives[$i]&$sPath) Then $sLW = $aListDrives[$i]
    Next
    Return $sLW
    EndFunc

    [/autoit]

    Also auf gelöst gestellt ... Ach ja ... das mit dem Fenster ansprechen war die Sicherheitseinstellung ( W7 ) die ich runtergesetzt habe ...
    aber noch nicht den Neustart gemacht habe der nötig war um die änderung zu speichern...