![]() |
| ||
|
|
Новости |
Поиск |
FAQ |
Статьи |
Книги |
Новости VCL
| | Форумы ЧАТ |
Орешник |
|
| |||
| |||
« предыдущая ветвь | форум | следующая ветвь »
Надо взять строку из Едит бокса и Лэйбла [D5, Win95/98]
sadreg © (2002-09-21 15:24:00)Дарова Мастера, я снова мучаю вас своими вопросами :)
Мне нужно взять строку из Edit`а и Static`а.
При использовании GetWindowText (я думал ак получится :( Лэйбл мне возвращает "Яс", а едит боке вапче ниче :(
Заранее пасиба.
Gerda (2002-09-24 16:28:00) [1]Фсе БАЛЬШОЕ пасиба, фсе работает (мож я в тот день пива многа выпил, и не так чтота делал :), но вот терь надо вспоминать для чего это надо было мне :) шутка помню :)
Еще раз пасиба, дальше отвечать на вопрос нету смыса :)
Adept (2002-09-24 11:46:00) [2]Все віше написанное под ХР и её паролны едиты не пашет :(
Я прогу ннаписал Windows Controller она из чего угодно текст вытягивает (вобщем менеджер окно) кто хочет качайте там много чего по работе с окнами и процессами есть
adept7.kiev.ua
Diamond Cat (2002-09-24 02:32:00) [3]довольно корявый пример но тем не менее рабочий, могу добавить что для начала лучше послать WM_GETTEXTLENGTH , чтобы узнать кол-во символов содержащихся в контроле , или просто установить (исходя из вышеизложенного примера) txt: array[0..max_path] of char;
и отправлять SendMessage(tmp,WM_GETTEXT,syzeof(txt),integer(@txt)); но может вернуть кроме полезной инфы еще и кучу бреда
Codec (2002-09-23 22:26:00) [4]Вот, пожалуйста!
var
tmp: hWnd;
txt: array [1..10] of char; //количество символов в edit control"a
const
crdn: TPoint = (x:0;y:0); //координаты edit control"a
begin
tmp := WindowFromPoint(crdn);
SendMessage(tmp,WM_GETTEXT,10,integer(@txt));
ShowMessage(txt); //выведет тебе текст из контрола - полюбоваться :-))
end;
Желаю дальнейших успехов!
Gerda (2002-09-23 19:15:00) [5]Codec, вот так как раз не получается (записать туда чета так фсе пучком, а извлечь) ... если не влом то сливай (код) сюда sadreg@mail.ru, с лэйблами разобрался: GetWindowText(GetDlgItem(hFindWindow,ID),buf,50); ID - это ид лэйбла в ресурсах...
Codec (2002-09-23 17:01:00) [6]по поводу "This function cannot retrieve the text of an edit control in another application" могу сказать, что если знать позицию, где этот edit control будет находиться, то можно и взять из него текст и вставить туда ЕГО :-)). Показываю:
var
h: hWnd;
begin
h := WindowFromPoint(); //координаты edit control"а
SendMessage(h,GetWindowText(парам. sendmessage см. в SDK));
/работающий код приведу дополнительно, если заинтересовало/
end;
Gerda (2002-09-23 15:14:00) [7]Marcus, да это фсе хорошо но как же мне быть ?)
Marcus (2002-09-23 12:48:00) [8]В Win32 SDK сказано по поводу GetWindowText: "This function cannot retrieve the text of an edit control in another application"
Gerda (2002-09-23 09:29:00) [9]Да и еще с Лэйблом (Static) вапче лажа выходит :(, он мне постоянно "яс" выводит в ответ на sendmessage(...,wm_gettext,...,...), и GetWindowText(...);
Gerda (2002-09-23 09:25:00) [10]К сожалению не получается :( потому и спрашиваю.... (да вставить строку получается sendmessage(...,wm_settext,...,...))
Вот что мне надо сделать: найти все окна М$ ИЭксплорера и скопировать его адресную строку..... (мож это из-за того что там Едит находится в СомбоБоксе ?)
Вот такой вот фрагмент я накрапал....
function EnumChildWindowsProc(hChildWindow : hWnd; lParam : LongInt) : Bool // Функция в которую подаются найденые дочерние окна
{$IFDEF Win32} stdcall; {$ELSE} ; export; {$ENDIF}
var buf2,buf:array [0..100] of char;
begin
GetClassName(hChildWindow,buf,100);
if buf="Edit" then begin
GetWindowText(hChildWindow,buf2,100);
// SendMessage(hChildWindow,WM_GETTEXT,0,integer(@buf2));
Form1.ListBox1.Items.Add(buf2); // выводит надпись Програм Мэнэджэр, а если тута написать buf - то Edit :(
Exit;
end;
end;
//-----------------------------------------------------------
function EnumWindowsProc(hWindow : hWnd; lParam : LongInt) : Bool // Функция в которую подаются найденые окна
{$IFDEF Win32} stdcall; {$ELSE} ; export; {$ENDIF}
var buf:array [0..100] of char;
begin
Form1.ListBox1.Clear;
GetWindowText(hWindow,buf,100);
if StrPos(buf,PChar("Microsoft Internet Explorer"))<>nil
then begin
Inc(bColwWH);
hWindHandle[bColwWH]:=hWindow;
end;
Result := True;
end;
//MYMYMYMYMYMYMYMYMYMYMYMYMYMYMYMYMYMYMYMYMYMYMYMYMYMYMYMYMYMY
procedure TForm1.Button1Click(Sender: TObject);
var buf:array [0..100] of char;
i:byte;
begin
EnumWindows(@EnumWindowsProc,lParam(0));
for i:=1 to bColwWH do begin
EnumChildWindows(hWindHandle[i],@EnumChildWindowsProc,0);
end;
end;
Пасиба...
Diamond Cat (2002-09-22 00:45:00) [11]sendmessage(...,wm_gettext,...,...)