Форум программистов
 

Восстановите пароль или Зарегистрируйтесь на форуме, о проблемах и с заказом рекламы пишите сюда - alarforum@yandex.ru, проверяйте папку спам!

Вернуться   Форум программистов > Delphi программирование > Общие вопросы Delphi
Регистрация

Восстановить пароль
Повторная активизация e-mail

Купить рекламу на форуме - 42 тыс руб за месяц

Ответ
 
Опции темы Поиск в этой теме
Старый 27.12.2012, 19:07   #1
demiancz
Форумчанин
 
Регистрация: 28.09.2010
Сообщений: 246
По умолчанию Запретить клик правой кнопкой мыши

Есть форма на ней WebBrowser. Не хочу что бы смотрели исходный код, потому нужно запретить клик правой кнопкой мыши.
Нашел такой пример
Код:
var
HookID: THandle;

function MouseProc(nCode: Integer; wParam, lParam: Longint): Longint; stdcall;
var
szClassName: array[0..255] of Char;
const
ie_name = 'Internet Explorer_Server'
begin
case nCode < 0 of
True:
Result := CallNextHookEx(HookID, nCode, wParam, lParam)
else
case wParam of
WM_RBUTTONDOWN,
WM_RBUTTONUP:
begin
GetClassName(PMOUSEHOOKSTRUCT(lParam)^.HWND, szClassName,
SizeOf(szClassName));
if lstrcmp(@szClassName[0], @ie_name[1]) = 0 then
Result := HC_SKIP
else
Result := CallNextHookEx(HookID, nCode, wParam, lParam);
end
else
Result := CallNextHookEx(HookID, nCode, wParam, lParam);
end;
end;
end;

procedure TForm1.FormCreate(Sender: TObject);
begin
HookID := SetWindowsHookEx(WH_MOUSE, MouseProc, 0, GetCurrentThreadId());
end;

procedure TForm1.FormDestroy(Sender: TObject);
begin
if HookID <> 0 then
UnHookWindowsHookEx(HookID);
end;
Но не компилируется из-за ошибки
Код:
Incompatible types: 'TFNHookProc' and 'Integer'
В строке
Код:
HookID := SetWindowsHookEx(WH_MOUSE, MouseProc, 0, GetCurrentThreadId());
Похоже что то не нравится в MouseProc
Помогите пожалуйста решить проблему
Смотреть фильмы HD Фильмы для планшетов
demiancz вне форума Ответить с цитированием
Старый 27.12.2012, 21:49   #2
dmitriegorovih
Ещё не
Форумчанин
 
Аватар для dmitriegorovih
 
Регистрация: 04.01.2010
Сообщений: 517
По умолчанию

Цитата:
Но не компилируется из-за ошибки
Код:
Incompatible types: 'TFNHookProc' and 'Integer'
В строке
Код:
HookID := SetWindowsHookEx(WH_MOUSE, MouseProc, 0, GetCurrentThreadId());
Хм не знаю у меня норм скомпилировалось единственное где у меня ошибка высветилась это
Код:
ie_name = 'Internet Explorer_Server';
Попробуйте код в отдельном приложение то, что вы написали на форуме.
Воображение важнее, чем знания. (Albert Einstein)
dmitriegorovih вне форума Ответить с цитированием
Старый 27.04.2013, 16:39   #3
demiancz
Форумчанин
 
Регистрация: 28.09.2010
Сообщений: 246
По умолчанию

В Delphi7 все работает, а вот в Delphi XE2 выдает эту ошибку.
Помогите пожалуйста. Мне нужно скомпилировать в Delphi XE2.
Проект который создал в Делфи7 попробовал в Делфи ХЕ2 скомпилировать все таже ошибка
Код:
E2010 Incompatible types: 'NativeInt' and 'Integer'
в строке
Код:
HookID := SetWindowsHookEx(WH_MOUSE, MouseProc, 0, GetCurrentThreadId());
после
MouseProc
Смотреть фильмы HD Фильмы для планшетов
demiancz вне форума Ответить с цитированием
Старый 27.04.2013, 20:13   #4
demiancz
Форумчанин
 
Регистрация: 28.09.2010
Сообщений: 246
По умолчанию

На другом форуме подсказали решение. Теперь компилируется но правая кнопка при клике по браузеру всеравно работает

Код:
function MouseProc(nCode: Integer; wParam : WPARAM; lParam: LPARAM): LRESULT; stdcall;
var
szClassName: array[0..255] of Char;
const
ie_name = 'Internet Explorer_Server';
begin
case nCode < 0 of
True:
Result := CallNextHookEx(HookID, nCode, wParam, lParam)
else
case wParam of
WM_RBUTTONDOWN,
WM_RBUTTONUP:
begin
GetClassName(PMOUSEHOOKSTRUCT(lParam)^.HWND, szClassName,
SizeOf(szClassName));
if lstrcmp(@szClassName[0], @ie_name[1]) = 0 then
Result := HC_SKIP
else
Result := CallNextHookEx(HookID, nCode, wParam, lParam);
end
else
Result := CallNextHookEx(HookID, nCode, wParam, lParam);
end;
end;
end;
 
procedure TForm1.FormCreate(Sender: TObject);
begin
HookID := SetWindowsHookEx(WH_MOUSE, MouseProc, 0, GetCurrentThreadId());
end;
 
procedure TForm1.FormDestroy(Sender: TObject);
begin
if HookID <> 0 then
UnHookWindowsHookEx(HookID);
end;
Смотреть фильмы HD Фильмы для планшетов
demiancz вне форума Ответить с цитированием
Старый 27.04.2013, 20:25   #5
Stilet
Белик Виталий :)
Старожил
 
Аватар для Stilet
 
Регистрация: 23.07.2007
Сообщений: 57,097
По умолчанию

Цитата:
Не хочу что бы смотрели исходный код
Во-первых: Это тебя не спасет.
Во-вторых: Я ловил такой же процедурой что ты привел - она вполне рабочая. Единственное "но" какой у тебя браузер. Возможно в новых IE имя класса другое.
I'm learning to live...
Stilet вне форума Ответить с цитированием
Старый 27.04.2013, 20:42   #6
demiancz
Форумчанин
 
Регистрация: 28.09.2010
Сообщений: 246
По умолчанию

Ну мне надо что бы на разных версиях не работала правая кнопка мыши.
Можно не только для WebBrowser ее отключить а вообще что бы не работал клик на форме?
Смотреть фильмы HD Фильмы для планшетов
demiancz вне форума Ответить с цитированием
Старый 28.04.2013, 09:19   #7
Stilet
Белик Виталий :)
Старожил
 
Аватар для Stilet
 
Регистрация: 23.07.2007
Сообщений: 57,097
По умолчанию

На твоей форме???
Или на всех?
Если на всех то хуком.
I'm learning to live...
Stilet вне форума Ответить с цитированием
Ответ


Купить рекламу на форуме - 42 тыс руб за месяц



Похожие темы
Тема Автор Раздел Ответов Последнее сообщение
Отловить клик правой кнопкой мыши в ComboBox mansuetudo Компоненты Delphi 9 10.05.2013 13:40
C# Работа ПРАВОЙ кнопкой мыши back1919 Помощь студентам 0 04.11.2010 15:18
Выделение ячейки в DBGrid правой кнопкой мыши RIO БД в Delphi 2 20.08.2009 17:53
Косяки с правой кнопкой мыши joker Общие вопросы Delphi 4 12.11.2008 13:25
Как работать с правой кнопкой мыши? ZeRRon Помощь студентам 4 28.12.2007 18:45