Visual Basic und AutoIT

  • Hallo an alle,

    ich habe da mal ein prinzipielle Frage die Beide Sprachen mit einschließt, ist es möglich per VB eine andere .exe ( in dem fall einen AutoitSript ) mit parametern zu starten, so das die Au3 beim start alles bekommt was ich in VB an daten habe.

    Hintergrund ist folgender, ich habe mir ein autoit Programm geschrieben welches mir einige Arbeit in WORD abnimmt, über einfache send befehle wird in word die Ersetzen Maske aufgerufen und bestimmte Platzhalter ersetzt. Das selbe Programm wollte ich nun (Da es mir von den Optischen GUI möglichkeiten weit besser gefällt) in VB nachbauern, nun stellt sich heraus das VB solch einfache Sachen wie winwaitActive oder winwaitclose nicht beherrscht weshalb ich die Funktion nun mit einem AU3 Script ausführen lassen möchte und nur alle anderen Funktionen in VB belassen möchte.

    Fällt dazu jemandem was ein ?

    MfG Eistee

  • Naja. Entweder zu speicherst alles in einer Datei zwischen, sodass du die Daten mit AutoIt aus der Datei ausließt, oder du kannst ein Server-Client erstellen, wodurch die Daten per TCP übertragen werden (Netzwerk, nur über deinen Rechner(localhost)).
    Direkt auf den Speicher deines VBA-Scripts zuzugreifen ist schwer...
    Ansonsten Eventuell per Commandline parameter, weiß aber nicht, ob der da große Datenmengen unterstützt...
    Normal sollte man sich auf eine Sprache festlegen. Wobei ich natürlich nicht weiß, warum du VBA nutzen willst.

    (Ich kenn VBA nicht, aber vielleicht kann man dort auch mit COM-Objekten arbeiten. Darauf basiert auch die Word-UDF von Water in Autoit. Das kann man dann eventuell darüber in VBA machen)

    Nur ein paar Stichworte zum Suchen für dich.
    MfG Kanashius

  • Nein es geht in diesem Fall nicht um VBA sondern VB.net, benutzen möchte ich es vor allem weil die GUI´s wesentlich besser zu designen sind(Andere schriftfarbe bei Checkboxen, png. bilder über Buttons usw.), im Vergleich zu VB.net Form Designer ist Koda mal das letzte ^^ aber ja meines wissens nach werden COM Objekte unterstützt, wie man das allerdings machen kann weiss ich leider auch nicht, aber ja dann werd ich es wohl irgendwie über eine Datei zwischen Speichern müssen
    Danke schon mal für deine Antwort =)

    Man kann z.B. dll´s einbinden, habe ich auch gemacht mit der AutoItX3.dll einige Autoit Befehle kann man damit sogar übernehemn, z.B. winwaitactive, die wichtigen sachen jedoch wie winwaitclose oder gar einfache Sleep Befehle jedoch nicht :P

  • Sleep() gibt es serwohl in VB.net. Klick mich

    WinWaitClose() ist im Prinzip nur 'ne Schleife die solange läuft bis entweder ein Timeout erreicht ist (wenn einer gegeben ist) oder eben das Fenster nicht mehr da ist.
    Sollte kein großes Problem sein, das nach zu programmieren.

  • Hallo EisTee

    Ich finde: Alles mit Thread.wait ist schrott.

    Du kannst einen neuen Prozess erstellen.
    Dem Prozess musst du Startinfos übergeben.
    Danach kannst du den Prozess starten und warte, bis er beendet ist.

    Sieht in C# etwas so aus.


    Code
    ProcessStartInfo pstart = new ProcessStartInfo();
    pstart.Arguments = "Parameter welche übergeben werden";
    //pstart.UseShellExecute = true;
    pstart.FileName = "Die exe, welche ausgeführt werden soll";
    pstart.WorkingDirectory = Application.StartupPath;
    pstart.WindowStyle = ProcessWindowStyle.Hidden;
    
    
    Process p = Process.Start(pstart);
    p.WaitForExit();

    Gruss Roger