Задать вопрос
@kodwi
https://moikrug.ru/kodwi

Как переименовать окно стороннего процесса, используя WinAPI на C++?

Обрыл весь гугл. Проблема с переименовкой окна стороннего процесса. Свой процесс прекрасно переименовывается, другие - никакой реакции даже при запуске от админа. ОС - Win 8.1.

static void RenameProcessWindow(DWORD PID, std::wstring new_name) {

		HWND curr_hwnd = 0;
		DWORD curr_pid;

		bool found = false;

		do {

			curr_hwnd = FindWindowEx(0, curr_hwnd, 0, 0);

			GetWindowThreadProcessId(curr_hwnd, (LPDWORD)&curr_pid);

			if (curr_pid == PID) {

				found = true;
			}

		} while (curr_hwnd && !found);

		WCHAR *pp = new WCHAR[201];

// получаем имя окна, чисто проверить правильность найденного hwnd, в случае своего процесса все ок
// в случае других процессов в pp появляется строка "MSCTFIME UI"

		GetWindowTextW(curr_hwnd, pp, 200);

// поскольку вычитал, что SetWindowText пашет только в пределах своего процесса, использую прямую отправку сообщения на изменение текста
		SendMessage(curr_hwnd, WM_SETTEXT, 0, (LPARAM)new_name.c_str());
	}
  • Вопрос задан
  • 3222 просмотра
Подписаться 1 Оценить Комментировать
Пригласить эксперта
Ответы на вопрос 1
maaGames
@maaGames
Погроммирую программы
Запусти с админскими правами. Код правильный.
Ответ написан
Ваш ответ на вопрос

Войдите, чтобы написать ответ

Похожие вопросы