Много бързо превключване на прозорци потребители
А идеята беше така. За да направите бързо превключване на потребителя настъпили в една стъпка. С натискането на един клавиш. Търсене в Интернет (не забравяйте, това беше преди около 3 години) роди плод, и са били открити подобни решения. Но безплатно или бъги, или да изисква инсталирането на софтуер от трета страна. Такса, високо качество, имаше една, и е работил сам много добре, но на първо място, е била платена, и второ, съдържа допълнителна функционалност - с натискане на клавиш не е непосредствено включване на потребителя, и прозореца на дисплея (в изображението Alt + Tab), за да потребители. Решено е да се напише своето решение. Най-просто, с функционално минимум: клавиш - смяната.
- За да превключите сесии използват wtsapi32.dll функция: WTSEnumerateSessions. WTSConnectSession. WTSDisconnectSession (Сега, когато погледна към описание на тези функции, се казва, че се работи с отдалечени работни сесии, и честно казано, аз съм малко объркан, но аз работя на местно ниво, безотказно).
- Бързи клавиши за използване user32.dll функции: RegisterHotKey. UnregisterHotKey. Всичко е просто.
Просто си направите резервация, и можете да ме хвърлят домати, но аз написах това нещо на C #, макар и професионалисти, ще бъде със сигурност по-добре, роден, и т.н., и т.н., и т.н. ... Но тогава аз просто започнах да се уча C # и се нуждае от опита, а когато решението беше написано, преписвам, че не е необходимо, въпреки че прехвърлянето не е повече от една нощ.
Така че, от една страна тя е написана просто приложение win32 с един бутон, на която пресата изпълнява код като този:
С две сесии sessionInfo ще има 3 елемента: Услуги сесия, на сесията на 1-во потребител, сесията на втората потребителя. Съответно targetSessId activeSessId и определя еднозначно. Когато повече от две сесии, превключване ще се появят между активното и последната не е активна.
Но след това претърпя малък неуспех. Някои може да се досетите, така че няма да работи. По време на изпълнение на WTSConnectSession за кандидатстване, блокирането активен потребител се случи, но включването на втори потребител - не. Т.е. с други думи, една молба потребител не може да започне друг потребител вход. Но това може да се направи услуга! Да, съжалявам, но няма система за обслужване ние нямаме нищо. Е, нека се създаде система, която ще хвърля код. Тук е удобен C # и .NET, като услугата запис на тези технологии е много, много проста. Сега следния проблем: Услугата е без потребителски интерфейс, т.е. потребителят не може пряко да се отрази на работата на услугата и услугата не може да чуе на потребителя. Дръж клавишната комбинация с услугата невъзможно.
Така че, тук е нашето решение:
Приложението за употреба на потребителя слуша и върху клавиш откриване, системата изпраща сигнал до услугата, която извършва смяната.
Остава съвсем малко, но след това мога да намеря нещо, което да ви покажа. Например фактът, че имаме нужда от десктоп приложение, без прозорци, но тя е предприела за бързи клавиши. Възможно е да се направи това, като направи всичко: Скриване на главния прозорец и да не се показва. Но има по-добро решение. Напишете ApplicationContext. С черно
Например, както следва:
Тук използвам намерена на интернет MovablePython.Hotkey интерфейс на user32.dll функции RegisterHotKey, UnregisterHotKey на.
И няколко реда за самата услуга.
Замяна събитие OnCustomCommand, и в подготовката на нашия екип, ние извършване на вече известни функция.
Остава да се регистрирате и да започнете на услугата, както и да се сложи в автоматично стартиране всяка молба за употреба.
All. Сега, след като потребителят е влязъл първия компютър след началото и натисна Win + A, си сесия е забранено и да получават прозорец за избор на потребителя. Въвежда втория потребителят натисне Win + A - първо се появява потребителска сесия. И така нататък. Г.
На GitHub, можете да видите изходния код. Или можете да изтеглите целия проект, както и събрани и готови за изпълними файлове.