Главная страница
    Top.Mail.Ru    Яндекс.Метрика
Форум: "Начинающим";
Текущий архив: 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
15-1233246083
AlexDan
2009-01-29 19:21
2009.04.05
ICQ 6.5


15-1233835334
Ega23
2009-02-05 15:02
2009.04.05
Знатоки JavaScript - посоветуйте


2-1234510283
нуб
2009-02-13 10:31
2009.04.05
Чекбокс в DBGrid


1-1209046362
Михаил
2008-04-24 18:12
2009.04.05
Как поместить картинку в диаграмму Excel ?


15-1233414772
axis_of_evil
2009-01-31 18:12
2009.04.05
переключение сетевых настроек





Afrikaans Albanian Arabic Armenian Azerbaijani Basque Belarusian Bulgarian Catalan Chinese (Simplified) Chinese (Traditional) Croatian Czech Danish Dutch English Estonian Filipino Finnish French
Galician Georgian German Greek Haitian Creole Hebrew Hindi Hungarian Icelandic Indonesian Irish Italian Japanese Korean Latvian Lithuanian Macedonian Malay Maltese Norwegian
Persian Polish Portuguese Romanian Russian Serbian Slovak Slovenian Spanish Swahili Swedish Thai Turkish Ukrainian Urdu Vietnamese Welsh Yiddish Bengali Bosnian
Cebuano Esperanto Gujarati Hausa Hmong Igbo Javanese Kannada Khmer Lao Latin Maori Marathi Mongolian Nepali Punjabi Somali Tamil Telugu Yoruba
Zulu
Английский Французский Немецкий Итальянский Португальский Русский Испанский