Форум программистов, компьютерный форум, киберфорум
C/C++: WinAPI
Войти
Регистрация
Восстановить пароль
Блоги Сообщество Поиск Заказать работу  
 
Рейтинг 4.55/11: Рейтинг темы: голосов - 11, средняя оценка - 4.55
4 / 4 / 0
Регистрация: 26.04.2012
Сообщений: 61

Добавить в чужое окно контрол

29.06.2012, 15:38. Показов 2122. Ответов 7
Метки нет (Все метки)

Студворк — интернет-сервис помощи студентам
Привет. Как добавить свой контрол в чужое окно? Что то наподобие
C++
1
2
HWND hHack=FindWindow(NULL, "Калькулятор");
HWND buttonm = CreateWindowA("LISTBOX",NULL, WS_CHILD|WS_VISIBLE|WS_BORDER|WS_VSCROLL|LBS_NOTIFY|LBS_MULTIPLESEL,310,30,255,275,hHack,NULL,hInstance,NULL);
Только у меня быстро моргает и пропадает
0
IT_Exp
Эксперт
34794 / 4073 / 2104
Регистрация: 17.06.2006
Сообщений: 32,602
Блог
29.06.2012, 15:38
Ответы с готовыми решениями:

Вставка в чужое окно
Вот есть у меня какая-то открытая прога, каким чудом можно в неё (конечно же при условии что в ней есть поле ввода, не обязательно эдит,...

Закрыть чужое окно Windows
Здравствуйте у меня есть программа которая открывает калькулятор 5 раз и нужно сделать так чтобы по нажатию любой кнопки можно было их...

Ввод текста в чужое окно
Подскажите как реализовать вот например нахожу калькулятор HWND H = FindWindow("SciCalc", "Калькулятор"); if (H ==...

7
Супер-модератор
Эксперт Pascal/DelphiАвтор FAQ
 Аватар для volvo
33374 / 21499 / 8235
Регистрация: 22.10.2011
Сообщений: 36,894
Записей в блоге: 12
29.06.2012, 15:58
Контрол добавить просто. Вот рассказать чужому приложению, что с ним теперь делать - сложнее. Пишется DLL-ка, содержащая оконную процедуру для твоего контрола, и подгружается в адресное пространство чужого процесса. А при инициализации DLL-ки и происходит создание контрола и подмена его стандартной оконной функции на новую, из библиотеки.

Вот тогда чужое приложение тоже будет знать, что с непонятно откуда взявшимся контролом нужно делать, и ничего пропадать не будет...
3
4 / 4 / 0
Регистрация: 26.04.2012
Сообщений: 61
29.06.2012, 20:08  [ТС]
спасибо
0
Автор FAQ
 Аватар для -=ЮрА=-
6614 / 4256 / 401
Регистрация: 08.08.2009
Сообщений: 10,325
Записей в блоге: 24
30.06.2012, 11:27
Bobby, отлови чужое окно, посредством SetWindowLong замени в нём окнную процедуру на свою и пиши обработку всех действий окна сам и своего нового контрола тоже, НО т.к. чужое приложение тёмный лес лучше организовать работу приложения по след схеме
C
1
2
3
4
5
LPRESULT CALLBACK NewWndProc(...)
{
      //наши ддействия
      return OldWndProc(...)
};
0
Супер-модератор
Эксперт Pascal/DelphiАвтор FAQ
 Аватар для volvo
33374 / 21499 / 8235
Регистрация: 22.10.2011
Сообщений: 36,894
Записей в блоге: 12
30.06.2012, 11:53
Цитата Сообщение от -=ЮрА=- Посмотреть сообщение
отлови чужое окно, посредством SetWindowLong замени в нём окнную процедуру на свою
Угу, угу... Чужое окно, твоя процедура. И...
GWL_WNDPROC
Sets a new address for the window procedure.
You cannot change this attribute if the window does not belong to the same process as the calling thread.
(SetWindowLong function), то есть, даже теоретически это не должно работать. И не будет. Адресные пространства разные.
0
30.06.2012, 12:28

Не по теме:

Цитата Сообщение от UI Посмотреть сообщение
то есть, даже теоретически это не должно работать. И не будет. Адресные пространства разные.
- бла бла бла, бла бла бла бла....
UI, либо сделай чужой процесс нитью своего либо используй CreateRemoteThread кто мешает?
PS:не веди себя как пацан, в постах...

0
Супер-модератор
Эксперт Pascal/DelphiАвтор FAQ
 Аватар для volvo
33374 / 21499 / 8235
Регистрация: 22.10.2011
Сообщений: 36,894
Записей в блоге: 12
30.06.2012, 13:00
-=ЮрА=-, Если мне надо будет сделать, я знаю, как это делается. Ты же ведешь себя непонятно как - где-то в твоем посте есть упоминание о CreateRemoteThread или о том, что, оказывается, надо делать чужой процесс своей нитью? Нет. Пришел ТС, увидел твой "совет", подумал "ух ты, это же круто!!! На фиг я буду DLL писать, если можно SetWindowLong-ом все решить за секунду", быстро наваял оконную процедуру, забабахал ее SetWindowLong-ом в чужой процесс. Ан, не работает. ТС в печали. Кому от этого стало лучше?
0
30.06.2012, 14:55

Не по теме:

UI, я всегда отвечаю предполагая определённые знания. Если ТС с благодарностью вкурил твой метод внедрения в чужой процесс, это само по себе предполагает у него какой-то уровень. Ибо использовать SetWindowLong в нити на много проще чем осуществлять внедрение в процесс с последующей его модификацией. По сему заключил, что разговариваю с людьми для которых

Цитата Сообщение от -=ЮрА=- Посмотреть сообщение
сделай чужой процесс нитью своего либо используй CreateRemoteThread
это как бы само собой разумеющееся.
С другой стороны ТС мог просто напросто неразобравшись отпостить тебе +1 не понимая что навоять DLL куда сложнее чем подменить оконную процедуру, а по сему не сказать этого я не мог. Остаётся дождаться ТС и узнать у него смог он реализовать DLL или может всё же ему нужно подкинуть пару строк кода для подмены оконнной процедуры.
PS:
Цитата Сообщение от UI Посмотреть сообщение
Если мне надо будет сделать, я знаю, как это делается.
ну а я типа нет)))Ты меньше груби просто другим и всё будет гуд...
Кстати для меня тупого выложи DLL которая сомжет скажем нарисовать и обрабатваать EditBox в простом API окне (скажем в этом) Я бы с интересом посмотрел можешь ты или нет:)

