как получить координату x,y строки в файловой панели?
Модераторы: d-view, Моторокер, Avada, CaptainFlint, Nik
как получить координату x,y строки в файловой панели?
Вот собственно и вопрос, как можно получить x,y произвольной (например, найденной сторонней утилитой) строки, или выделенной строки в файловой панели тотала? Я так понял, что тотал использует для файловых панелей списки типа TMyListBox, которые являются потомками от листбоксов стандартных.
Спасибо заранее за ответ.
Спасибо заранее за ответ.
- Вахмурка
- Сообщения: 2587
- Зарегистрирован: Пн дек 27, 2004 14:47
- Откуда: Большая деревня Москва
- Контактная информация:
Как ты представляешь себе координаты СТРОКИ? Строка - это как минимум прямоугольник. Имеется в виду координата, скажем, левого верхнего (как обычно) угла?
Если так, то единственное, что работает с координатами точки (из мне известного) - функция handlefrompoint плагина win для PowerPoint. Надо писать свой утиль.
Если так, то единственное, что работает с координатами точки (из мне известного) - функция handlefrompoint плагина win для PowerPoint. Надо писать свой утиль.
Да, кроме публичных бет 1 и 2 версии 7.50: там TMyListBox.UnicodeClassЯ так понял, что тотал использует для файловых панелей списки типа TMyListBox, которые являются потомками от листбоксов стандартных.
Сайт PowerPro+Total Commander
Скрипты PowerPro для Total Commander
* * *
«Не усматривайте злого умысла в том, что вполне объяснимо глупостью» (Р. Хэнлон)
Скрипты PowerPro для Total Commander
* * *
«Не усматривайте злого умысла в том, что вполне объяснимо глупостью» (Р. Хэнлон)
- CaptainFlint
- Сообщения: 6239
- Зарегистрирован: Вт дек 14, 2004 22:34
- Контактная информация:
- Вахмурка
- Сообщения: 2587
- Зарегистрирован: Пн дек 27, 2004 14:47
- Откуда: Большая деревня Москва
- Контактная информация:
Спасибо, CaptainFlint. PowerPro, конечно же. Заработался...
2zvyagaaa
Я, кажется, только сейчас смог перевести на русский слово "координата". Ты имеешь в виду "строка; столбец", а не "х; у" - это разные вещи! То есть ты ищешь положение СТРОКИ как если бы экран был в текстовом режиме, так? Тут уже можно подумать над классами, списками, отправкой сообщений и пр. Так что уточни задачу и посмотрим.
2zvyagaaa
Я, кажется, только сейчас смог перевести на русский слово "координата". Ты имеешь в виду "строка; столбец", а не "х; у" - это разные вещи! То есть ты ищешь положение СТРОКИ как если бы экран был в текстовом режиме, так? Тут уже можно подумать над классами, списками, отправкой сообщений и пр. Так что уточни задачу и посмотрим.
Сайт PowerPro+Total Commander
Скрипты PowerPro для Total Commander
* * *
«Не усматривайте злого умысла в том, что вполне объяснимо глупостью» (Р. Хэнлон)
Скрипты PowerPro для Total Commander
* * *
«Не усматривайте злого умысла в том, что вполне объяснимо глупостью» (Р. Хэнлон)
- Вахмурка
- Сообщения: 2587
- Зарегистрирован: Пн дек 27, 2004 14:47
- Откуда: Большая деревня Москва
- Контактная информация:
Жескто отшил и заинтриговал в одном флаконе
Сайт PowerPro+Total Commander
Скрипты PowerPro для Total Commander
* * *
«Не усматривайте злого умысла в том, что вполне объяснимо глупостью» (Р. Хэнлон)
Скрипты PowerPro для Total Commander
* * *
«Не усматривайте злого умысла в том, что вполне объяснимо глупостью» (Р. Хэнлон)
- Вахмурка
- Сообщения: 2587
- Зарегистрирован: Пн дек 27, 2004 14:47
- Откуда: Большая деревня Москва
- Контактная информация:
Если не затруднит
Сайт PowerPro+Total Commander
Скрипты PowerPro для Total Commander
* * *
«Не усматривайте злого умысла в том, что вполне объяснимо глупостью» (Р. Хэнлон)
Скрипты PowerPro для Total Commander
* * *
«Не усматривайте злого умысла в том, что вполне объяснимо глупостью» (Р. Хэнлон)
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;
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;
- Вахмурка
- Сообщения: 2587
- Зарегистрирован: Пн дек 27, 2004 14:47
- Откуда: Большая деревня Москва
- Контактная информация:
Спасибо
Сайт PowerPro+Total Commander
Скрипты PowerPro для Total Commander
* * *
«Не усматривайте злого умысла в том, что вполне объяснимо глупостью» (Р. Хэнлон)
Скрипты PowerPro для Total Commander
* * *
«Не усматривайте злого умысла в том, что вполне объяснимо глупостью» (Р. Хэнлон)
