2015-07-11 6 views
-3

Возможно ли это в C++? (Платформа: Windows)Можно ли переименовать имя окна класса процесса?

примечание: Я не владелец процесса

+0

Что означает «имя окна процесса»? –

+0

@JonathanPotter сожалеет о том, что он не ясен или что именно это называется здесь: FindWindow (ClassName, WindowName) Я могу просто изменить «WindowName» с помощью SetWindowText, но как изменить «ClassName». Я надеюсь, что я был чист. –

+0

Вы не можете изменить класс существующего окна. Зачем вам это нужно? –

ответ

1
  1. Используйте функцию SetWindowsHookEx, чтобы установить глобальный WH_MSGFILTER крючок. Этот код должен быть в DLL. Это приводит к тому, что DLL будет внедряться во все процессы, включая процесс, которому принадлежит окно, имя которого вы хотите изменить.
  2. В вашем исполняемом файле, который загрузил DLL, используйте FindWindow, чтобы найти дескриптор окна окна, которое вы хотите изменить.
  3. Опубликовать сообщение в этом окне.
  4. Обращайтесь с этим сообщением в процедуре захвата MessageProc.
  5. Измените имя окна на содержимое вашего сердца, используя те же методы, которые вы использовали бы, если бы окно было в вашем собственном процессе.

Предостережения: По соображениям безопасности это будет работать, только если у вас есть код, подписанный исполняемым файлом и DLL в Windows Vista и более поздних версиях, если включен UAC.

+0

Не существует способа без инъекции dll, хотя я этого не делал, например, мы используем SetWindowText для изменения названия заголовка окна, нет функции или простого способа изменить имя класса ? –

Смежные вопросы