Автозагрузка Windows с файлом pyw не закрывает cmd

Я работал над небольшим сценарием, который должен запускаться на заднем плане моего компьютера. У меня уже работает скрипт, и все, кроме одной вещи, на которую часы поиска и поиска в Google не нашли ответа.

Файл имеет расширение.pyw, и когда я запускаю его из командной строки:

pythonw File.pyw

окно cmd продолжит работу и выдаст мне еще один запрос без запуска, как это было бы с обычным файлом.py.

Когда я дважды щелкаю файл, окно cmd открывается и закрывается без проблем, как и положено. Это все идеально для меня.

Однако я попытался создать небольшой командный файл:

cd C:\Users\(my name)\Desktop
pythonw File.pyw

и воткнул это в папку автозагрузки windows. Однако, когда я перезагрузил компьютер, чтобы посмотреть, будет ли он работать, он открыл окно cmd, но не закрыл его. Я не могу понять, почему. Я перепробовал все, что мог придумать, в том числе вставив File.pyw прямо в папку автозагрузки, и попытался поместить команду выхода прямо в командный файл следующим образом:

cd C:\Users\(my name)\Desktop
pythonw File.pyw
exit

Но, как вы можете догадаться, это не удалось. Я попытался поместить команду непосредственно в мой код, поэтому прямо перед концом она имела строку

os.system("exit")

но поняв, что это не сработает, я просто достал его. (Важная деталь: последняя строка кода установлена ​​на цикл до закрытия программы. Вот почему я пытаюсь использовать расширение pyw, чтобы консоль могла закрыться до окончания файла)

Затем я сократил командный файл до одной строки:

pythonw.exe C:\Users\(my name)\Desktop\File.pyw

но это все равно не сработает. Когда запускается пакетный файл, я получаю открытое окно cmd с введенной командой, но оно работает как обычный файл.py, не закрывая окно cmd.

Может кто-нибудь помочь мне выяснить, почему консоль не закрывается, когда команда запускается из.batch-файла, а будет работать при запуске непосредственно из командной строки?

ОБНОВЛЕНИЕ:

Сценарий предназначен для добавления быстрого сочетания клавиш для закрытия задачи, в частности, Google Chrome, когда я дважды быстро нажимаю "+". Вот мой полный код (за исключением личной информации)

import os
import sys
import pyHook, pythoncom

setting key to be '+' to avoid accidental usage.
def OnKeyBoardEvent(event):
    global prevPlus, escPushed
    if event.Ascii == 43:
        if prevPlus == None:
            prevPlus = event.Time
        else:
            if event.Time - prevPlus <= 1000:
                os.system("taskkill /IM chrome.exe")
                prevPlus = event.Time
            else:
                prevPlus = event.Time
    elif event.Ascii == 27:
        if escPushed == None:
            escPushed = event.Time
        else:
            if event.Time - escPushed <= 1000:
            sys.exit()
            else:
                escPushed = event.Time


getter = pyHook.HookManager()
getter.KeyDown = OnKeyBoardEvent
getter.HookKeyboard()

prevPlus = None
escPushed = None

pythoncom.PumpMessages()

Это все прекрасно работает, когда я запускаю его из pycharm или из cmd, но когда я помещаю его в C:\Users(мое имя)\AppData\Roaming\Microsoft\Windows\Start Menu\Programs\Startup, а затем попробуйте ничего не происходит Я предполагаю, что это потому, что Windows запускает файл и завершает его, прежде чем что-то случится, но я действительно не уверен. Мне просто очень нужно решение, которое заставляет его работать при запуске и вводить мой ключ до тех пор, пока я не выключусь.

2 ответа

Решение

Итак, мой последний подход состоял в том, чтобы просто связать файл VBS (как это было упомянуто в комментариях). Оказалось, что я делал неправильно и смешивал типы файлов, поэтому у меня были странные ошибки. Этот VBS-файл беззвучно назывался BAT-файлом, поэтому окно cmd не отображалось. Затем этот BAT-файл вызывал мою программу, которая по какой-то причине работала лучше при вызове из cmd, чем когда он был запущен на месте. Теперь он запускается при запуске, и окно cmd не появляется, так что это хорошее исправление, хотя и неэффективное.

Используйте команду windows start в вашем.cmd файле; удалить "выход".
Как это:

cd C:\Users\(my name)\Desktop
start pythonw File.pyw
Другие вопросы по тегам