1
Надоела реклама? Зарегистрируйтесь и она исчезнет полностью.
BasicMan
Эксперт
29316 / 5623 / 2384
Регистрация: 17.02.2009
Сообщений: 30,364
Блог
30.06.2012, 14:55
Помогаю со студенческими работами здесь

Чужое модальное окно сделать немодальным
Всем привет. Вопрос : Сделать чужое модальное окно немодальным . Такое возможно ?

Можно ли вставить свой собственный контрол в чужое окно, зная его handle?
Можно ли вставить свой собственный контрол в чужое окно, если я знаю его handle? К примеру, прилепить лейбл рядом с "чужим"...

Чужое окно
Возможно ли, зная название чужого окна, скопировать из него всю текстовую информацию, которую только можно скопировать?

Чужое окно
Объясняю проблему. Мне нужно чтобы при запуске .jar файла( моей программы ) она в ДРУГОМ окне нажимала ctrl+a ctrl+s потом вводила название...

Скрыть чужое окно
Здравствуйте. Встала задача: 1. Запустить прогу (есть консольное окно) 2. Скрыть её окно 3. Отследить выключение той пороги и...


Искать еще темы с ответами

Или воспользуйтесь поиском по форуму:
8
Ответ Создать тему
Новые блоги и статьи
http://iceja.net/ математические сервисы
iceja 20.01.2026
Обновила свой сайт http:/ / iceja. net/ , приделала Fast Fourier Transform экстраполяцию сигналов. Однако предсказывает далеко не каждый сигнал (см ограничения http:/ / iceja. net/ fourier/ docs ). Также. . .
http://iceja.net/ сервер решения полиномов
iceja 18.01.2026
Выкатила http:/ / iceja. net/ сервер решения полиномов (находит действительные корни полиномов методом Штурма). На сайте документация по API, но скажу прямо VPS слабенький и 200 000 полиномов. . .
Расчёт переходных процессов в цепи постоянного тока
igorrr37 16.01.2026
/ * Дана цепь постоянного тока с R, L, C, k(ключ), U, E, J. Программа составляет систему уравнений по 1 и 2 законам Кирхгофа, решает её и находит переходные токи и напряжения на элементах схемы. . . .
Восстановить юзерскрипты Greasemonkey из бэкапа браузера
damix 15.01.2026
Если восстановить из бэкапа профиль Firefox после переустановки винды, то список юзерскриптов в Greasemonkey будет пустым. Но восстановить их можно так. Для этого понадобится консольная утилита. . .
Сукцессия микоризы: основная теория в виде двух уравнений.
anaschu 11.01.2026
https:/ / rutube. ru/ video/ 7a537f578d808e67a3c6fd818a44a5c4/
WordPad для Windows 11
Jel 10.01.2026
WordPad для Windows 11 — это приложение, которое восстанавливает классический текстовый редактор WordPad в операционной системе Windows 11. После того как Microsoft исключила WordPad из. . .
Classic Notepad for Windows 11
Jel 10.01.2026
Old Classic Notepad for Windows 11 Приложение для Windows 11, позволяющее пользователям вернуть классическую версию текстового редактора «Блокнот» из Windows 10. Программа предоставляет более. . .
Почему дизайн решает?
Neotwalker 09.01.2026
В современном мире, где конкуренция за внимание потребителя достигла пика, дизайн становится мощным инструментом для успеха бренда. Это не просто красивый внешний вид продукта или сайта — это. . .
КиберФорум - форум программистов, компьютерный форум, программирование
Powered by vBulletin
Copyright ©2000 - 2026, CyberForum.ru