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

Вниз

Как найти хэндл скроллбара у работающей программы?   Найти похожие ветки 

 
Углук ©   (2007-05-24 16:21) [0]

Предположим, есть программа, у которой есть скроллбар. Необходимо в Runtime извлечь хэндл этого скроллбара и послать ему сообщение. Возможно ли это?


 
Иксик ©   (2007-05-24 18:47) [1]

Ой, я вспомнил  :)) Когда-то в детстве писал программку, не помню для чего, но было лет... ой, не помню... назад. Наводишь мышкой на любой edit и он дает тебе текст содержимого. Очень элементарно. Так вот, она хэндл выдавала в текстовый контрол, не помню зачем :)))

Выглядит ужасно, но работает :))

Код длл-ки для хука:
library Mouse;

uses
 Windows,
 Dialogs,
 Messages,
 SysUtils;

var
 SysHook : HHook = 0;

function MsgProc(code : integer; wParam : word; lParam : longint) : longint; stdcall;
begin
 if wparam = WM_LBUTTONUP then
   begin
    sendmessage(findwindow(nil,"Get Edit Text"),WM_APP+15,0,TMOUSEHOOKSTRUCT(Pointer(lParam)^).hwnd);
   end;

Result:= CallNextHookEx(SysHook, Code, wParam, lParam);
end;

procedure hook(switch : Boolean) export; stdcall;
begin
 if switch=true then
     SysHook := SetWindowsHookEx(WH_MOUSE, @MsgProc, HInstance, 0)
 else
    begin
     UnhookWindowsHookEx(SysHook);
     SysHook := 0;
    end;
end;

exports Hook;

begin
end.

Код отлова сообщения в программе:
Заголовок процедуры:
   procedure OnMMsg(var s:TMessage); message WM_APP + 15;

тело:
procedure TForm1.OnMMsg(var s: TMessage);
begin
 edit2.text:=inttostr(s.lparam);

 @hook:= nil;
 if Hdll > HINSTANCE_ERROR then
   begin
     @hook:=GetProcAddress(Hdll, "hook");
     hook(false);
   end;
 FreeLibrary(Hdll);
end;

И эта, ногами пинать не надо, было давно и не правда. Просто у меня тут 300Гб диск со всей историей :)


 
homm ©   (2007-05-24 18:51) [2]

> Возможно ли это?

Смотря какой скролбар. Он может быть частью мемо, например, тогда удасться послать сообщение только роодительскому окну.


 
wicked ©   (2007-05-24 19:15) [3]


> Смотря какой скролбар.

большинство скролбаров - и не окна вовсе, а так - видимость, созданная с помощью DrawFrameControl


 
Углук ©   (2007-06-08 20:54) [4]

Разобрался, спасибо



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

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

Наверх




Память: 0.48 MB
Время: 0.024 c
2-1181931418
nord489
2007-06-15 22:16
2007.07.08
Выделение записи в DBGrid


2-1182062398
..::KraN::..
2007-06-17 10:39
2007.07.08
Как узнать букву диска?


1-1178559317
Dmitry_177
2007-05-07 21:35
2007.07.08
Как chm-файлы справки открывать в программе?


15-1181192055
@!!ex_
2007-06-07 08:54
2007.07.08
Валидность указателя.


2-1181717913
Dr H
2007-06-13 10:58
2007.07.08
TValueListEditor