Главная страница
    Top.Mail.Ru    Яндекс.Метрика
Форум: "Прочее";
Текущий архив: 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.043 c
2-1181927360
Kolan
2007-06-15 21:09
2007.07.08
AV в Add у потомка TObjectList — откуда?


2-1181866938
delphino
2007-06-15 04:22
2007.07.08
Подскажите как можно сделать


3-1176233234
sholomgf
2007-04-10 23:27
2007.07.08
Помогите с запросом MYSQL ...


2-1181699097
swinden
2007-06-13 05:44
2007.07.08
Вывод числа


15-1181357065
Slider007
2007-06-09 06:44
2007.07.08
С днем рождения ! 9 июня 2007 суббота





Afrikaans Albanian Arabic Armenian Azerbaijani Basque Belarusian Bulgarian Catalan Chinese (Simplified) Chinese (Traditional) Croatian Czech Danish Dutch English Estonian Filipino Finnish French
Galician Georgian German Greek Haitian Creole Hebrew Hindi Hungarian Icelandic Indonesian Irish Italian Japanese Korean Latvian Lithuanian Macedonian Malay Maltese Norwegian
Persian Polish Portuguese Romanian Russian Serbian Slovak Slovenian Spanish Swahili Swedish Thai Turkish Ukrainian Urdu Vietnamese Welsh Yiddish Bengali Bosnian
Cebuano Esperanto Gujarati Hausa Hmong Igbo Javanese Kannada Khmer Lao Latin Maori Marathi Mongolian Nepali Punjabi Somali Tamil Telugu Yoruba
Zulu
Английский Французский Немецкий Итальянский Португальский Русский Испанский