none
Programme zeitgesteuert beenden RRS feed

  • Frage

  • Hallo Leute,
    ich bin neu hier und bräuchte mal Hilfe.

    Ich benutzte denn Wallpaper Engine, doch benötige ich ihn nur beim Windows Start und möchte mittel Autostart ein Script oder so was starten was nach ablauf von einer Minute denn Wallpaper Engine beendet.

    Ich habe es per Batch versucht, doch leider haut das nicht richtig hin.

    Ja mir ist klar das Windows keine bat im Autostart ausführt daher habe ich sie in eine EXE konvertiert. Dies macht aber nur was sie soll wenn ich sie Manuell starte.

    Da ich den Script verborgen ausführen will, hatte ich erst versucht mittels Verknüpfung es minimiert zu starten. Was Windows auch macht aber der Prozess wird nicht beendet.

    Dan habe ich einfach das Layout auf 1x1 px gestellt und die Position auf meinen linken Monitor gestellt. Aber genau das gleiche der Autostart führt die EXE aus aber ohne Wirkung.

    nun meine frage
    kann mir einer helfen das ich es so hinbekomme wie ich es gerne hätte?

    Das sind die beiden Batch die ich starten lasse.

    @ECHO OFF
    :CheckProzess
    SET MyProcess=wallpaper32.exe
    ECHO "%MyProcess%" ist aktuell nicht gestartet
    TASKLIST | FINDSTR /I "%MyProcess%"
    IF ERRORLEVEL 1 (GOTO :CheckProzess) ELSE (GOTO :KillTask1min)
    
    
    :KillTask1min
    ECHO Task "%MyProcess%" wird in 1 Minuten beendet
    @ping -n 120 localhost> nul
    taskkill /IM "%MyProcess%"

    und das gleich noch mal

    @ECHO OFF
    :CheckProzess
    SET MyProcess=wallpaperservice32_c.exe
    ECHO "%MyProcess%" ist aktuell nicht gestartet
    TASKLIST | FINDSTR /I "%MyProcess%"
    IF ERRORLEVEL 1 (GOTO :CheckProzess) ELSE (GOTO :KillTask1min)
    
    
    :KillTask1min
    @ping -n 120 localhost> nul
    taskkill /IM "%MyProcess%"


    • Bearbeitet SeevanXD Sonntag, 31. Januar 2021 21:54 Korrektur
    • Verschoben Stefan Falz Montag, 1. Februar 2021 19:15 Keine Frage für das MSDN Forum, bzw. keine passende Rubrik gefunden
    • Verschoben Stefan Falz Dienstag, 2. Februar 2021 14:13 Doch keine themenfremde Frage
    Sonntag, 31. Januar 2021 21:51

