Главная страница
    Top.Mail.Ru    Яндекс.Метрика
Форум: "WinAPI";
Текущий архив: 2002.12.16;
Скачать: [xml.tar.bz2];

Вниз

Как послать текст определённому Edit в чужой программе?   Найти похожие ветки 

 
Lexa1900   (2002-11-01 20:38) [0]

Посылая в Edit другой программы текст я делаю следующее:

var h:hwnd;
begin
h:=FindWindow(nil,"<Кэпшн формы>");
if h<>0 then
h:=FindWindowEX(h,0,"TEdit",nil);
if h<>0 then
SendMessage(h,wm_paste ,0,0);

end;

А как послать текст определённому Edit"у ?
Спасибо.


 
Viktor Kushnir   (2002-11-02 08:53) [1]

Я делал так:

Text :String;
...
SendMessage(VWnd1,WM_SETTEXT,0,Longint(PChar(Text)));


 
Lexa1900   (2002-11-02 12:59) [2]

Спасибо, за облегчение передачи, но как всё-таки передать конкретному Edit"y ?


 
Arcus   (2002-11-02 13:47) [3]

> ...как всё-таки передать конкретному Edit"y ?
Надо знать handle конкретного Edit"а. Найти его проще, если известен его ControlID. Иначе придется перебирать все дочерние окна и проверять - не оно ли.


 
Lexa1900   (2002-11-02 14:21) [4]

А что это за ContolID? Как их можно узнать?


 
Arcus   (2002-11-02 16:50) [5]

В общем-то у каждого приличного контрола есть свой ID...
В чужом окне его можно узнать либо через что-то типа WinSight,
либо через функцию GetWindowLong(Handle, GWL_ID) (но там нужен искомый хэндл :) ). Иначе придется перебирать все дочерние окна через EnumChildWindows


 
Lexa1900   (2002-11-02 17:03) [6]

А можно ли узнать handle компонента (кнопки или edit"a), когда щёлкаешь по нему (или вводишь текст) в другой программе?


 
Arcus   (2002-11-02 17:51) [7]

Поскольку пора домой, то
см. ниже процедуру, которая извлекает текст из специфического контрола с неизвестным ID путем перебора всех контролов в диалоге и определением искомого контрола по стилю (варианты - по размеру;по местоположению; по тексту). Wnd - хэндл диалога.

var Wnd: HWND;
lParam: Longint

function EnumChildProc(Wnd: HWND; lParam: Longint): BOOL; stdcall;
var Buf: array[0..255] of char;
begin
...
if (GetClassName(Wnd, Buf, Length(Buf)) = 0) or (Buf <> "Static") then Exit;//соотв. проверяй на нужный класс (едит или кнопку)
//выделение искомого контрола среди других
lParam:= GetWindowLong(Wnd, GWL_STYLE);
if (lparam and SS_ICON) <> 0 then Exit;
//
GetWindowText(Wnd, Buf, Length(Buf));
...
end;

begin
...
EnumChildWindows(Wnd, @EnumChildProc, lParam);
...
end;


 
Lexa1900   (2002-11-02 20:10) [8]

А что дают эти строки, что они значут?

lParam:= GetWindowLong(Wnd, GWL_STYLE);
if (lparam and SS_ICON) <> 0 then
Exit;
GetWindowText(Wnd, Buf, Length(Buf));


 
Ihor Osov'yak   (2002-11-02 21:29) [9]

2 Lexa1900 (02.11.02 17:03) возьми spy++ от vs, там это делается за четыре щелчка мышью.


 
Viktor Kushnir   (2002-11-03 09:07) [10]

В принципе WinSight32, в Дельфи тоже самое делает.


 
Arcus   (2002-11-04 11:31) [11]

to Lexa1900
Говорят же люди, что через WinSight32 это проще сделать...

>А что дают эти строки, что они значут?
Это выделение нужного МНЕ контрола из числа прочих. ВАМ нужен некий едитбокс.
GetClassName возвращает ClassName. Если это не "Edit", то сразу отбрасываем.
Если в диалоге один едитбокс, то все - он найден. GetWindowLong(Handle, GWL_ID) - дает его ID.





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

Форум: "WinAPI";
Текущий архив: 2002.12.16;
Скачать: [xml.tar.bz2];

Наверх





Память: 0.46 MB
Время: 0.007 c
3-51640
Kurt
2002-11-23 15:43
2002.12.16
Не подскажите как в CtrlGride выделять цветом поля нужных строк?


4-52017
cecist
2002-11-04 16:03
2002.12.16
праграммный ввод пароле в Windows2000


3-51642
Дмитрий Орехов
2002-11-27 16:19
2002.12.16
Проблема с тригером


6-51855
delpher_gray
2002-10-16 13:09
2002.12.16
Передача файлов через сокеты


1-51822
BlackTiger
2002-12-03 21:27
2002.12.16
Multilanuage или Я ХОЧУ ЗАМОЧИТЬ БОРЛАНДОВЦЕВ !!!





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
Английский Французский Немецкий Итальянский Португальский Русский Испанский