![]() |
Внимание, важное сообщение: Дорогие Друзья!
В ноябре далекого 2001 года мы решили создать сайт и форум, которые смогут помочь как начинающим, так и продвинутым пользователям разобраться в операционных системах. В 2004-2006г наш проект был одним из самых крупных ИТ ресурсов в рунете, на пике нас посещало более 300 000 человек в день! Наша документация по службам Windows и автоматической установке помогла огромному количеству пользователей и сисадминов. Мы с уверенностью можем сказать, что внесли большой вклад в развитие ИТ сообщества рунета. Но... время меняются, приоритеты тоже. И, к сожалению, пришло время сказать До встречи! После долгих дискуссий было принято решение закрыть наш проект. 1 августа форум переводится в режим Только чтение, а в начале сентября мы переведем рубильник в положение Выключен Огромное спасибо за эти 24 года, это было незабываемое приключение. Сказать спасибо и поделиться своей историей можно в данной теме. С уважением, ваш призрачный админ, BigMac... |
|
Компьютерный форум OSzone.net » Программирование, базы данных и автоматизация действий » AutoIt » [решено] Режим "Поверх всех окон" совместно с ComboBox в GUI |
|
[решено] Режим "Поверх всех окон" совместно с ComboBox в GUI
|
Пользователь Сообщения: 74 |
Добрый день!
есть следующий код: #include <GUIConstantsEx.au3> #include <WindowsConstants.au3> Opt("WinWaitDelay", 0) Opt("GUIOnEventMode", 1) ;ShellHook notification codes: Global Const $HSHELL_WINDOWCREATED = 1 Global Const $HSHELL_WINDOWACTIVATED = 4 Global $bHook = 1 $hForm = GUICreate('Demo', 330, 185, -1, -1, BitOR($WS_CAPTION, $WS_MAXIMIZEBOX, $WS_MINIMIZEBOX, $WS_POPUP, $DS_SETFOREGROUND), $WS_EX_TOPMOST) GUISetOnEvent($GUI_EVENT_CLOSE, '_Main_Events') $Checkbox1 = GUICtrlCreateCheckbox("Поверх всех окон", 10, 20, 200, 21) $sCombo = GUICtrlCreateCombo("", 15, 50, 200, 21) GUICtrlSetData($sCombo, "элемент0|элемент1|элемент2|элемент3|элемент4|") $nExit_Button = GUICtrlCreateButton('Exit', 330 - 100 - 10, 130 + 10 + 10, 100, 23) GUICtrlSetOnEvent(-1, '_Main_Events') GUISetState(@SW_SHOW, $hForm) GUIRegisterMsg(RegisterWindowMessage("SHELLHOOK"), "HShellWndProc") ShellHookWindow($hForm, $bHook) While 1 Sleep(10) WEnd Func _Main_Events() Switch @GUI_CtrlId Case $GUI_EVENT_CLOSE, $nExit_Button ShellHookWindow($hForm, 0) Exit EndSwitch EndFunc Func HShellWndProc($hWnd, $Msg, $wParam, $lParam) Switch $wParam Case $HSHELL_WINDOWCREATED, $HSHELL_WINDOWACTIVATED While Not WinActive($hForm) WinActivate($hForm) WEnd EndSwitch EndFunc ;register/unregister ShellHook Func ShellHookWindow($hWnd, $bFlag) Local $sFunc = 'DeregisterShellHookWindow' If $bFlag Then $sFunc = 'RegisterShellHookWindow' Local $aRet = DllCall('user32.dll', 'int', $sFunc, 'hwnd', $hWnd) Return $aRet[0] EndFunc ;register window message Func RegisterWindowMessage($sText) Local $aRet = DllCall('user32.dll', 'int', 'RegisterWindowMessage', 'str', $sText) Return $aRet[0] EndFunc Вопрос заключается в следующем: Как сделать, чтобы по выбору Checkbox1 окно было поверх всех окон, и наоборот (теряло свойство "поверх всех окон", когда снята галка Checkbox1 ) ? Если использовать WinSetOnTop - не работает ComboBox |
|
Отправлено: 13:00, 19-12-2014 |
Новый участник Сообщения: 38
|
Профиль | Отправить PM | Цитировать Чекбоксу задайте действие на событие , у меня так работает ваш пример.
|
Отправлено: 14:42, 19-12-2014 | #2 |
Для отключения данного рекламного блока вам необходимо зарегистрироваться или войти с учетной записью социальной сети. Если же вы забыли свой пароль на форуме, то воспользуйтесь данной ссылкой для восстановления пароля. |
Пользователь Сообщения: 74
|
Профиль | Отправить PM | Цитировать действительно, все оказалось проще чем я думал.
Ваше решение мне помогло, спасибо! |
Отправлено: 15:03, 19-12-2014 | #3 |
Ветеран Сообщения: 812
|
Профиль | Отправить PM | Цитировать support23,
Еще так можно сделать. ;~ ... $iCheckbox1 = GUICtrlCreateCheckbox('Поверх всех окон', 10, 20, 200, 21) GUICtrlSetOnEvent($Checkbox1, 'SetOnTop') ;~ ... Func SetOnTop() WinSetOnTop($hForm, '', GUICtrlSendMsg($iCheckbox1, 0xF0, 0, 0));$BM_GETCHECK = 0xF0 EndFunc ;==>SetOnTop |
Отправлено: 09:48, 20-12-2014 | #4 |
![]() |
Участник сейчас на форуме |
![]() |
Участник вне форума |
![]() |
Автор темы |
![]() |
Сообщение прикреплено |
| |||||
Название темы | Автор | Информация о форуме | Ответов | Последнее сообщение | |
Интерфейс - Диспетчер задач не сохраняет "поверх остальных окон" | gendalf | Microsoft Windows 8 и 8.1 | 18 | 09-03-2015 13:16 | |
Интерфейс - Слетает режим "поверх всех окон" | Mark012 | Microsoft Windows 7 | 0 | 04-06-2011 09:55 | |
Разное - Подскажите програмку "Поверх всех окон" для XP... | nzhs | Microsoft Windows 2000/XP | 1 | 07-09-2010 22:34 | |
Интерфейс - [решено] Как сделать любую программу "поверх всех окон"? | DesignerMix | Microsoft Windows 7 | 3 | 24-10-2009 13:17 | |
C/C++ - [C++Builder 2007] Две формы поверх всех окон и одна форма поверх другой | crashtuak | Программирование и базы данных | 3 | 13-04-2009 16:33 |
|