У меня есть приложение для Windows. Я пытаюсь открыть элемент панели управления следующим образом:
EnumWindows(EnumWindowsProcMy, ppid);
IOpenControlPanel *pPanel = NULL;
CoInitialize(nullptr);
HRESULT hr = CoCreateInstance(CLSID_OpenControlPanel, NULL,
CLSCTX_INPROC_SERVER, IID_IOpenControlPanel,
(void**)&pPanel);
if (FAILED(hr)) {
return -1;
}
pPanel->Open(CUSTOM_GUID, NULL, NULL);
Это, однако, открывает элемент панели управления в новом окне. Есть ли способ перейти к элементу панели управления в уже открытом окне? У меня есть ручка к окну.
Если у вас уже есть запущенный экземпляр панели управления, вы можете сделать что-то вроде.
Получает указатель на запущенный объект, который был зарегистрирован.
Образец кода
IUnknown *puk = NULL;
HRESULT hr = GetActiveObject(CLSID_OpenControlPanel, 0, &puk);
return (hr == S_OK);
Других решений пока нет …