Форум: "WinAPI";
Текущий архив: 2002.11.11;
Скачать: [xml.tar.bz2];
ВнизКак послать сообщение 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 вся ветка
Форум: "WinAPI";
Текущий архив: 2002.11.11;
Скачать: [xml.tar.bz2];
Память: 0.46 MB
Время: 0.008 c