Top.Mail.Ru
Мастера DELPHI, Delphi programming community Титульная страница Поиск, карта сайта Написать письмо 
| Новости | Поиск | FAQ | Статьи | Книги | Новости VCL |
| Форумы ЧАТ | Орешник | KOL и MCK |
Форумы -» Основная («Начинающим»)/ Базы / WinAPI / Компоненты / Сети / Media / Игры / Corba и COM / KOL / FreePascal / .Net / Прочее / RSDN.ORG

« предыдущая ветвь | форум | следующая ветвь »

Взаимодействие с Edit [D7, WinXP]


Veon ©   (2006-03-05 18:22:00) 

Есть 2 приложения
1е - простой Edit на форме
2e - попытка им управлять.

Handle его я нахожу и вроде всё ок. только

GetWindowText - отдаёт пустую строку
хотя SetMessage (handle,WM_GETTEXT,PAnsichar) - возвращает текст
после того как отправляю wm_SETPASSWORDCHAR читать из Edit'a и менять его св-ва (даже отправить 2й wm_SETPASSWORDCHAR) не получаеться - GetLastError = Отказано в доступе
WM_SETTEXT меняет текст во всех случаях

Как бы сделать чтоб тот Edit не выпадал в "мороз" и продолжал работать


begin...end   (2006-03-12 22:20:00) [1]

> Veon   (11.03.06 19:28) [6]

ОК, ясно. Попробуйте DefWindowProc(EditHandle, WM_GETTEXT, ..., ...).


Veon   (2006-03-11 19:28:00) [2]

Всё правильное, другие API отрабатывают корректно

Отправил, заранее спасибо за помощь


begin...end   (2006-03-05 21:14:00) [3]

> Veon   (05.03.06 20:43) [4]

И значение хэндла ew, насколько я понимаю, правильное?

Если да, то просьба выслать 1-ю программу, если она невелика, на alexey.1983[гав]gmail.com. Аж интересно :)


Veon   (2006-03-05 20:43:00) [4]

var
s:array [0..100] of char;

if SendMessage(ew,WM_GETTEXT,100,integer(@s))>0 then Edit1.Text:=string(s)

Сорри, я код переписывал =/


begin...end   (2006-03-05 19:02:00) [5]

> Veon   (05.03.06 18:58) [2]

> var
> s:string[100];
> ...
> SendMessage(ew,WM_GETTEXT,100,integer(PChar(s)))

Не компилируется.


Veon   (2006-03-05 18:58:00) [6]


var
mw,Ew:THandle;
s:string[100];
begin
mw:=FindWindow('AUTO_WINDOW',nil);
if not (mw>0) then exit;

ew:=FindWindowEx(mw,0,'Edit',nil);
SendMessage(ew,EM_SETPASSWORDCHAR,ord('-'),0);

// начиная от сюда я получаю отказ в доступе
SendMessage(ew,EM_SETPASSWORDCHAR,ord('*'),0);
if SendMessage(ew,WM_GETTEXT,100,integer(PChar(s)))>0 then Edit1.Text:=s else
Edit1.Text:=SysErrorMessage(GetLastError());


begin...end   (2006-03-05 18:42:00) [7]

> Veon   (05.03.06 18:22)

> GetWindowText - отдаёт пустую строку
"This function cannot retrieve the text of an edit control in another application" (c) MSDN

> wm_SETPASSWORDCHAR
EM_SETPASSWORDCHAR?

> менять его св-ва
Какие?

> GetLastError = Отказано в доступе
Полный код можно увидеть?


Наверх

Титульная страница Поиск, карта сайта Написать письмо