Главная страница
    Top.Mail.Ru    Яндекс.Метрика
Форум: "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
1-33958
Григорий Ситнин
2002-10-30 10:41
2002.11.11
Собственный Form Wizard


1-33932
pirat
2002-10-31 22:54
2002.11.11
---|Ветка была без названия|---


1-33935
Zuvom
2002-11-01 03:09
2002.11.11
Temp


3-33885
Alexxx9801
2002-10-21 15:45
2002.11.11
TClientDataSet и RefreshRecord


7-34265
new_pahan
2002-09-04 21:00
2002.11.11
Как добавить свою секцию в exe-pe файл?





Afrikaans Albanian Arabic Armenian Azerbaijani Basque Belarusian Bulgarian Catalan Chinese (Simplified) Chinese (Traditional) Croatian Czech Danish Dutch English Estonian Filipino Finnish French
Galician Georgian German Greek Haitian Creole Hebrew Hindi Hungarian Icelandic Indonesian Irish Italian Japanese Korean Latvian Lithuanian Macedonian Malay Maltese Norwegian
Persian Polish Portuguese Romanian Russian Serbian Slovak Slovenian Spanish Swahili Swedish Thai Turkish Ukrainian Urdu Vietnamese Welsh Yiddish Bengali Bosnian
Cebuano Esperanto Gujarati Hausa Hmong Igbo Javanese Kannada Khmer Lao Latin Maori Marathi Mongolian Nepali Punjabi Somali Tamil Telugu Yoruba
Zulu
Английский Французский Немецкий Итальянский Португальский Русский Испанский