![]() |
| ||
|
|
Новости |
Поиск |
FAQ |
Статьи |
Книги |
Новости VCL
| | Форумы ЧАТ |
Орешник |
|
| |||
| |||
« предыдущая ветвь | форум | следующая ветвь »
как получить handle контрола на чужей форме
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