Как я могу изменить название элемента управления пункта меню в приложении, которое не является моим, используя C++ win32 api?
Например, если я захочу изменить строку "копировать" в меню "Правка" в блокноте.
Что я уже пробовал:
Я пытаюсь сделать следующее:
используйте enumWindowsProc (работает хорошо):
BOOL CALLBACK enumWindowsProc( __in HWND hWnd, __in LPARAM lParam ) { int length = ::GetWindowTextLength(hWnd); if (0 == length) return TRUE; TCHAR* buffer; buffer = new TCHAR[length + 1]; memset(buffer, 0, (length + 1) * sizeof(TCHAR)); GetWindowText(hWnd, buffer, length + 1); wcout << buffer << endl; wstring s2(buffer); wstring s3(L"Notepad"); std::string::size_type found = s2.find(s3); if (found != std::string::npos) { EnumChildWindows(hWnd, EnumChildProc, 0); } delete[] buffer; return TRUE; }
а чем пользоваться EnumChildProc (не дает требуемого поведения. Я надеялся получить дерево управления):
BOOL CALLBACK EnumChildProc(HWND hwnd, LPARAM lParam) { int length = ::GetWindowTextLength(hwnd); if (0 == length) return TRUE; TCHAR* buffer; buffer = new TCHAR[length + 1]; memset(buffer, 0, (length + 1) * sizeof(TCHAR)); GetWindowText(hwnd, buffer, length + 1); OutputDebugString(buffer); OutputDebugString(L"\n"); EnumChildWindows(hwnd, EnumChildProc, 0); delete[] buffer; return TRUE; }