#python #python-3.x
#python #python-3.x
Вопрос:
Новичок в Python. Я создал скрипт для захвата заголовка активного окна и печати его на консоли. Я добавил временную метку и пользователя. Вот что у меня есть
import win32gui
import datetime
import getpass
user = getpass.getuser()
windowTile = "";
while ( True ) :
newWindowTile = win32gui.GetWindowText(win32gui.GetForegroundWindow());
if(newWindowTile != windowTile) :
ts = datetime.datetime.now()
windowTile = newWindowTile
line =str(ts) ' ' user ' ' newWindowTile
#line = newWindowTile
print(line)
Вывод выглядит следующим образом
2020-09-03 13:34:16.075329 Eric Spyder (Python 3.8)
2020-09-03 13:34:18.208329 Eric
2020-09-03 13:34:18.279376 Eric COM5 - PuTTY
2020-09-03 13:34:18.877347 Eric
2020-09-03 13:34:18.955382 Eric Spyder (Python 3.8)
2020-09-03 13:34:19.592409 Eric
2020-09-03 13:34:19.631369 Eric COM5 - PuTTY
Почему я получаю дополнительный вывод строки с пустой информацией?
Комментарии:
1. Угадывание рабочего стола считается «окном»
2. Никогда не думал об этом таким образом.
3. Он работает как
explorer.exe
. Если вы убьете это, то вы убьете все остальное, кроме других активных окон.4. Кроме того, нет причин заключать
True
в круглые скобки.
Ответ №1:
Когда вы переключаетесь между окнами, скажем, Alt-Tab, затем он ненадолго переключается на окно «Рабочий стол», у которого, скорее всего, нет имени. Просто щелкнув между двумя окнами, я не думаю, что вы увидите эти строки.
Предполагая, что вы хотите проигнорировать это или что-либо еще без заголовка, вы можете использовать if newWindowTitle
, чтобы увидеть, является ли эта новая строка непустой
newWindowTile = win32gui.GetWindowText(win32gui.GetForegroundWindow());
if newWindowTitle and newWindowTile != windowTile:
ts = datetime.datetime.now()
windowTile = newWindowTile
line =str(ts) ' ' user ' ' newWindowTile
#line = newWindowTile
print(line)
Комментарии:
1. Щелкая между окнами, я все еще, кажется, вижу строки, но ваш ответ помогает объяснить и выполнить то, что я хочу. Спасибо,