![]() |
| ||
|
|
Новости |
Поиск |
FAQ |
Статьи |
Книги |
Новости VCL
| | Форумы ЧАТ |
Орешник |
|
| |||
| |||
« предыдущая ветвь | форум | следующая ветвь »
Определение факта нахождения курсора над треем
leonidus © (2007-08-01 11:10:00)Господа, я так понимаю что область трея это фактически окно, а раз так то возможно определить находится ли в даный момент курсор над этой областью или нет. Подскажите как это сделать?
WASM (2007-08-02 10:32:00) [1]
> leonidus © (01.08.07 23:36) [7]
Если автор программы TranslateIt это вы, мне казалось что для вас решить проблемму определения нахождения курсора мышки над треем не состовляет особых хлопот, а вопрос собственно связан вот с чем, как мне получить строчку текста по линии, а не отдельное слово из под курсора мышки в Internet Explorer, вот код
function TForm1.ExtractWordFromIE: string;
var
ptScreen: TPoint;
ppacc: IAccessible;
pvarChild: Variant;
SP: IServiceProvider;
HE: IHTMLElement;
TR: IHTMLTxtRange;
HD: IHTMLDocument2;
NW3: IHTMLWindow3;
NW2: IHTMLWindow2;
childWND: HWND;
lrHD: Cardinal;
IEHwnd:Cardinal;
IEHwndClass: array [0..256] of Char;
begin
Result:= '';
try
if GetCursorPos(ptScreen) then
begin
IEHwnd:= WindowFromPoint(ptScreen);
GetClassName(IEHwnd, IEHwndClass, SizeOf(IEHwndClass));
if Succeeded(AccessibleObjectFromPoint(ptScreen, ppacc, pvarChild)) then
begin
if Succeeded(ppacc.QueryInterface(IServiceProvider, SP)) then
SP.QueryService(IHTMLElement, IHTMLElement, HE);
if HE <> nil then
HD:= HE.document as IHTMLDocument2;
end;
TR:= (HD.body as IHTMLBodyElement).createTextRange;
NW2 := HD.parentWindow;
if (NW2 <> nil) and Succeeded(NW2.QueryInterface(IHTMLWindow3, NW3)) then
begin
ptScreen.X:= ptScreen.X - NW3.screenLeft;
ptScreen.Y:= ptScreen.Y - NW3.screenTop;
end;
TR.moveToPoint(ptScreen.X, ptScreen.Y);
TR.expand('word');
Result:= TR.Text;
end;
except
//
end;
end;
leonidus (2007-08-01 23:36:00) [2]>WASM спасибо за ответ
На счет TranslateIt!, с чем связан ваш вопрос?
WASM (2007-08-01 20:04:00) [3]
> to leonidus
Уважаемый а это не вы случаем словари пишите типа TranslateIt?
WASM (2007-08-01 20:01:00) [4]То есть вот так
if WndClass = 'TrayNotifyWnd' then
WASM (2007-08-01 19:59:00) [5]Может так или я невьехал в вопрос
procedure TForm1.Timer1Timer(Sender: TObject);
var
Wnd: HWND;
WndClass: Array [0..256] of Char;
begin
Wnd:= WindowFromPoint(Mouse.CursorPos);
GetClassName(Wnd, WndClass, SizeOf(WndClass));
if WndClass = 'ToolbarWindow32' then
Caption:= 'Мышка над треем'
else
Caption:= 'Мышка где то есчё'
end;
DVM (2007-08-01 16:20:00) [6]
> а какое сообщение панель задач отправляет при наведении
> курсора?
Никакого. Это окну панели задач приходит WM_MOUSEMOVE и прочие
leonidus (2007-08-01 15:24:00) [7]а какое сообщение панель задач отправляет при наведении курсора?
DVM (2007-08-01 11:27:00) [8]
> Подскажите как это сделать?
Глобальная ловушка на мышь. Или на сообщения окна панели задач.