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

Вниз

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

 
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 вся ветка

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

Наверх





Память: 0.49 MB
Время: 0.015 c
2-1133344518
Piero
2005-11-30 12:55
2005.12.18
алгоритм поиска элемента в массиве


14-1132490094
AlexShm
2005-11-20 15:34
2005.12.18
7-я или 8-я?


1-1132744928
К00е
2005-11-23 14:22
2005.12.18
Как заблокировать ctrl+alt+f1 комбинацию в litestep?


1-1131899674
Toxa_ua
2005-11-13 19:34
2005.12.18
Как в компонент ListBox вставить в фон картинку jpeg?


1-1132204080
pAhA
2005-11-17 08:08
2005.12.18
Как можно определить активно ли окно приложения?





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