Главная страница
Top.Mail.Ru    Яндекс.Метрика
Текущий архив: 2002.11.07;
Скачать: CL | DM;

Вниз

Надо взять строку из Едит бокса и Лэйбла   Найти похожие ветки 

 
sadreg   (2002-09-21 15:24) [0]

Дарова Мастера, я снова мучаю вас своими вопросами :)
Мне нужно взять строку из Edit`а и Static`а.
При использовании GetWindowText (я думал ак получится :( Лэйбл мне возвращает "Яс", а едит боке вапче ниче :(
Заранее пасиба.


 
Diamond Cat ©   (2002-09-22 00:45) [1]

sendmessage(...,wm_gettext,...,...)


 
Gerda ©   (2002-09-23 09:25) [2]

К сожалению не получается :( потому и спрашиваю.... (да вставить строку получается 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;

Пасиба...


 
Gerda ©   (2002-09-23 09:29) [3]

Да и еще с Лэйблом (Static) вапче лажа выходит :(, он мне постоянно "яс" выводит в ответ на sendmessage(...,wm_gettext,...,...), и GetWindowText(...);


 
Marcus   (2002-09-23 12:48) [4]

В Win32 SDK сказано по поводу GetWindowText: "This function cannot retrieve the text of an edit control in another application"


 
Gerda ©   (2002-09-23 15:14) [5]

Marcus, да это фсе хорошо но как же мне быть ?)


 
Codec   (2002-09-23 17:01) [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 19:15) [7]

Codec, вот так как раз не получается (записать туда чета так фсе пучком, а извлечь) ... если не влом то сливай (код) сюда sadreg@mail.ru, с лэйблами разобрался: GetWindowText(GetDlgItem(hFindWindow,ID),buf,50); ID - это ид лэйбла в ресурсах...


 
Codec   (2002-09-23 22:26) [8]

Вот, пожалуйста!

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;


Желаю дальнейших успехов!


 
Diamond Cat ©   (2002-09-24 02:32) [9]

довольно корявый пример но тем не менее рабочий, могу добавить что для начала лучше послать WM_GETTEXTLENGTH , чтобы узнать кол-во символов содержащихся в контроле , или просто установить (исходя из вышеизложенного примера) txt: array[0..max_path] of char;

и отправлять SendMessage(tmp,WM_GETTEXT,syzeof(txt),integer(@txt)); но может вернуть кроме полезной инфы еще и кучу бреда


 
Adept   (2002-09-24 11:46) [10]

Все віше написанное под ХР и её паролны едиты не пашет :(
Я прогу ннаписал Windows Controller она из чего угодно текст вытягивает (вобщем менеджер окно) кто хочет качайте там много чего по работе с окнами и процессами есть

adept7.kiev.ua


 
Gerda ©   (2002-09-24 16:28) [11]

Фсе БАЛЬШОЕ пасиба, фсе работает (мож я в тот день пива многа выпил, и не так чтота делал :), но вот терь надо вспоминать для чего это надо было мне :) шутка помню :)
Еще раз пасиба, дальше отвечать на вопрос нету смыса :)



Страницы: 1 вся ветка

Текущий архив: 2002.11.07;
Скачать: CL | DM;

Наверх




Память: 0.5 MB
Время: 0.023 c
3-21414
grusty
2002-10-17 15:35
2002.11.07
Как добавить новое поле в уже сужествующую таблицу?


14-21781
TankMan
2002-10-18 22:39
2002.11.07
Icon-ка левого exe в SpeedButton


14-21778
Феликс
2002-10-17 23:07
2002.11.07
Помогите придумать название для программы?


1-21604
Beginner-Designer
2002-10-25 19:47
2002.11.07
проблема с использованием горячих клавиш


1-21531
DimaC.
2002-10-29 12:04
2002.11.07
StringGrid - как организовать центровку данных в ячейке...?