Top.Mail.Ru
Мастера DELPHI, Delphi programming community Титульная страница Поиск, карта сайта Написать письмо 
| Новости | Поиск | FAQ | Статьи | Книги | Новости VCL |
| Форумы ЧАТ | Орешник | KOL и MCK |
Форумы -» Основная («Начинающим»)/ Базы / WinAPI / Компоненты / Сети / Media / Игры / Corba и COM / KOL / FreePascal / .Net / Прочее / RSDN.ORG

« предыдущая ветвь | форум | следующая ветвь »

как получить handle контрола на чужей форме


Страницы:   1 2

Mell ©   (2004-07-21 13:54:00) 

как получить handle  контрола на чужей форме


Digitman   (2004-07-22 13:23:00) [1]


> Mell ©   (22.07.04 13:22) [30]
> Урррррра!!!!!!!!!!!!!!!!!!!!!!!!!!


угу ... ура, наша бабушка - самец


Mell   (2004-07-22 13:22:00) [2]

Урррррра!!!!!!!!!!!!!!!!!!!!!!!!!!


Mell   (2004-07-22 13:07:00) [3]

и как я массиву могу новую длину задать?


Digitman   (2004-07-22 12:45:00) [4]


> как я могу угадать сколько текста там будет


гадают шаманы ... с бубном ..

программисты же, когда им дают подсказку, бегом дуют в справку и обнаруживают там, что для "гадания" есть еще ф-ция getwindowtextlength


Mell   (2004-07-22 12:38:00) [5]

а как я могу угадать сколько текста там будет???


Digitman   (2004-07-22 12:32:00) [6]


> ничего не пашет


см. VMcL ©   (22.07.04 11:51) [16] , п.1


> если текст больше 255 символов


значит и буфер приема t следует увеличить так чтобы "хватало"


Mell   (2004-07-22 12:29:00) [7]

to Rouse_ блин если текст больше 255 символов то ничего не пашет!!!!!Help me


Digitman   (2004-07-22 12:27:00) [8]

ДГДЛ


Rouse_   (2004-07-22 12:26:00) [9]

> [22] Mell ©   (22.07.04 12:11)
Которые у тебя же в программе находятся?
Если да то почитай хелп по GetFocus

По поводу копирования текста вот тебе еще одна выдержка...

For an edit control, the text to be copied is the content of the edit control. For a combo box, the text is the content of the edit control (or static-text) portion of the combo box. For a button, the text is the button name. For other windows, the text is the window title. To copy the text of an item in a list box, an application can use the LB_GETTEXT message.
When the WM_GETTEXT message is sent to a static control with the SS_ICON style, the handle of the icon will be returned in the first four bytes of the buffer pointed to by lpszText. This is true only if the WM_SETTEXT message has been used to set the icon.

In a rich edit control, if the text to be copied exceeds 64K, use either the message EM_STREAMOUT or EM_GETSELTEXT.


Mell   (2004-07-22 12:11:00) [10]

а почему тогда она работает на richedit? и button если не вызывать AttachThreadInput?


Rouse_   (2004-07-22 12:10:00) [11]

Для проверки сделай Пуск-выполнить и набирай там текст...


Rouse_   (2004-07-22 12:09:00) [12]

хм...

procedure TForm1.Timer1Timer(Sender: TObject);
var
 Buff: array[0..255] of Char;
 ForegrowndWindow, WindowProcessID: HWND;
begin
 ForegrowndWindow := GetForegroundWindow;
 WindowProcessID := GetWindowThreadProcessId(ForegrowndWindow);
 if AttachThreadInput(WindowProcessID, GetCurrentThreadId, True) then
 begin
   FillChar(Buff, SizeOf(Buff), #0);
   SendMessage(GetFocus, WM_GETTEXT, SizeOf(Buff), Integer(@Buff));
   Memo1.Lines.Add(String(Buff));
 end;
end;


ЮрийК   (2004-07-22 12:04:00) [13]

getwindowtext наверное должен получить window caption, а у данного контрола его типа нет.

SendMessage(...SelText...{типа селектировать текст}...)
SendMessage(...CopyText...)

Смотрите в Хелпах SendMessage и передаваемые константы в функцию для селектирования и копирования текста.


VMcL   (2004-07-22 12:01:00) [14]

>>Mell ©  (22.07.04 11:56) [17]

>я спрашиваю почему текст не копируется в мемо

getwindowtext - это функция.


Mell   (2004-07-22 11:56:00) [15]

В Делфи7 один второй по умолчанию = nil
компилятор не ругается
я спрашиваю почему текст не копируется в мемо


VMcL   (2004-07-22 11:51:00) [16]

>> Mell  (22.07.04 11:43) [15]

> Что неверно почему не пашет?

1. Пашет колхозник в поле.
2. Что именно не работает, наверное, нужно угадать.
3. Что ж, попробуем угадать: почему у getwindowthreadprocessid один параметр?


Mell   (2004-07-22 11:43:00) [17]


procedure TForm1.Timer1Timer(Sender: TObject);
var
t:array[0..255] of char;
begin
if windows.AttachThreadInput(getwindowthreadprocessid(getforegroundwindow),getcurrentthreadid,true) then
begin
getwindowtext(getfocus,t,sizeof(t));
memo1.Text:=t;
end;
end;

Что неверно почему не пашет?


Rouse_   (2004-07-22 10:23:00) [18]

Блин :)
http://msdn.microsoft.com/
http://search.microsoft.com/search/search.aspx?View=msdn


Mell   (2004-07-22 10:00:00) [19]

е где взять msdn?


Юрий Зотов   (2004-07-21 16:49:00) [20]

GetWindowThreadProcessID + AttachThreadInput + GetFocus
Примеры см. в MSDN


Страницы:   1 2

Наверх

Титульная страница Поиск, карта сайта Написать письмо