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

Вниз

Работа с чужими приложениями.   Найти похожие ветки 

 
vanek_kg   (2005-10-18 08:09) [0]

Доброго всем времени суток.

Ситуация такая: в чухом приложении необходимо в поле ввода вставить текст, но это поле ввода только для чтения, поэтому SetText не работает.

Как перевести поле ввода в режим редактирования?

Заранее благодарен.


 
begin...end ©   (2005-10-18 08:20) [1]

> vanek_kg   (18.10.05 08:09)

Речь идёт о edit-контроле?

Если не ошибаюсь, WM_SETTEXT должно работать независимо от наличия стиля ES_READONLY. Может быть, не работает по другой причине?

Ну а вообще edit переводится в режим редактирования посылкой EM_SETREADONLY с параметром wParam = Integer(False).


 
vanek_kg   (2005-10-18 08:25) [2]

Да, это Edit-контрол.
Ну а можно узнать возможные причины почему текст не вставлется?

ICQ: 247571693


 
begin...end ©   (2005-10-18 08:27) [3]

> vanek_kg   (18.10.05 08:25) [2]
> Ну а можно узнать возможные причины почему текст не вставлется?

А как вставляете? Код можно увидеть?
Кстати, есть уверенность в том, что хендл правильный?


 
vanek_kg   (2005-10-18 08:37) [4]


 var wnd, edt: hWnd;
 strbase: string;
begin
wnd := FindWindow(nil, "Customisation-Tool V1.05");
if wnd <> 0 then begin
  windows.SetForegroundWindow(wnd);
  while edt = 0 do FindWindowEx(wnd, 0, "Edit", "");
  if edt <> 0 then begin
    strbase := "c:\";  
    SendMessage(edt, WM_Settext, 0, Integer(StrBase));
  end
  else ShowMessage("Не нашел поле ввода!");
end
else ShowMessage("Окно не найдено!");
end;


Хендл правильный с уверенностью на 70%.


 
begin...end ©   (2005-10-18 08:48) [5]

> vanek_kg   (18.10.05 08:37) [4]

> while edt = 0

А зачем while?

> Хендл правильный с уверенностью на 70%.

Ну попробуйте ему другое сообщение послать, чтобы убедиться окончательно.

Например: SendMessage(edt, EM_SETSEL, 0, -1). Текст выделяется?


 
vanek_kg   (2005-10-18 08:51) [6]

Кстати сказать...
можно ли где-то подглядеть, может он действительно хендл неправильно определяет?


 
vanek_kg   (2005-10-18 08:58) [7]

Цикл.. потому что их там несколько!

(Если самому запустить программу, то в поле ввода нельзя ничего написать, вставить из буфера и  так далее. Но строка туда вставляется, после выбора файла из диалога "Открыть файл").


 
begin...end ©   (2005-10-18 09:05) [8]

> vanek_kg   (18.10.05 08:58) [7]

> Цикл.. потому что их там несколько!

И что? Т.к. в FindWindowEx не изменяется второй параметр, то на каждой итерации цикла будет находиться один и тот же edit. Цикл завершится после первого прохода (если edit есть), или не завершится вообще (если edit"а нет).

Всё-таки попробуйте [5], только лучше с каким-нибудь другим сообщением. Например, SendMessage(edt, EM_SETPASSWORDCHAR, Integer("*"), 0).


 
begin...end ©   (2005-10-18 09:11) [9]

> vanek_kg   (18.10.05 08:51) [6]

> можно ли где-то подглядеть, может он действительно хендл
> неправильно определяет?

Например, посмотреть на значение хэндла пропраммой Spy++ (есть в комплекте MS Visual Studio).


 
vanek_kg   (2005-10-18 09:19) [10]

Не работает ни [5] ни [8].
Причем если избавиться от цикла, то он поле ввода не находит.


 
vanek_kg   (2005-10-18 09:20) [11]


> Например, посмотреть на значение хэндла пропраммой Spy++
> (есть в комплекте MS Visual Studio).


А другого ничего не можете предложить?


 
begin...end ©   (2005-10-18 09:29) [12]

> vanek_kg   (18.10.05 09:19) [10]

Ёпрст! А где же присвоение значения переменной edt?!


 
vanek_kg   (2005-10-18 09:33) [13]


> Ёпрст! А где же присвоение значения переменной edt?!


Уфхцч...! Цикл то я убрал, а присвоение оставил!


 edt := FindWindowEx(wnd, 0, "Edit", "");


А в [4] просто пропустил наверное, потому что писал по памяти!


 
begin...end ©   (2005-10-18 09:46) [14]

> vanek_kg   (18.10.05 09:33) [13]

Так сейчас вообще не находит? Может быть, edit этот не принадлежит окну с заголовком "Customisation-Tool V1.05"? В смысле, может быть, он на какой-нибудь панели лежит? Тогда надо сначала панель найти.

> vanek_kg   (18.10.05 09:20) [11]

Не могу. Могу выслать Spy++. 121 КБ.


 
vanek_kg   (2005-10-18 09:49) [15]


> Так сейчас вообще не находит? Может быть, edit этот не принадлежит
> окну с заголовком "Customisation-Tool V1.05"? В смысле,
> может быть, он на какой-нибудь панели лежит? Тогда надо
> сначала панель найти.


Возможно конечно...

Если не трудно выслать вот мой ящик: vanek1982@mail.ru

А аськи случайно нет?


 
begin...end ©   (2005-10-18 09:55) [16]

> vanek_kg   (18.10.05 09:49) [15]

Отправил.

> А аськи случайно нет?

Нет.


 
vanek_kg   (2005-10-18 09:56) [17]

Спасибо огромное и за помощь и за программу!


 
vanek_kg   (2005-10-18 10:00) [18]

UPS!!!
Незадача требует библиотеку SpyHk55.dll.


 
vanek_kg   (2005-10-18 10:07) [19]

Уже нашел!
Еще раз спасибо!


 
evvcom ©   (2005-10-19 16:16) [20]


> > можно ли где-то подглядеть, может он действительно хендл
>
> > неправильно определяет?
>
> Например, посмотреть на значение хэндла пропраммой Spy++
> (есть в комплекте MS Visual Studio).

А нафиг Spy, если с Дельфями идет WinSight32?



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

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

Наверх




Память: 0.51 MB
Время: 0.044 c
5-1116502039
andrey__
2005-05-19 15:27
2005.12.18
Как в DBGrid ячейку вставить CheckBox


6-1125580635
Delphi_is_cool
2005-09-01 17:17
2005.12.18
WinSock и ICQ


6-1125675465
Petay
2005-09-02 19:37
2005.12.18
Подскажите, а можно звук передовать по сети в режиме онлайн


2-1133336077
julai
2005-11-30 10:34
2005.12.18
DLL


14-1132924328
_Seldon_
2005-11-25 16:12
2005.12.18
как обмануть фильтр на прокси сервере