Главная страница
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.017 c
15-1181283015
TCrash
2007-06-08 10:10
2007.07.08
Форум по С++


2-1181798599
fd979
2007-06-14 09:23
2007.07.08
Запись и чтение


2-1181654711
хабик
2007-06-12 17:25
2007.07.08
две таблицы мастера одна деталь


2-1181898235
Strate
2007-06-15 13:03
2007.07.08
Проверить тип указателя


1-1178550814
Price
2007-05-07 19:13
2007.07.08
Фото в камеру