Много бързо превключване на прозорци потребители

Много бързо превключване на прозорци потребители
Искам да споделя с вас живот хакерство, която аз използвам ежедневно в продължение на няколко години. Работи безотказно, това спестява време. Така се случи, че аз и жена ми са различни сметки на един домашен компютър. Това е удобно: всеки има свой собствен работен плот, тапетът ви, предпочитания, приложения, настройки, бисквитки в браузъра. Дори не мога да си представя сега, как да работят под един uchetki. Но (без нея ", но" няма да има хартия), има един малък проблем. Превключване на потребители. Както обикновено се прави: Start -> вид на един бутон, в зависимост от системата -> User да се промени. екран за избор на потребителя ще се появи. Poke правилният потребител. Да, там е клавиш Win + L. След което отново е необходимо да се мушкам член смяна и икона. Общо-малко от 3 стъпки. В Windows 8, направихме забележимо подобрение в това отношение. натиснете Win + потребителското икона и в списъка, кликнете върху другия. Но това е без да се отчита, че има uchetki парола. Това е мястото, където тя започва вече значителните закъснения. Въведете паролата всеки път, когато всяка смяна скучно много бързо. А си с парола uchetku аз трябваше да постави колкото е необходимо за отдалечен достъп. Да, това е възможно да се достигне от разстояние друг uchetku направя, но живота ми хакване беше готова на време и работи перфектно, независимо от това дали има uchetki пароли или не.

А идеята беше така. За да направите бързо превключване на потребителя настъпили в една стъпка. С натискането на един клавиш. Търсене в Интернет (не забравяйте, това беше преди около 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, можете да видите изходния код. Или можете да изтеглите целия проект, както и събрани и готови за изпълними файлове.