Antworten

  • Hi,

    vorab: Wir sind hier im Forum normalerweise beim Du und ich weiche in der Regel auch nur sehr selten davon ab. Wenn es also für dich Ok bist, bleiben wir dann auch beim Du.

    Dann: Weitere Fragen bitte in neuen Threads stellen. Das erhöht die Übersichtlichkeit im Forum.

    ---

    Es ist mir zwar unverständlich, warum dein Programm zwei taskkill Aufrufe braucht aber ich kenne die Anwendung ja auch nicht. Evtl. ist die etwas zickig :)

    Um eine Anwendung fernzusteuern gibt es viele Möglichkeiten. Um dir konkret weiterhelfen zu können, müsste man wissen, um was genau es geht, wie genau Du das machen willst, welchen Kenntnisstand Du in der Programmierung allgemein und in (Skript)Sprachen im Einzelnen hast.

    Die einfachste Möglichkeit, bestimmte Tastendrücke an eine Anwendung zu schicken, ist wohl SendKeys. Das gibt es für verschiedene Technologien.

    SendKeys (VBA)

    SendKeys (.NET)

    SendKeys (VBScript)

    Ein recht altes aber sehr verständliches Beispiel findest Du bspw. hier:

      Steuern von Drittprogrammen mit Hilfe der SendKeys-Methode


    Gruß, Stefan
    Microsoft MVP - Visual Developer ASP/ASP.NET (2001-2018)
    https://www.asp-solutions.de/ - IT Beratung, Softwareentwicklung, Remotesupport


    Dienstag, 2. Februar 2021 15:19
  • Hi,

    ich verstehe nicht so wirklich, was Du da überhaupt fabrizierst.

    Basis war doch: Du willst einen laufenden Prozess beenden. Wozu brauchst Du da ein Tool "Bat to Exe"? Das geht doch auch so über die Batch Datei selbst.

    Ich habe das jetzt auf allen mir bekannten Arten mit einer CMD Datei probiert, es lief problemlos manuell, über die Aufgabenplanung und den Autostart.

    Inhalt der CMD:

    taskkill /IM notepad.exe

    Da Du ja, wenn ich das richtig verstanden habe, nicht programmieren kannst (was nicht schlimm ist) bringt es ja auch nicht wirklich was, wenn ich dir sage, dass man einen Prozess in .NET (VB oder auch C#) über Process.Kill beenden kann.

    ---

    So oder so: Ich würde vermuten, dass der Prozess, der von deiner Batch Datei beendet werden soll, zum Zeitpunkt der Ausführung der Kommandos noch nicht existiert. Lass dir die Rückgabe der Kommandos mal in eine Datei ausgeben.

    taskkill /IM wallpaperservice32_c.exe 1>> killprocess.log 2>>&1

    Von den anderen Kommandos ggfs. auch noch.


    Gruß, Stefan
    Microsoft MVP - Visual Developer ASP/ASP.NET (2001-2018)
    https://www.asp-solutions.de/ - IT Beratung, Softwareentwicklung, Remotesupport


    Montag, 1. Februar 2021 20:36
  • So erst mal danke für ihre Hilfe, ich habe es jetzt hinbekommen.

    Ich habe es mit log getestet und das Signal geht raus aber das Programm bleibt an, dann dachte ich vielleicht würde es gehen wenn ich ein längeren timeout benutze aber auch ohne Erfolg. Da es aber beendet wird wenn ich es danach noch mal Manuel mit cmd ausführe, ist mir die Idee gekommen einfach nach dem ersten taskkill 1 Sekunde später noch einen raus zu schicken und Bingo es klappt.

    Nun kann ich weiter machen doch der nässte schritt wird wohl ohne ein VBS nicht möglich sein, können sie mir vielleicht eine Seite empfehlen wo ich mich einlesen kann um mein Projekt der automatischen Steuerung  abschließen kann?

    Ich muss es irgend wie hinbekommen das Automatisch nach starten eines Programm die Licence bestätigt wird also sprich auf "i agree" klickt oder eine Enter in dem geöffneten Fenster drückt.

    Dienstag, 2. Februar 2021 15:02

Alle Antworten

  • Hi,

    es gibt die Aufgabenplanung in Windows. Dort kann man bspw. einen Task planen, der nach Anmeldung eines Benutzers bzw. nach einem Systemstart läuft und mit einer Verzögerung von x Minuten einmalig ausgeführt wird.

    Wenn deine Anwendung zwar ausgeführt wird aber diese nicht das macht, was sie soll, liegt das in aller Regel nicht am Autostart. Daher solltest Du die Anwendung mal debuggen und prüfen, ob da evtl. ein Fehler auftritt.


    Gruß, Stefan
    Microsoft MVP - Visual Developer ASP/ASP.NET (2001-2018)
    https://www.asp-solutions.de/ - IT Beratung, Softwareentwicklung, Remotesupport

    Montag, 1. Februar 2021 08:15
  • Ich brauch da nichts debuggen, wenn es doch geht wenn ich die Anwendung oder die bat selberstarte.

    Ich habe auch schon versucht mit Aufgabenplanung die bat starten zulassen, sie startet auch aber die Anwendung die beendend werden soll bleibt an.

    Also wird es Automatisch gestartet keine Funktion, wird Manuel gestartet kein Problem.

    Montag, 1. Februar 2021 15:11
  • Hi,

    nuja, man sollte sich die Frage stellen, warum deine Anwendung in dem Fall nicht das macht, was sie soll. Und das adäquate Mittel, um das herauszufinden ist, die Anwendung zu debuggen.

    Wenn Du das für unnötig hältst, ok. Aber viele andere Wege wird es nicht geben.

    Du kannst natürlich noch ausführlich nach jeder relevanten Codezeile protokollieren, was genau in welcher Variable steht. Debugging fände ich da aber einfacher.

    Was ich mir vorstellen könnte, wären fehlende Rechte (Und Nein, das hat nichts damit zu tun, dass dein User Admin ist, dennoch benötigt man ggfs. über den Anwendungsstart explizit nochmal Admin Berechtigungen). Über Visual Studio startest Du die Anwendung ggfs. explizit als Administrator. Über die Aufgabenplanung oder den Autostart ggfs. nicht. In dem Fall hat der ausführende Account ggfs. keine Berechtigung, andere Prozesse zu beenden. Aber dazu sollte sich dann eigentlich etwas im Windows Ereignisprotokoll finden lassen.


    Gruß, Stefan
    Microsoft MVP - Visual Developer ASP/ASP.NET (2001-2018)
    https://www.asp-solutions.de/ - IT Beratung, Softwareentwicklung, Remotesupport

    Montag, 1. Februar 2021 15:18
  • Ich kann nicht debuggen, da ich weder plan von VB habe und die bat mit einem Tool konvertiert habe.

    Das Tool ist "Bat To Exe Converter" und hat erst ein mal eine separate bat erstellt und wie es ausschaut da mit die exe erstellt.

    Diese bat schaut so aus

    ::[Bat To Exe Converter]
    ::
    ::YAwzoRdxOk+EWAnk
    ::fBw5plQjdG8=
    ::YAwzuBVtJxjWCl3EqQJgSA==
    ::ZR4luwNxJguZRRnk
    ::Yhs/ulQjdF+5
    ::cxAkpRVqdFKZSDk=
    ::cBs/ulQjdF+5
    ::ZR41oxFsdFKZSDk=
    ::eBoioBt6dFKZSDk=
    ::cRo6pxp7LAbNWATEpCI=
    ::egkzugNsPRvcWATEpCI=
    ::dAsiuh18IRvcCxnZtBJQ
    ::cRYluBh/LU+EWAnk
    ::YxY4rhs+aU+JeA==
    ::cxY6rQJ7JhzQF1fEqQJQ
    ::ZQ05rAF9IBncCkqN+0xwdVs0
    ::ZQ05rAF9IAHYFVzEqQJQ
    ::eg0/rx1wNQPfEVWB+kM9LVsJDGQ=
    ::fBEirQZwNQPfEVWB+kM9LVsJDGQ=
    ::cRolqwZ3JBvQF1fEqQJQ
    ::dhA7uBVwLU+EWDk=
    ::YQ03rBFzNR3SWATElA==
    ::dhAmsQZ3MwfNWATElA==
    ::ZQ0/vhVqMQ3MEVWAtB9wSA==
    ::Zg8zqx1/OA3MEVWAtB9wSA==
    ::dhA7pRFwIByZRRnk
    ::Zh4grVQjdCmDJHOF5lQ5OydDTQiOLGqqA6dcuqb+9+/n
    ::YB416Ek+ZG8=
    ::
    ::
    ::978f952a14a936cc963da21a135fa983
    @ECHO OFF
    :CheckProzess
    SET MyProcess=wallpaperservice32_c.exe
    ECHO "%MyProcess%" ist aktuell nicht gestartet
    TASKLIST | FINDSTR /I "%MyProcess%"
    IF ERRORLEVEL 1 (GOTO :CheckProzess) ELSE (GOTO :KillTask2min)
    
    
    :KillTask2min
    ECHO Task "%MyProcess%" wird in 2 Minuten beendet
    @ping -n 140 localhost> nul
    taskkill /IM "%MyProcess%"

    Ich würde es ja gerne mit VB machen aber wie gesagt da von habe ich kein Plan und ich kann auch nichts finde was mir weiterhelfen könnte.
    • Bearbeitet SeevanXD Montag, 1. Februar 2021 18:58
    Montag, 1. Februar 2021 18:55
  • Hi,

    damit wird sich hier niemans auskennen. Wie man aus einer BAT eine Exe erstellen will, erschließt sich mir auch nicht wirklich.

    Daher wäre es wohl ratsam, wenn Du dich an den Hersteller des Tools wendest, der kann dir sicher sagen, was da schief läuft.


    Gruß, Stefan
    Microsoft MVP - Visual Developer ASP/ASP.NET (2001-2018)
    https://www.asp-solutions.de/ - IT Beratung, Softwareentwicklung, Remotesupport


    Montag, 1. Februar 2021 18:58
  • Es geht doch nicht nur um die Bat als Anwendung, es geht doch darum das Windows die Batch einfach ignoriert.

    Die Batch arbeitet tadellos, so lange ich sie selber ausführe, doch egal auf welcher weise ich sie Automatisch Starte wird die Batch zwar gestartet aber sie beendet nicht die 2 Prozesse. Da bei macht es auch keinen unterschied ob wie mit vollen Administrator-Rechten oder als Standard gestartet wird. Dies muss also doch irgend einen Konflikt mit den Windows Start Protokollen haben oder irgend was in der art.

    Deswegen würde ich gerne mit VB mal testen, doch wie gesagt ich kann da zu nicht finden.



    • Bearbeitet SeevanXD Montag, 1. Februar 2021 20:02
    Montag, 1. Februar 2021 20:01
  • Hi,

    ich verstehe nicht so wirklich, was Du da überhaupt fabrizierst.

    Basis war doch: Du willst einen laufenden Prozess beenden. Wozu brauchst Du da ein Tool "Bat to Exe"? Das geht doch auch so über die Batch Datei selbst.

    Ich habe das jetzt auf allen mir bekannten Arten mit einer CMD Datei probiert, es lief problemlos manuell, über die Aufgabenplanung und den Autostart.

    Inhalt der CMD:

    taskkill /IM notepad.exe

    Da Du ja, wenn ich das richtig verstanden habe, nicht programmieren kannst (was nicht schlimm ist) bringt es ja auch nicht wirklich was, wenn ich dir sage, dass man einen Prozess in .NET (VB oder auch C#) über Process.Kill beenden kann.

    ---

    So oder so: Ich würde vermuten, dass der Prozess, der von deiner Batch Datei beendet werden soll, zum Zeitpunkt der Ausführung der Kommandos noch nicht existiert. Lass dir die Rückgabe der Kommandos mal in eine Datei ausgeben.

    taskkill /IM wallpaperservice32_c.exe 1>> killprocess.log 2>>&1

    Von den anderen Kommandos ggfs. auch noch.


    Gruß, Stefan
    Microsoft MVP - Visual Developer ASP/ASP.NET (2001-2018)
    https://www.asp-solutions.de/ - IT Beratung, Softwareentwicklung, Remotesupport


    Montag, 1. Februar 2021 20:36
  • So erst mal danke für ihre Hilfe, ich habe es jetzt hinbekommen.

    Ich habe es mit log getestet und das Signal geht raus aber das Programm bleibt an, dann dachte ich vielleicht würde es gehen wenn ich ein längeren timeout benutze aber auch ohne Erfolg. Da es aber beendet wird wenn ich es danach noch mal Manuel mit cmd ausführe, ist mir die Idee gekommen einfach nach dem ersten taskkill 1 Sekunde später noch einen raus zu schicken und Bingo es klappt.

    Nun kann ich weiter machen doch der nässte schritt wird wohl ohne ein VBS nicht möglich sein, können sie mir vielleicht eine Seite empfehlen wo ich mich einlesen kann um mein Projekt der automatischen Steuerung  abschließen kann?

    Ich muss es irgend wie hinbekommen das Automatisch nach starten eines Programm die Licence bestätigt wird also sprich auf "i agree" klickt oder eine Enter in dem geöffneten Fenster drückt.

    Dienstag, 2. Februar 2021 15:02
  • Hi,

    vorab: Wir sind hier im Forum normalerweise beim Du und ich weiche in der Regel auch nur sehr selten davon ab. Wenn es also für dich Ok bist, bleiben wir dann auch beim Du.

    Dann: Weitere Fragen bitte in neuen Threads stellen. Das erhöht die Übersichtlichkeit im Forum.

    ---

    Es ist mir zwar unverständlich, warum dein Programm zwei taskkill Aufrufe braucht aber ich kenne die Anwendung ja auch nicht. Evtl. ist die etwas zickig :)

    Um eine Anwendung fernzusteuern gibt es viele Möglichkeiten. Um dir konkret weiterhelfen zu können, müsste man wissen, um was genau es geht, wie genau Du das machen willst, welchen Kenntnisstand Du in der Programmierung allgemein und in (Skript)Sprachen im Einzelnen hast.

    Die einfachste Möglichkeit, bestimmte Tastendrücke an eine Anwendung zu schicken, ist wohl SendKeys. Das gibt es für verschiedene Technologien.

    SendKeys (VBA)

    SendKeys (.NET)

    SendKeys (VBScript)

    Ein recht altes aber sehr verständliches Beispiel findest Du bspw. hier:

      Steuern von Drittprogrammen mit Hilfe der SendKeys-Methode


    Gruß, Stefan
    Microsoft MVP - Visual Developer ASP/ASP.NET (2001-2018)
    https://www.asp-solutions.de/ - IT Beratung, Softwareentwicklung, Remotesupport


    Dienstag, 2. Februar 2021 15:19
  • danke dir sollte ich weiter frage dazu haben werde ich einen Beitrag öffnen.
    Dienstag, 2. Februar 2021 15:26