Обрыл весь гугл. Проблема с переименовкой окна стороннего процесса. Свой процесс прекрасно переименовывается, другие - никакой реакции даже при запуске от админа. ОС - 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());
}