Этот баннер — требование Роскомнадзора для исполнения 152 ФЗ.
«На сайте осуществляется обработка файлов cookie, необходимых для работы сайта, а также для анализа использования сайта и улучшения предоставляемых сервисов с использованием метрической программы Яндекс.Метрика. Продолжая использовать сайт, вы даёте согласие с использованием данных технологий».
Политика конфиденциальности
|
|
|
Смена оконной станции для процесса сервиса (с быстрым переключением пользователей)
|
|||
|---|---|---|---|
|
#18+
Задача: Есть сервис, который уже умеет отслеживать различные переключения пользователей. Ему нужно каждый раз устанавливать хуки на desktope активного интерактивного (:) ) пользователя. Вроде бы все просто - меняем рабочую станцию на активную и ставим хуки, но при использовании быстрого переключения пользователей не нашол документации по определению рабочей станции активного юзверя (возможно OpenInputDesktop(?)). Но вся беда в том что SetThreadDesktop возвращает ошибку 170 (system_busy) при вызове функции в WINAPI WinMain(HINSTANCE, HINSTANCE, LPSTR comandLineOption , int) { MakeInteractive(); } при написании кода в СBuilder. А вот если писать консольную программу, то все отлично работает. может кто сталкивался и поборол зверя. bool MakeInteractive() { HWINSTA hOldWin = GetProcessWindowStation(); HWINSTA hWinSta0 = OpenWindowStation("WinSta0", FALSE, MAXIMUM_ALLOWED); HDESK hThreadDesktop = GetThreadDesktop(GetCurrentThreadId()); if (!hWinSta0) { return false; } SetProcessWindowStation(hWinSta0); CloseWindowStation(hWinSta0); HDESK hDefault = OpenDesktop("Default", DF_ALLOWOTHERACCOUNTHOOK, TRUE, DESKTOP_HOOKCONTROL|DESKTOP_CREATEWINDOW ); /*test*/HDESK hInputDesk = OpenInputDesktop(DF_ALLOWOTHERACCOUNTHOOK, FALSE, DESKTOP_CREATEWINDOW); if (!hDefault) { PutsInMyFile("MakeInteractive:\n"); return false; } if ( !SetThreadDesktop( hDefault ) ) { CloseDesktop(hDefault); CloseDesktop(hInputDesk); if (IsTest) { DWORD er = GetLastError(); //ïîëó÷èòü êîä îøèáêè char erStr[1024]; sprintf(erStr,"Error SetThreadDesktop :-( %d \n", (int)er); PutsInMyFile(erStr); }; return false; } CloseDesktop(hDefault); CloseDesktop(hInputDesk); return true; } ... |
|||
|
:
Нравится:
Не нравится:
|
|||
| 28.04.2005, 21:29 |
|
||
|
|

start [/forum/topic.php?fid=16&msg=33041761&tid=1347732]: |
0ms |
get settings: |
8ms |
get forum list: |
15ms |
check forum access: |
4ms |
check topic access: |
4ms |
track hit: |
57ms |
get topic data: |
9ms |
get forum data: |
2ms |
get page messages: |
32ms |
get tp. blocked users: |
1ms |
| others: | 247ms |
| total: | 379ms |

| 0 / 0 |
