Форум: "Начинающим";
Текущий архив: 2009.04.05;
Скачать: [xml.tar.bz2];
ВнизСкопировать данные с помощью API функций Найти похожие ветки
← →
Krozzz (2009-02-17 20:41) [40]
> Есть серьезные сомнения, что таким образом Вы ее действительно
> решили. Без шуток. Не знаю всех условий Вашей реальной задачи,
> но в общем случае GetWindowText проблему, обозначенную
> в сабже, не решает. Поэтому, не исключено, что Вам только
> кажется, что Вы ее и в самом деле решили - из-за недостаточного
> объема тестирования.<Цитата>
>
>
>
В общем случае не решает, но мне достаточно один раз скопировать содержимое Edit и на этом остановиться (хотя при изменении содержимого того Edit"а в запущенной программе, данной функции уже не хватает).
← →
Юрий Зотов © (2009-02-17 21:05) [41]> Krozzz (17.02.09 20:41) [40]
Похоже, Вы все же заблуждаетесь. Вот выдержки из описания GetWindowText:
If the target window is owned by another process and has a caption, GetWindowText retrieves the window caption text. If the window does not have a caption, the return value is a null string.
To retrieve the text of a control in another process, send a WM_GETTEXT message directly instead of calling GetWindowText.
А ведь про WM_GETTEXT Вам сказали уже давно...
← →
Krozzz (2009-02-17 23:06) [42]
> Похоже, Вы все же заблуждаетесь.
Вот код. Работает так, как я описал в предыдущем посте.procedure TForm1.Button1Click(Sender: TObject);
var wnd:hwnd;
b:array [0..127] of char;
begin
wnd:=FindWindow("TFormN",nil);
wnd:=FindWindowEx(wnd,0,"TEdit",nil);
GetWindowtext(wnd,b,Sizeof(b));
Edit1.text:=b;
end;
С WM_GETTEXT работает при условии внесения изменений в программу-источник (что в моем случае нежелательно).
← →
clickmaker © (2009-02-17 23:10) [43]> [42] Krozzz (17.02.09 23:06)
TFormN в другом процессе?
← →
Krozzz (2009-02-17 23:12) [44]clickmaker
> TFormN в другом процессе?
Да
← →
clickmaker © (2009-02-17 23:25) [45]и при каких изменениях работает WM_GETTEXT?
← →
Юрий Зотов © (2009-02-17 23:35) [46]GetWindowtext(wnd, @b, Sizeof(b));
Адрес b, а не просто b. См. описание функции.
А насчет того, что работает только при каких-то там изменениях - здесь точно путаница. При правильном коде должно работать всегда.
← →
Юрий Зотов © (2009-02-17 23:41) [47]Причем, если верить справке (а с чего бы ей не верить?), то как раз GetWindowText не должно работать никогда (потому что "This function cannot retrieve the text of an edit control in another application"), а вот WM_GETTEXT - как раз всегда. И никакие изменения тут ни при чем.
← →
Германн © (2009-02-18 01:07) [48]
> Krozzz (17.02.09 16:17) [38]
>
...
> (кроме, разве что, Германн"а.
> Вы, кроме как критиковать ничего не умеете?..
>
Я много чего умею. Но умело скрываю свои умения! :)
> Юрий Зотов © (17.02.09 23:35) [46]
>
> GetWindowtext(wnd, @b, Sizeof(b));
>
> Адрес b, а не просто b.
А разве в случае статического массива "b:array [0..127] of char;"
это не одно и то же?
← →
Krozzz (2009-02-18 18:49) [49]
> Юрий Зотов and clickmaker
Извиняюсь, промахнулся. Изменения надо вносить с WM_COPYDATA.
Насчет WM_GETTEXT: программа не работала из-за внесения названия
компонента как 4го параметра в FindWindowEx.
Вот правильный код:procedure TForm1.Button1Click(Sender: TObject);
var
wnd:hwnd;
b:array [0..127] of char;
begin
Edit1.text:="";
wnd:=FindWindow("TFormN",nil);
wnd:=FindWindowEx(wnd,0,"TEdit",nil);(* при FindWindowEx(wnd,0,"TEdit","Edit1") не работает *)
Sendmessage(wnd,wm_gettext,sizeof(b),Lparam(@b));
Edit1.text:=b;
end;
> Юрий Зотов
</I
> как раз GetWindowText не должно работать никогда
>
Код, приведенный в [42], лично у меня работает для символов латиница+цифры (для других не проверял).
← →
Германн © (2009-02-19 00:37) [50]
> Насчет WM_GETTEXT: программа не работала из-за внесения
> названия
> компонента как 4го параметра в FindWindowEx.
>
>
> Это не на форумах надо спрашивать. Это надо изучать по книгам,
> причём достаточно серьёзным. Если речь идёт про WinAPI
> функции, то нужно абсолютно точно понимать, что никаких
> "компонент" они не знали, не знают и знать не хотят. Они
> знают только "окна" (windows).
Извини, что опять "критикую", но...
Страницы: 1 2 вся ветка
Форум: "Начинающим";
Текущий архив: 2009.04.05;
Скачать: [xml.tar.bz2];
Память: 0.54 MB
Время: 0.009 c