
![]() |
Наши проекты:
Журнал · Discuz!ML · Wiki · DRKB · Помощь проекту |
|
ПРАВИЛА | FAQ | Помощь | Поиск | Участники | Календарь | Избранное | RSS |
[18.222.21.218] |
![]() |
|
Сообщ.
#1
,
|
|
|
Добрый день!
Пишу на Python, но, уверен, здесь мне дадут лучший ответ. Это оповещалка для менеджеров. Показываю MessageBox с помощью Win32API, но он не всегда на самом верху. Хочется, чтобы пользователь его точно видел. Код такой: ![]() ![]() def execute( self , title = None , message = None , timeout = 200 ) : win32gui.MessageBox( 0 , message , title , 0 | 64 ) """ self.createWindowArgs = ( self.classAtom , "Taskbar" , self.style , 0 , 0 , win32con.CW_USEDEFAULT , win32con.CW_USEDEFAULT , 0 , 0 , self.hinst , None ) self.hwnd = win32gui.CreateWindow( * self.createWindowArgs ) win32gui.UpdateWindow( self.hwnd ) win32gui.Shell_NotifyIcon( win32gui.NIM_ADD , ( self.hwnd , 0 , self.flags , win32con.WM_USER + 20 , self.hicon , "tooltip" ) ) win32gui.Shell_NotifyIcon( win32gui.NIM_MODIFY , ( self.hwnd , 0 , win32gui.NIF_INFO , win32con.WM_USER + 20 , self.hicon , "tooltip" , message , timeout , title ) ) """ return self Здесь http://msdn.microsoft.com/en-us/library/wi...v=vs.85%29.aspx читал, но ответа не нашёл. Или, в коде есть ещё закомментированное всплывающее сообщение. Какой бы timeout я ни выставил, оно скрывается с одинаковой скоростью, а нужно, чтобы висело всегда. Подойдёт любой вариант. Конечно, подойдёт ответ на С++. |
Сообщ.
#2
,
|
|
|
Попробуйте добавить флажок MB_SYSTEMMODAL:
win32gui.MessageBox( 0 , message , title , 0 | 64 | 0x00001000L) |
Сообщ.
#3
,
|
|
|
Спасибо!
|
![]() |
Сообщ.
#4
,
|
|
А MB_SERVICE_NOTIFICATION еще лучше.
|
![]() |
Сообщ.
#5
,
|
|
Хочу посмотреть на два таких приложения одновременно. Интересно, на какой секунде оба будут добавлены в карантин антивирем?
|
![]() |
Сообщ.
#6
,
|
|
Qraizer, если ты о флаге MB_SERVICE_NOTIFICATION, то два таких сообщения не появятся одновременно. Второй будет ждать, пока сообщение первого не закроют. Поток же первого, который вызвал это сообщение, замораживается на время его отображения. Вообще, при вызове MessageBox с этим флагом, направляется сообщение серверу csrss, который и отображает его поверх всего. Так же это сообщение дублируется в журнал событий системы. Ну и антивирус, полагаю, вряд ли поместит приложение в карантин, т.к. ничего аморального тут не происходит.
|
![]() |
Сообщ.
#7
,
|
|
Нет. Я о том, что второе "опоздавшее" приложение не выполнило свою задачу. Чтобы её выполнить, ей придётся "хакнуть" первое, но тогда оно не выполнит свою задачу. Итд.
P.S. Это мой стандартный встречный вопрос на вопросы типа "как сделать, чтобы моё приложение было самое-самое" - это "у меня два таких самых-самых приложения; каковы ориентировочные результаты их дуэли?". |
![]() |
Сообщ.
#8
,
|
|
А, ну тут только опыт поможет, но не теория.
![]() |