Форум: "Прочее";
Текущий архив: 2007.07.08;
Скачать: [xml.tar.bz2];
ВнизКак найти хэндл скроллбара у работающей программы? Найти похожие ветки
← →
Углук © (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;
Скачать: [xml.tar.bz2];
Память: 0.45 MB
Время: 0.045 c