Главная страница
Top.Mail.Ru    Яндекс.Метрика
Текущий архив: 2002.11.11;
Скачать: CL | DM;

Вниз

Как послать сообщение Desktоp у о нажатии левой клавиши мышки?   Найти похожие ветки 

 
bublik   (2002-10-01 00:38) [0]

Как послать сообщение Desktоp"у о нажатии левой клавиши мышки?
В результате хочется видеть контекстное меню.
Мой код не работает:

procedure TForm1.Button1Click(Sender: TObject);
var DesktopWnd : HWND;
begin
DesktopWnd := GetDesktopWindow;
Sleep(1000);
SendMessage (DesktopWnd, WM_RBUTTONDOWN, MK_RBUTTON, 300 + 50 shl 16 ) ;
end;


 
SPeller ©   (2002-10-01 03:16) [1]

RBUTTONDOWN, а затем RBUTTONUP надо посылать


 
Не претендуя на   (2002-10-01 03:42) [2]

А какое отношение имеют "WM_RBUTTONDOWN", "MK_RBUTTON", "RBUTTONDOWN", "RBUTTONUP" к вопросу о том "Как послать сообщение Desktоp"у о нажатии левой клавиши мышки?" :)))


 
DSa   (2002-10-01 04:56) [3]

To: Не претендуя на
Когда я работаю ночью, то не такие вещи могу спутать... ;]

To: Speller
C SendMessage не получилось?

Получилось вот так:

....
vat Pt : TPoint;
....
Pt.x := x;
Pt.y := y;
Pt.x := Round(Pt.x * (65535 / Screen.Width));
Pt.y := Round(Pt.y * (65535 / Screen.Height));
Application.ProcessMessages;
// SetCursorPos(x, y); или
mouse_event(MOUSEEVENTF_ABSOLUTE or MOUSEEVENTF_MOVE, Pt.x, Pt.y, 0, 0);
mouse_event(MOUSEEVENTF_ABSOLUTE or MOUSEEVENTF_RIGHTDOWN, Pt.x, Pt.y, 0, 0);
mouse_event(MOUSEEVENTF_ABSOLUTE or MOUSEEVENTF_RIGHTUP, Pt.x, Pt.y, 0, 0);
....

Но работает только переместив курсор. Иначе не работает. А нужно не изменять позицию курсора.
Может есть какие идеи?

И почему не работает SendMessage?


 
DSa   (2002-10-01 04:59) [4]

Я тот самыи bublik :))
Мне нельзя ночью работь ;)


 
Steven ©   (2002-10-01 07:07) [5]

WM_CONTEXTMENU попробуй. А вообще обычно контекстное меню обычно по правой кнопке вызывается.


 
DSa   (2002-10-01 09:01) [6]

To: Steven

WM_CONTEXTMENU тоже не работает. ;]

Может у кого есть работающий пример?
А то я уже зациклился на одном ;]


 
SPeller ©   (2002-10-01 11:30) [7]


> И почему не работает SendMessage?

Должен работать. Я делал такую штуку что когда нажимаешь левую кнопку то воспринимается это как правая. Делается просто - подменяется WM_LBUTTONDOWN на WM_RBUTTONDOWN и соответственно WM_LBUTTONUP на WM_RBUTTONUP. Вот и всё. Проще говоря после строки
SendMessage (DesktopWnd, WM_RBUTTONDOWN, MK_RBUTTON, 300 + 50 shl 16 ) ;
тебе надо сделать ещё
SendMessage (DesktopWnd, WM_RBUTTONUP, MK_RBUTTON, 300 + 50 shl 16 ) ;

Если и так не сработает, то дело в параметрах от MK_RBUTTON и далее.


> Не претендуя на (01.10.02 03:42)
> А какое отношение имеют "WM_RBUTTONDOWN", "MK_RBUTTON",
> "RBUTTONDOWN", "RBUTTONUP" к вопросу о том "Как послать
> сообщение Desktоp"у о нажатии левой клавиши мышки?" :)))

Ты сам хоть понял чё ляпнул?


 
Nomad.kz   (2002-10-02 11:28) [8]

2SPeller

Сено-солома :-Е
Хто в армИи ни служив, стрункуйсь! ;-)


 
DSa   (2002-10-03 00:14) [9]

To SPeller

Посылая WM_RBUTTONDOWN и WM_RBUTTONUP по SendMessage в других приложениях появляетя контекстное меню, а вот на Desktop"е не вылазит. Так что придется оставить эту загадку на лучшие времена. ;]

To Nomad.kz

Ано и выдно, шо ты в армИи азы прогромировання получил: мы здесь про Desktop и SendMessage, а ты про сено и солому... ;)



Страницы: 1 вся ветка

Текущий архив: 2002.11.11;
Скачать: CL | DM;

Наверх




Память: 0.49 MB
Время: 0.027 c
14-34170
Кен
2002-10-16 05:09
2002.11.11
В каком компоненте можно красиво представить текст ? Хотелось бы


3-33902
lety
2002-10-22 22:17
2002.11.11
скорость обработки и нажатия кнопки!


1-34038
fame
2002-10-30 16:49
2002.11.11
Заполнение массива


14-34166
Феликс
2002-10-17 14:12
2002.11.11
Почему?


1-34098
vvolkov
2002-10-31 13:51
2002.11.11
Сохранение TControl