Страница 1 из 1
как получить координату x,y строки в файловой панели?
Добавлено: Вс сен 13, 2009 14:16
zvyagaaa
Вот собственно и вопрос, как можно получить x,y произвольной (например, найденной сторонней утилитой) строки, или выделенной строки в файловой панели тотала? Я так понял, что тотал использует для файловых панелей списки типа TMyListBox, которые являются потомками от листбоксов стандартных.
Спасибо заранее за ответ.
Добавлено: Вс сен 13, 2009 20:08
Вахмурка
Как ты представляешь себе координаты СТРОКИ? Строка - это как минимум прямоугольник. Имеется в виду координата, скажем, левого верхнего (как обычно) угла?
Если так, то единственное, что работает с координатами точки (из мне известного) - функция handlefrompoint плагина win для PowerPoint. Надо писать свой утиль.
Я так понял, что тотал использует для файловых панелей списки типа TMyListBox, которые являются потомками от листбоксов стандартных.
Да, кроме публичных бет 1 и 2 версии 7.50: там TMyListBox.UnicodeClass
Добавлено: Вс сен 13, 2009 21:24
CaptainFlint
Вахмурка писал(а):плагина win для PowerPoint
Плагина для
кого?

Добавлено: Вс сен 13, 2009 21:46
Вахмурка
Спасибо, CaptainFlint. PowerPro, конечно же. Заработался...
2zvyagaaa
Я, кажется, только сейчас смог перевести на русский слово "координата". Ты имеешь в виду "строка; столбец", а не "х; у" - это разные вещи! То есть ты ищешь положение СТРОКИ как если бы экран был в текстовом режиме, так? Тут уже можно подумать над классами, списками, отправкой сообщений и пр. Так что уточни задачу и посмотрим.
Добавлено: Пн сен 14, 2009 16:14
zvyagaaa
Вахмурка
нет, я имею в виду то, что я имею в виду.
Я правда, уже разобрался что к чему. И в-общем-то уже даже это реализовал, что хотел.

Добавлено: Вт сен 15, 2009 14:30
Вахмурка
Жескто отшил и заинтриговал в одном флаконе
Добавлено: Чт сен 17, 2009 06:36
zvyagaaa
если кому интересно - могу поделиться информацией.
Добавлено: Чт сен 17, 2009 08:23
Вахмурка
Если не затруднит
Добавлено: Чт сен 17, 2009 17:43
zvyagaaa
var dwTargetOwner: DWORD; // указатель на подключаемый процесс
dwThreadID: DWORD;
ListBoxHnd: hwnd;
t, l: Integer;
Resulted: Boolean; // метка присоединения чужого процесса
itemindex: Integer; // указатель на текущий процесс
itemrect: TRect; // рамка вокруг позиции
ListBoxRect: TRect; // рамка вокруг окна
begin
dwTargetOwner:= GetWindowThreadProcessId(GetForegroundWindow, nil);
dwThreadID:= GetCurrentThreadId(); // указатель на текущий процесс
if (dwTargetOwner <> dwThreadID) then // если не один и тот же процесс
Resulted:= AttachThreadInput(dwThreadID, dwTargetOwner, TRUE);
// подключение
ListBoxHnd:= GetFocus;
itemindex:= SendMessage(ListBoxHnd, lb_GetCurSel, wParam(0), lParam(0));
itemrect:= Rect(0, 0, 0, 0);
SendMessage(ListBoxHnd, LB_GETITEMRECT, wParam(itemindex), lParam
(Integer(@itemrect)));
GetWindowRect(ListBoxHnd, ListBoxRect);
t:= itemrect.Bottom + ListBoxRect.Top;
l:= itemrect.Left + 20 + ListBoxRect.Left;
Добавлено: Пт сен 18, 2009 12:08
Вахмурка
Спасибо