Форум: "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.022 c