Jak zaplanować program do tworzenia okien, który nie kradnie fokusa?

5

Napisałem mały program konsoli, który sprawdza, czy wszystkie moje witryny działają poprawnie. używam Harmonogram zadań systemu Microsoft Windows uruchamiać ten program automatycznie raz dziennie.

Screenshot

Problem polega na tym, że całkiem naturalnie program kradnie fokus przy każdym uruchomieniu. Wolałbym, żeby to się zaczęło, nie stając się najwyższym oknem na moim pulpicie. Jaki jest najprostszy sposób osiągnięcia tego celu? Oczywiście mogłem przepisać mój plik EXE, aby utworzyć okno tła (lub nie mieć żadnego okna), ale byłoby miło, gdyby Harmonogram zadań miał opcję „Nie kradnij fokusa” lub coś takiego, ale może nie jest to nawet możliwe ...

Andreas Rejbrand
źródło

Odpowiedzi:

6

Możesz mieć Harmonogram zadań uruchomić vbscript, który otwiera program konsoli. Vbscript może użyć metody Powłoki do otwarcia, aby ją zminimalizować za pomocą:

Set WshShell = WScript.CreateObject("WScript.Shell")
WshShell.Run "notepad.exe", 6, true

Istnieje kilka podstawowych informacji na ten temat w http://ss64.com/vb/run.html

Geo
źródło
1
Unikałbym VBScript tylko dlatego, że jest niepewny, a niektóre sklepy na to nie pozwalają. Jednak to rozwiązanie zadziała, więc głosuję.
To działa bardzo dobrze! Przyjmę to.
Andreas Rejbrand
1
W systemie Windows 7 polecam PowerShell ( Start-Process ).
Bob
W przeszłości stosowałem metodę podobną do tej, aby okna były niewidoczne. Dobra decyzja.
Melikoth
To niestety zapobiega prawidłowemu zatrzymaniu zadania przez Harmonogram zadań i wykryciu, czy instancje już działają. Długotrwałe powtarzalne zadania często zaczynają działać równolegle. Może być problem.
Axel Fontaine
2

Nie dzwoń bezpośrednio do aplikacji. Uruchom go ze zminimalizowanego skrótu.

Przypuszczam, że mógłbyś również dodaj plik wsadowy do używanego miksu /start /min dla tego samego efektu, ale podejrzewam, że plik wsadowy będzie kradł fokus, chyba że zostanie wywołany ze zminimalizowanego skrótu.

EDYCJA: The start /min kradnie fokus bardzo krótko, ale działa na moim komputerze, używając a .cmd plik wsadowy, który wywołuje nowe okno wiersza poleceń (za pomocą cmd.exe).

Mój plik wsadowy wygląda tak:

@echo off
cls
start /min C:\Users\Randolph\Desktop\shortcut.lnk

Otwiera się sam skrót cmd.exe i ma wybrane domyślne opcje, z wyjątkiem tego, że otwiera się zminimalizowane (opcja Run: jest ustawione na Minimized ).


źródło
O dziwo, to nie działa. Stworzyłem skrót, który uruchamia zminimalizowany EXE, a kiedy dwukrotnie klikam skrót (plik LNK), EXE jest rzeczywiście uruchamiany zminimalizowany. Ale kiedy mówię Task Scheduler, aby uruchomić LNK, EXE nadal nie jest zminimalizowany.
Andreas Rejbrand
To interesujące. Co dzieje się z start /min opcja? Czy zadanie ma takie same uprawnienia, jak ty? Zastanawiam się, czy ma to związek z interakcją z pulpitem, jak w przypadku niektórych usług, gdzie uprawnienia są nieco inne. Sugestia Geo z VBScript może być dobrym rozwiązaniem.
Właśnie zauważyłem to: kiedy tworzę zadanie za pomocą skrótu, ignoruje skrót i idzie bezpośrednio do celu. Być może właśnie to dzieje się z tobą i musisz wkleić ścieżkę do lnk bezpośrednio w polu Program / skrypt?
Też to zauważyłem, ale nie dałem się nabrać. Musiałem napisać ahs.lnk ręcznie we właściwościach zadania. Ale nadal ... Również podejście BAT nie działa. Z nieznanego powodu zadanie uruchamia okno konsoli za pomocą exe plik jako tytuł, ale zawartość cmd.
Andreas Rejbrand
The start /min przepraszam, że pracowałem na moim komputerze. Nie wiem, co teraz zasugerować.
0

Ta składnia umożliwia działanie pomysłu start / min:
% comspec% / c start "" / min "C: Skrypty Destination_inbound_ftp5.bat

P Pace
źródło