CreateDesktop не работают горячие клавиши

Тема в разделе "WASM.WIN32", создана пользователем friackazoid, 23 июн 2010.

  1. friackazoid

    friackazoid New Member

    Публикаций:
    0
    Регистрация:
    4 июн 2009
    Сообщения:
    102
    Всем доброго времени суток!

    Есть такая проблема, после создания еще одного рабочего стола и запуска в нем LiteStep (менеджер рабочего стола типа експлорера) в нем не работают горячие клавиши. Точнее работают но действие от них происходит на первом рабочем столе.

    Код (Text):
    1.     DWORD curid;
    2.     HDESK newdesk, olddesk;
    3.     STARTUPINFO info={sizeof(info)};
    4.     PROCESS_INFORMATION processInfo;
    5.     memset(&info, 0, sizeof(info));
    6.     memset(&info, 0, sizeof(processInfo));
    7.     info.cb = sizeof(info);
    8.     info.dwFlags = 0;
    9.     info.lpDesktop = "Desk1";
    10.     curid = GetCurrentThreadId();
    11.     olddesk = GetThreadDesktop(curid);
    12.     newdesk = CreateDesktopW (L"Desk1", NULL, NULL, NULL, 0x10000000 , NULL);
    13.     newdesk = OpenDesktopW (L"Desk1", 0, 0, 0x10000000);
    14.     if (!newdesk || !olddesk)
    15.         return -1;
    16.     if (CreateProcess("litestep.exe", NULL, NULL, NULL, FALSE, CREATE_NEW_CONSOLE, NULL, NULL, &info, &processInfo)) {
    17.         if (SwitchDesktop(newdesk) && SetThreadDesktop(newdesk)) {
    18.             ::WaitForSingleObject(processInfo.hProcess, INFINITE);
    19.             SwitchDesktop (olddesk);
    20.         }
    21.         CloseHandle(processInfo.hProcess);
    22.         CloseHandle(processInfo.hThread);
    23.     }
    24.     CloseDesktop (newdesk);
    25.     return (EXIT_SUCCESS);
    В тоже время в утилите Русиновича Desktops таких проблем не возникает.

    Вопрос, надо как то по другому создавать рабочий стол\запускать процесс или необходимо вручную отбиндить горячие клавиши от предыдущего рабочего стола? И если второе то как?