Externe Anwendung schießen

  • Excel

Es gibt 11 Antworten in diesem Thema. Der letzte Beitrag () ist von Cutter2.

    Externe Anwendung schießen

    Hallo an alle!

    Ich habe eine externe Anwendung mit -- Shell "C:\BROKER\ALPARI\MT4_AUD-CAD\terminal.exe", 3-- gestartet. MIT EXCELL 2000

    Gibt es eine Möglichkeit, die Anwendung wieder per Button-Klick zu schließen?

    Wäre toll wenn jemand helfen könnte.

    Schonmal Danke im Voraus

    Gruss Cutter2
    Ungefähr so:

    Visual Basic-Quellcode

    1. Set WMIcimv2 = GetObject("winmgmts:{impersonationLevel=impersonate}!\\.\root\cimv2")
    2. Set ProcessList = WMIcimv2.ExecQuery ("select * from win32_process where name='terminal.exe'")
    3. For Each Process in ProcessList
    4. Process.Terminate
    5. Next
    Killt aber alle terminal.exe
    Falls da welche dabei sind, die du noch brauchst, musst du den Prozess genauer analysieren.
    --
    If Not Program.isWorking Then Code.Debug Else Code.DoNotTouch
    --
    Hallo!

    an StarGate01
    Die Anweisung hat leider nicht funktioniert. Im Gegenteil Exel wurde blockiert und es lief nichts mehr.
    Vielen Dank für Deine schnelle Antwort.

    an BiedermannS
    Ich weiß meine Excelversion ist sehr alt, aber das bin ich auch. Meine Frau liebt mich trotzdem. Ich weiß zwar nicht warum aber ich muß ja nicht alles wissen.
    Danke fur Deine Antwort.

    an petaod
    Volltreffer. Funzte auf Anhieb. Mein lieber Scholli, ich hab mir die Zeilen mal richtig angesehen das hätte ich alleine nie hinbekommen.
    Also vielen,vielen Dank für Deine schnelle Hilfe

    Gruss
    Cutter2
    Ich hätte da eine einfachere Methode (für dich als "Anwender"). Einen Wrapper für die Prozess-Klasse von .NET

    Bis das Ganze im SourceCode-Austausch erscheint, kann ich es dir per PN schicken. Danach erfolgen die Aufrufe wie folgt

    Spoiler anzeigen

    Visual Basic-Quellcode

    1. 'Nur zum Testen. Wartet eine gewisse Anzahl an Millisekunden, bevor das Programm fortfährt
    2. Public Declare Sub Sleep Lib "kernel32" (ByVal dwMilliseconds As Long)
    3. 'Hier der wichtige Code
    4. Sub test()
    5. 'Neuen Prozess erzeugen
    6. Dim p As New Process
    7. 'Angeben was geöffnet werden soll
    8. p.FileName = "cmd" '"C:\BROKER\ALPARI\MT4_AUD-CAD\terminal.exe"
    9. 'Prozess starten
    10. p.Start
    11. 'Hier wird ca. 8 Sekunden gewartet
    12. pSleep (8000)
    13. 'Prozess beenden
    14. p.Kill
    15. End Sub
    16. 'kleine Wrapper-Funktion, damit Excel beim warten nicht einfriert.
    17. Sub pSleep(ByVal milliseconds As Long)
    18. Dim i As Long
    19. For i = 0 To (milliseconds / 2) + 100
    20. Sleep (1)
    21. DoEvents
    22. Next
    23. End Sub


    Bei interesse sag Bescheid...

    Hier der Link vb-paradise.de/allgemeines/sou…-fuer-die-process-klasse/
    SWYgeW91IGNhbiByZWFkIHRoaXMsIHlvdSdyZSBhIGdlZWsgOkQ=

    Weil einfach, einfach zu einfach ist! :D

    Dieser Beitrag wurde bereits 1 mal editiert, zuletzt von „BiedermannS“ ()

    Kein Problem, ich hab nur trotzdem mal die Klasse vorbereitet (Ist auch schon im SourceCode-Austausch verfügbar), da man ja öfter was starten/beenden muss. Und die Klasse stellt in VBA einen Teil der .NET Funktionalität zur Verfügung und kann, falls mehr benötigt wird, leicht erweitert werden.

    Ausserdem sieht man schön, wie man .NET Klassen in VBA verwenden kann. Und ein klein wenig, wie man COM verwendet. :)

    P.S.: Ich bezweifle nicht dass das Script von petaod funktioniert, nur muss man auf das erst mal kommen. Darum habe ich die Klasse erstellt. :)
    SWYgeW91IGNhbiByZWFkIHRoaXMsIHlvdSdyZSBhIGdlZWsgOkQ=

    Weil einfach, einfach zu einfach ist! :D
    Hallo petaod !



    Bin wieder da.

    Ich habe das mit der bedingten Formatierung ausprobiert und es hat
    leider nicht geklappt. Ich vermute mal, dass Excel 2000 diese
    Möglichkeit noch nicht kennt. Ich habe das Problem nun anders gelöst und
    es funktioniert. Das Problem sollte damit vom Tisch sein.

    Vielen Dank für Deine Bemühungen.



    Noch mal zum Thema "externe Anwendung schließen".

    Da gab's ne Überraschung.

    Bei der externen Anwendung handelt es sich um den "MetaTrader4" (MT4)
    mit dessen Hilfe Wertpapiere online gehandelt werden können.

    Der Nachteil beim MT4 ist, dass er über kein Speicherbutton verfügt.

    Das heißt, wenn ich Schaltlinien setze muß ich anschließend den MT4 über
    das Kreuz rechts oben schließen und wieder öffnen. Nun sind die
    Linienpositionen gespeichert und werden übernommen.



    Mit deinem Programm wird die Anwendung genau wie du gesagt hast einfach
    nur gekillt so wie es ist. Schluß, aus und Ende. Doch was mir garnicht
    gleich aufgefallen war, mein Linienpositionen waren futsch.



    Gibt es eine Möglichkeit, die Anwendung so zu schließen, als wenn sie
    mit der Maus über das Kreuz rechts oben geschlossen worden wäre.

    Dann müßte ich schauen ob die Linienpositionen übernommen werden.

    Ich stelle das Thema noch einmal ins Forum. Wie es aussieht interessieren sich weitere Mitglieder für dieses Thema.



    Gruss Cutter2

    Cutter2 schrieb:

    Ich vermute mal, dass Excel 2000 diese
    Möglichkeit noch nicht kennt.
    Nur sehr rudimentär.
    Wer arbeitet heute noch mit Excel2000?


    Gibt es eine Möglichkeit, die Anwendung so zu schließen, als wenn sie mit der Maus über das Kreuz rechts oben geschlossen worden wäre.
    Erweitere den Wrapper von BiedermannS um CloseMainWindow.
    --
    If Not Program.isWorking Then Code.Debug Else Code.DoNotTouch
    --