Имя пользователя:
Пароль:  
Помощь | Регистрация | Забыли пароль?  | Правила  

Компьютерный форум OSzone.net » Программирование, базы данных и автоматизация действий » AutoIt » [решено] Отключение системного контекстного меню на Input

Ответить
Настройки темы
[решено] Отключение системного контекстного меню на Input

Старожил


Сообщения: 156
Благодарности: 1


Конфигурация

Профиль | Отправить PM | Цитировать


Здравствуйте!
Не нашел в документации такой ответ - есть ли возможность отключить на Input (полях ввода) системное контекстное меню? Ставить свое я на них не буду, мне бы просто убрать системное

Отправлено: 20:10, 30-11-2013

 

Аватара для madmasles

Ветеран


Сообщения: 812
Благодарности: 353

Профиль | Отправить PM | Цитировать


eus_deus,
Попробуйте сделать примерно так.
Код: Выделить весь код
#include <GUIConstantsEx.au3>
#include <WinAPI.au3>
#include <WindowsConstants.au3>
#include <Constants.au3>

Global $apPTR[2]

$hGui = GUICreate('Test', 400, 200)
$nInput = GUICtrlCreateInput('', 10, 20, 380, 20)
$hInput = GUICtrlGetHandle($nInput)
$nCheckBox = GUICtrlCreateCheckbox('Убрать контекстное меню для Input', 10, 60, 380, 20)
GUICtrlSetState($nCheckBox, $GUI_CHECKED)
$hNoContextMenuInput = DllCallbackRegister('_NoContextMenuInput', 'ptr', 'hwnd;uint;wparam;lparam')
$apPTR[1] = DllCallbackGetPtr($hNoContextMenuInput)
$apPTR[0] = _WinAPI_SetWindowLong($hInput, $GWL_WNDPROC, $apPTR[1])
GUISetState()

While 1
    Switch GUIGetMsg()
        Case $GUI_EVENT_CLOSE
            _WinAPI_SetWindowLong($hInput, $GWL_WNDPROC, $apPTR[0])
            DllCallbackFree($hNoContextMenuInput)
            Exit
        Case $nCheckBox
            _WinAPI_SetWindowLong($hInput, $GWL_WNDPROC, $apPTR[BitAND(GUICtrlRead($nCheckBox), $GUI_CHECKED)])
    EndSwitch
WEnd

Func _NoContextMenuInput($h_Wnd, $i_Msg, $w_Param, $l_Param)
    Switch $i_Msg
        Case $WM_CONTEXTMENU
            Switch $h_Wnd
                Case $hInput
                    Return 0
            EndSwitch
    EndSwitch
    Return _WinAPI_CallWindowProc($apPTR[0], $h_Wnd, $i_Msg, $w_Param, $l_Param)
EndFunc   ;==>_NoContextMenuInput

Последний раз редактировалось madmasles, 02-12-2013 в 19:12. Причина: оптимизировал код

Это сообщение посчитали полезным следующие участники:

Отправлено: 11:18, 02-12-2013 | #2



Для отключения данного рекламного блока вам необходимо зарегистрироваться или войти с учетной записью социальной сети.

Если же вы забыли свой пароль на форуме, то воспользуйтесь данной ссылкой для восстановления пароля.


Старожил


Сообщения: 156
Благодарности: 1

Профиль | Отправить PM | Цитировать


спасибо, попробую

Отправлено: 18:22, 02-12-2013 | #3



Компьютерный форум OSzone.net » Программирование, базы данных и автоматизация действий » AutoIt » [решено] Отключение системного контекстного меню на Input

Участник сейчас на форуме Участник сейчас на форуме Участник вне форума Участник вне форума Автор темы Автор темы Шапка темы Сообщение прикреплено

Похожие темы
Название темы Автор Информация о форуме Ответов Последнее сообщение
Интерфейс - [решено] Отключение Aero из контекстного меню рабочего стола Smarty Microsoft Windows 7 11 24-10-2010 23:01
Интерфейс - запрет контекстного меню только на рабочем столе alexataa Microsoft Windows 2000/XP 0 01-03-2010 00:20
Интерфейс - Остаються следы контекстного меню на экране PDLajus Microsoft Windows 7 8 31-10-2009 01:49
Интерфейс - вылетает explorer на пункте "отправить" контекстного меню shlef Microsoft Windows 2000/XP 4 10-04-2009 21:20
Отключение контекстного меню в панели быстрого запуска. GreenIce Microsoft Windows NT/2000/2003 5 29-05-2007 15:43




 
Переход