Форум программистов
 

Восстановите пароль или Зарегистрируйтесь на форуме, о проблемах и с заказом рекламы пишите сюда - alarforum@yandex.ru, проверяйте папку спам!

Вернуться   Форум программистов > Низкоуровневое программирование > Win Api
Регистрация

Восстановить пароль
Повторная активизация e-mail

Купить рекламу на форуме - 42 тыс руб за месяц

Ответ
 
Опции темы Поиск в этой теме
Старый 11.06.2008, 16:02   #1
Lich
Пользователь
 
Регистрация: 03.06.2008
Сообщений: 31
По умолчанию Получаю хендл окна виндовского калькулятора

Вопрос вот в чем состоит:
Получаю хендл окна виндовского калькулятора, затем получаю хендл кнопки с текстом допустим "9"...Пытаюся изменить текст с помощью sendmessage (wnd,wm_settext,0,lparam(lpctstr('\ \\')));, но результата не видно (графически), а посмотрев с помощью WinSpy на эту кнопку видно, что текст изменился, хотя графически молчит...Как сделать так, что бы было видно результат?
И еще, всем известен QIP, так вот я не могу в нем получить хендл компонента Trichviewedit. Сначала определяю главное окно, но когда прописую дочернее, оно просто не находит....Подскажите..
Lich вне форума Ответить с цитированием
Старый 11.06.2008, 16:10   #2
Stilet
Белик Виталий :)
Старожил
 
Аватар для Stilet
 
Регистрация: 23.07.2007
Сообщений: 57,097
По умолчанию

Цитата:
хотя графически молчит
Отправь ему еще WM_PAINT
I'm learning to live...
Stilet вне форума Ответить с цитированием
Старый 11.06.2008, 16:19   #3
Lich
Пользователь
 
Регистрация: 03.06.2008
Сообщений: 31
По умолчанию

wnd[1]:=findwindow('Scicalc',nil);
wnd[1]:=findwindowex(wnd[1],0,'Button','5');
if iswindow(wnd[1]) then begin
form1.Caption:='OK';
sendmessage(wnd[1],wm_settext,0,lparam(lpctstr('s'))) ;
sendmessage(wnd[1],wm_paint,0,0);

всеровно, не получается, есть мысли? или может что-то не так я делаю?
Lich вне форума Ответить с цитированием
Старый 11.06.2008, 19:13   #4
Ring0Sn
Форумчанин
 
Аватар для Ring0Sn
 
Регистрация: 06.09.2007
Сообщений: 239
По умолчанию

при отрисовки, каптион никак не влияет на то что отображает кнопка, других соображений нет, WM_PAINT непричем тут...
кальк в отладчикнах

Последний раз редактировалось Ring0Sn; 11.06.2008 в 19:27.
Ring0Sn вне форума Ответить с цитированием
Старый 11.06.2008, 20:01   #5
slm
Пользователь
 
Регистрация: 09.05.2008
Сообщений: 40
По умолчанию

SetWindowText(hWnd, PChar('твой вариант кнопки'));
SendMessage(hWnd, WM_SETREDRAW, 1, 0);
У меня работает
slm вне форума Ответить с цитированием
Старый 12.06.2008, 13:16   #6
Ring0Sn
Форумчанин
 
Аватар для Ring0Sn
 
Регистрация: 06.09.2007
Сообщений: 239
По умолчанию

Цитата:
Сообщение от slm Посмотреть сообщение
SetWindowText(hWnd, PChar('твой вариант кнопки'));
SendMessage(hWnd, WM_SETREDRAW, 1, 0);
У меня работает
Неработает, говорюж отрисовка тут непричем!

Последний раз редактировалось Ring0Sn; 12.06.2008 в 13:19.
Ring0Sn вне форума Ответить с цитированием
Старый 16.06.2008, 14:02   #7
Somebody
Участник клуба
 
Регистрация: 08.10.2007
Сообщений: 1,185
По умолчанию

Есть мысль: не менять текст окна, а менять память процесса. Вроде помогает (на рисунке результат). Сначала запустить ArtMoney (новая игрушка - калькулятор!), поискать, где этот текст, а потом в проге в своей WriteProcessMemory.
Изображения
Тип файла: jpg Calc.jpg (30.9 Кб, 135 просмотров)
Somebody вне форума Ответить с цитированием
Старый 16.06.2008, 21:04   #8
Ring0Sn
Форумчанин
 
Аватар для Ring0Sn
 
Регистрация: 06.09.2007
Сообщений: 239
По умолчанию

Цитата:
Сообщение от Somebody Посмотреть сообщение
Есть мысль: не менять текст окна, а менять память процесса. Вроде помогает (на рисунке результат). Сначала запустить ArtMoney (новая игрушка - калькулятор!), поискать, где этот текст, а потом в проге в своей WriteProcessMemory.
Хах, какой умный
Ясн пень, что это будет работать, но стоит ли оно того??? если только ТС вирус пишет

Последний раз редактировалось Ring0Sn; 16.06.2008 в 21:13.
Ring0Sn вне форума Ответить с цитированием
Старый 01.07.2008, 10:43   #9
Stilet
Белик Виталий :)
Старожил
 
Аватар для Stilet
 
Регистрация: 23.07.2007
Сообщений: 57,097
По умолчанию

Цитата:
Lich
А откуда ты знаешь что на кнопке именно капшн отображается? А может это рисунок?

т.е. вот такое :
Код:
var d:HDC;
begin
 d:=GetDC(<Хендл кнопки>);
 TextOut(d,10,10,'W',1);
end;
В принципе работает, только остается процедуру окна кнопки заменить.
I'm learning to live...

Последний раз редактировалось Stilet; 01.07.2008 в 10:49.
Stilet вне форума Ответить с цитированием
Ответ


Купить рекламу на форуме - 42 тыс руб за месяц



Похожие темы
Тема Автор Раздел Ответов Последнее сообщение
Как зная хендл окна закрыть его SeRhy Общие вопросы Delphi 1 24.08.2008 11:02
Как мне в обработчике хука узнать хендл окна? vitalik007 Win Api 5 16.05.2008 09:34
Размер окна в зависимости от размера окна Reverent JavaScript, Ajax 1 02.02.2008 15:49
закрыть все дочерни окна, кроме главного окна Worms Общие вопросы Delphi 2 03.12.2007 22:18
Как сделать чтобы дочерние окна в MDI-приложениях были вне главного окна??? dimonchuk Общие вопросы Delphi 1 11.08.2007 12:13