Главная страница
    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.46 MB
Время: 0.045 c
2-1181727467
SunriseGirl
2007-06-13 13:37
2007.07.08
работа с базами данных и компонентами Delphi


15-1181235837
Interior
2007-06-07 21:03
2007.07.08
Умер ноутбук но винт живой


1-1178634775
MGW
2007-05-08 18:32
2007.07.08
Генерация. Распределение Пуассона.


2-1181996528
nord489
2007-06-16 16:22
2007.07.08
ADOConnection


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





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
Английский Французский Немецкий Итальянский Португальский Русский Испанский