|
|
Регистрация Восстановить пароль |
Повторная активизация e-mail |
Регистрация | Задать вопрос |
Заплачу за решение |
Новые сообщения |
Сообщения за день |
Расширенный поиск |
Правила |
Всё прочитано |
|
Опции темы | Поиск в этой теме |
02.06.2014, 20:31 | #1 |
Пользователь
Регистрация: 05.05.2010
Сообщений: 50
|
Получить состояние чужого ScrollBar
Приветствую, есть необходимость считывать положение ползунков ScrollBar с чужого окна и соответствующим образом перемещать ползунки в моей форме.
На данный момент вижу решение таким образом: (ScrollBar горизонтальный) По hendel и ClassName я нахожу нужный мне ScrollBar в чужом окне. Узнаю его положение и размеры относительно рабочего стола. (Своему ScrollBar я устанавливаю такие же размеры ) Беру цвет пикселя (эталонный цвет) фона ScrollBar и в цикле с верху в низ прогоняю по полученной высоте на равенство цвета с эталонным пикселем. Если на протяжение всего этого пути проверки на равенство в цвете появляется не соответствие в цвете, то считаем что это и есть наш ползунок и в итоге у нас есть значение в пикселях от верха до крайнего с верху пикселя ползунка. (Допустим это будет 20px). На нашей форме, так как у нас ScrollBar имеет такие же размеры и внешний вид, мы проделываем все тоже самое с нашим ScrollBar на поиск ползунка и ... ну тут наверное эмуляция клика мыши. Помогите, то что я описал вполне осуществимо, но может быть есть иной способ, не через такие костыли. |
02.06.2014, 20:50 | #2 | |
Белик Виталий :)
Старожил
Регистрация: 23.07.2007
Сообщений: 57,097
|
Цитата:
I'm learning to live...
|
|
02.06.2014, 20:56 | #3 |
Пользователь
Регистрация: 05.05.2010
Сообщений: 50
|
Нет, не в игре но со скином. Первоначальный осмотр — вроде как обычный ScrollBar.
На какие сообщения его проверить? Что ему послать? Да и цвет пикселя эталонного предложил лишь как способ от чего отталкиваться что бы узнать положение бегунка. Последний раз редактировалось N0iD; 02.06.2014 в 21:06. |
02.06.2014, 21:21 | #4 |
Пользователь
Регистрация: 05.05.2010
Сообщений: 50
|
Stilet - спасибо, натолкнули на мысль.
function GetScrollPos(Wnd: HWnd; Bar:Integer): Integer; Параметры: Wnd: Окно, содержащее полосу прокрутки. Bar: Одна из констант sb_Ctl, sb_Horz, sb_Vert. Возвращаемое значение: Текущее положение указателя полосы прокрутки. Считывает минимальное и максимальное положения указателя прокрутки. function GetScrollRange(Wnd: HWnd; Bar:Integer, var MinPos, MaxPos: Integer); Параметры: Wnd: Окно, содержащее полосу прокрутки. Bar: Одна из констант sb_Ctl, sb_Horz, sb_Vert. MinPos: Целое для приема минимального положения. MaxPos: Целое для приема максимального положения. Буду пробовать. |
02.06.2014, 21:26 | #5 | |
Белик Виталий :)
Старожил
Регистрация: 23.07.2007
Сообщений: 57,097
|
Цитата:
Главное сам хендл скролла найти. Если не ошибаюсь бывает и так что месседжи скролла на самом деле отрабатывает его родительское окно.
I'm learning to live...
|
|
02.06.2014, 21:45 | #6 |
Пользователь
Регистрация: 05.05.2010
Сообщений: 50
|
Stilet - спасибо еще раз, все получилось.
|
Похожие темы | ||||
Тема | Автор | Раздел | Ответов | Последнее сообщение |
получить картинку чужого окна (типа PrintScreen) | Smogg | Win Api | 2 | 04.03.2014 14:08 |
Получить данные с ListView чужого приложения | BarsDG | Общие вопросы Delphi | 2 | 08.08.2012 13:59 |
Получить дескрипторы открытых сокетов чужого приложения | GRA1N | Работа с сетью в Delphi | 1 | 03.11.2011 09:21 |
Получить содержимое чужого окна, возможно? | jihot | Общие вопросы Delphi | 13 | 23.07.2011 16:39 |
Получить переменную из чужого приложения | Djanius | Общие вопросы Delphi | 6 | 31.05.2011 22:42 |