Уведомления

Группа в Telegram: @pythonsu

#1 Авг. 5, 2013 16:02:44

buddha
От:
Зарегистрирован: 2012-03-02
Сообщения: 422
Репутация: +  15  -
Профиль   Отправить e-mail  

Как закрыть повисшее окно и запустить его заново?

Есть проблема. Есть несколько окон, которые открыты постоянно. Но одно иногда отваливается(виснет).
Допустим открывать я его могу через subprocess.Popen() или os.startfile. Но вот как мне найти это окно и понять , что оно повисло, не представляю. Подскажите, пжлст.

Допустим надо найти его процесс, но как понять , что он повис?

Отредактировано buddha (Авг. 5, 2013 16:03:28)

Офлайн

#2 Авг. 5, 2013 18:39:07

s0rg
От:
Зарегистрирован: 2011-06-05
Сообщения: 777
Репутация: +  25  -
Профиль   Отправить e-mail  

Как закрыть повисшее окно и запустить его заново?

OC?

Офлайн

#3 Авг. 6, 2013 08:21:38

buddha
От:
Зарегистрирован: 2012-03-02
Сообщения: 422
Репутация: +  15  -
Профиль   Отправить e-mail  

Как закрыть повисшее окно и запустить его заново?

Windows

Офлайн

#4 Авг. 6, 2013 16:24:31

s0rg
От:
Зарегистрирован: 2011-06-05
Сообщения: 777
Репутация: +  25  -
Профиль   Отправить e-mail  

Как закрыть повисшее окно и запустить его заново?

Обычно, для этих целей используется SendMessageTimeout с сообщением WM_NULL

Офлайн

#5 Авг. 7, 2013 13:41:23

buddha
От:
Зарегистрирован: 2012-03-02
Сообщения: 422
Репутация: +  15  -
Профиль   Отправить e-mail  

Как закрыть повисшее окно и запустить его заново?

Я к сожалению не знаток С.

Вот пробую просто сначала послать сообщение эксплореру. Получил его HWND(через visual studio spy).
WM_NULL я так понял это просто 0.
Пишу:

>>> ctypes.windll.user32.SendMessageTimeoutW('0x00105E6', 0, 0, 0, 2, 500)
Traceback (most recent call last):
  File "<console>", line 1, in <module>
ValueError: Procedure probably called with not enough arguments (28 bytes missing)

Ошибка конечно говорящая, но …
Что не так делаю?

Офлайн

#6 Авг. 7, 2013 15:48:30

s0rg
От:
Зарегистрирован: 2011-06-05
Сообщения: 777
Репутация: +  25  -
Профиль   Отправить e-mail  

Как закрыть повисшее окно и запустить его заново?

раз уж вы используете winapi то поставте себе pywin32, это удобнее чем вызов через ctypes.
Первый параметр - это число, вы передаете его как строку. Почитайте статью на MSDN - там описаны все параметры. У меня под рукой win-системы нет сейчас, чтобы проверить.

Офлайн

Board footer

Модераторировать

Powered by DjangoBB

Lo-Fi Version