Главная страница
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.015 c
2-1181729900
antid
2007-06-13 14:18
2007.07.08
помощь нуубу


2-1181750245
Ral'f
2007-06-13 19:57
2007.07.08
TDBComboBox


2-1181655463
Riply
2007-06-12 17:37
2007.07.08
Анализ Boot-сектора флоппика.


2-1181822568
Ral'f
2007-06-14 16:02
2007.07.08
Снова вопрос по структуре SQL запроса с помощью ADO


3-1176199544
Micke_2007
2007-04-10 14:05
2007.07.08
linked server