Активировать окно из кода проблемы - PullRequest
1 голос
/ 03 августа 2011

У меня на рабочем столе есть окно «Мастер настройки Антивируса Касперского» * ​​1001 *

Вот некоторая информация об окне:

>>>> Window <<<<
Title:  Kaspersky Anti-Virus Configuration Wizard
Class:  AVP.ConfigureWizard
Position:   612, 247
Size:   499, 388
Style:  0x94CA0044
ExStyle:    0x00010100
Handle: 0x00081308

Окно не появляется в списке задач диспетчера задач Windows (только его процесс существует в списке процессов как «avp.exe», что, насколько я думаю, затрудняет достижение моей цели. Прежде всего Я бы хотел, чтобы кто-нибудь объяснил, как может окно Kaspersky Programmed i, которого нет во вкладке «Приложение» в «Диспетчере задач Windows». Во-вторых, я был бы очень благодарен, если вы можете помочь мне решить мою проблему, которая подробно описана здесь:

Я хочу активировать окно (установить фокус на окне) из кода (C ++ \ Autoit).

Я пытался использовать функцию FindWindow в WinAPI, но не смог получить дескриптор этого окна.

Я получил дескриптор с функцией GetForegroundWindow и обнаружил, что когда я использую функцию EnumWindows, дескриптор окна конфигурации Kaspersky не был в списке ..

это был мой код:

BOOL CALLBACK EnumWindowsProc(__in  HWND hwnd, __in  LPARAM lParam)
{
    if(g_hWnd == hwnd)
    {
        cout << "Found window";
        return FALSE;
    }
    return TRUE;
}
BOOL CALLBACK EnumDesktopProc(
    __in  LPTSTR lpszDesktop,
    __in  LPARAM lParam
    )
{
    EnumDesktopWindows(OpenDesktop(lpszDesktop,DF_ALLOWOTHERACCOUNTHOOK,FALSE,DESKTOP_ALL),EnumWindowsProc, NULL);
    return true;
}

BOOL CALLBACK EnumWindowStationProc(
    __in  LPTSTR lpszWindowStation,
    __in  LPARAM lParam
    )
{
    EnumDesktops(OpenWindowStation(lpszWindowStation,FALSE, WINSTA_ALL_ACCESS),EnumDesktopProc, NULL );
    return true;
}
int main()
{
    Sleep(3000);
    g_hWnd = GetForegroundWindow(); //Here i switch to kaspersky window to get it's handle
    EnumWindowStations(EnumWindowStationProc, NULL);    //I call EnumDesktopWindows in EnumDesktops in EnumWindowStations to search in all HWND of my Operation System.
}

оператор cout << «Найдено окно» никогда не выполнялся. </p>

Буду очень признателен, если вы поможете мне решить эту проблему и покажите мне, как сделать это окно активным.

...