рдмрд╣реБрдд рддреЗрдЬреА рд╕реЗ рд╡рд┐рдВрдбреЛрдЬ рдЙрдкрдпреЛрдЧрдХрд░реНрддрд╛ рд╕реНрд╡рд┐рдЪрд┐рдВрдЧ

рдореИрдВ рдЖрдкрдХреЗ рд╕рд╛рде рдПрдХ рдЬреАрд╡рди рд╣реИрдХ рд╕рд╛рдЭрд╛ рдХрд░рдирд╛ рдЪрд╛рд╣рддрд╛ рд╣реВрдВ рдЬрд┐рд╕реЗ рдореИрдВ рдХрдИ рд╡рд░реНрд╖реЛрдВ рд╕реЗ рджреИрдирд┐рдХ рдЙрдкрдпреЛрдЧ рдХрд░ рд░рд╣рд╛ рд╣реВрдВред рдпрд╣ рдирд┐рд░реНрджреЛрд╖ рд░реВрдк рд╕реЗ рдХрд╛рдо рдХрд░рддрд╛ рд╣реИ, рд╕рдордп рдмрдЪрд╛рддрд╛ рд╣реИред рдРрд╕рд╛ рд╣реБрдЖ рдХрд┐ рдореЗрд░реА рдкрддреНрдиреА рдФрд░ рдореЗрд░реЗ рдПрдХ рд╣реА рдШрд░ рдХреЗ рдХрдВрдкреНрдпреВрдЯрд░ рдкрд░ рдЕрд▓рдЧ-рдЕрд▓рдЧ рдЦрд╛рддреЗ рдереЗред рдпрд╣ рд╕реБрд╡рд┐рдзрд╛рдЬрдирдХ рд╣реИ: рдкреНрд░рддреНрдпреЗрдХ рдХрд╛ рдЕрдкрдирд╛ рдбреЗрд╕реНрдХрдЯреЙрдк, рдЕрдкрдиреЗ рд╕реНрд╡рдпрдВ рдХреЗ рд╡реЙрд▓рдкреЗрдкрд░, рдкреНрд░рд╛рдердорд┐рдХрддрд╛рдПрдВ, рдПрдкреНрд▓рд┐рдХреЗрд╢рди рд╕реЗрдЯрд┐рдВрдЧреНрд╕, рдмреНрд░рд╛рдЙрдЬрд╝рд░ рдореЗрдВ рдХреБрдХреАрдЬрд╝ рд╣реИрдВред рдореИрдВ рдЕрдм рд╕реЛрдЪ рднреА рдирд╣реАрдВ рд╕рдХрддрд╛ рдХрд┐ рдЖрдк рдПрдХ рдЦрд╛рддреЗ рдХреЗ рддрд╣рдд рдХреИрд╕реЗ рдХрд╛рдо рдХрд░ рд╕рдХрддреЗ рд╣реИрдВред рд▓реЗрдХрд┐рди (рдЗрд╕рдХреЗ рдмрд┐рдирд╛ "рд▓реЗрдХрд┐рди" рдХреЛрдИ рд▓реЗрдЦ рдирд╣реАрдВ рд╣реЛрдЧрд╛), рдПрдХ рдЫреЛрдЯреА рд╕реА рд╕рдорд╕реНрдпрд╛ рд╣реИред рдЙрдкрдпреЛрдЧрдХрд░реНрддрд╛рдУрдВ рдХреЛ рд╕реНрд╡рд┐рдЪ рдХрд░рдирд╛ред рдпрд╣ рдЖрдорддреМрд░ рдкрд░ рдХреИрд╕реЗ рдХрд┐рдпрд╛ рдЬрд╛рддрд╛ рд╣реИ: рд╕рд┐рд╕реНрдЯрдо рдХреЗ рдЖрдзрд╛рд░ рдкрд░ рдкреНрд░рд╛рд░рдВрдн -> рдПрдХ рдирд┐рд╢реНрдЪрд┐рдд рдмрдЯрди -> рдкрд░рд┐рд╡рд░реНрддрди рдЙрдкрдпреЛрдЧрдХрд░реНрддрд╛ред рдЙрдкрдпреЛрдЧрдХрд░реНрддрд╛ рдЪрдпрди рд╕реНрдХреНрд░реАрди рджрд┐рдЦрд╛рдИ рджреЗрддреА рд╣реИред рд╕рд╣реА рдЙрдкрдпреЛрдЧрдХрд░реНрддрд╛ рдореЗрдВ рдкреНрд░рд╣рд╛рд░ред рд╣рд╛рдВ, рдПрдХ рд╡рд┐рди + рдПрд▓ рдХреАрдмреЛрд░реНрдб рд╢реЙрд░реНрдЯрдХрдЯ рд╣реИред рдЬрд┐рд╕рдХреЗ рдмрд╛рдж рдлрд┐рд░ рд╕реЗ рдЖрдкрдХреЛ рдпреВрдЬрд░ рдЪреЗрдВрдЬ рдФрд░ рдЖрдЗрдХреЙрди рдХреЛ рдкреЛрдХ рдХрд░рдирд╛ рд╣реЛрдЧрд╛ред рдХреБрд▓ рдиреНрдпреВрдирддрдо 3 рдХреНрд░рд┐рдпрд╛рдПрдВред рд╡рд┐рдВрдбреЛрдЬ 8 рдиреЗ рдЗрд╕ рд╕рдВрдмрдВрдз рдореЗрдВ рдПрдХ рдЙрд▓реНрд▓реЗрдЦрдиреАрдп рд╕реБрдзрд╛рд░ рдХрд┐рдпрд╛ред рд╡рд┐рди + рдпреВрдЬрд░ рдЖрдЗрдХрди рдкрд░ рдХреНрд▓рд┐рдХ рдХрд░реЗрдВ рдФрд░ рд╕реВрдЪреА рдореЗрдВ рдЕрдиреНрдп рдкрд░ рдХреНрд▓рд┐рдХ рдХрд░реЗрдВред рд▓реЗрдХрд┐рди рдпрд╣ рдЗрд╕ рдмрд╛рдд рдХрд╛ рдзреНрдпрд╛рди рдирд╣реАрдВ рд░рдЦрддрд╛ рд╣реИ рдХрд┐ рдЦрд╛рддреЗ рдореЗрдВ рдХреЛрдИ рдкрд╛рд╕рд╡рд░реНрдб рд╣реИред рдпрд╣ рд╡рд╣ рдЬрдЧрд╣ рд╣реИ рдЬрд╣рд╛рдВ рдорд╣рддреНрд╡рдкреВрд░реНрдг рджреЗрд░реА рдкрд╣рд▓реЗ рд╕реЗ рд╣реА рд╢реБрд░реВ рд╣реЛ рд░рд╣реА рд╣реИред рд╣рд░ рдмрд╛рд░ рдПрдХ рдкрд╛рд╕рд╡рд░реНрдб рджрд░реНрдЬ рдХрд░рдиреЗ рдкрд░ рдкреНрд░рддреНрдпреЗрдХ рд╕реНрд╡рд┐рдЪ рдмрд╣реБрдд рдЬрд▓реНрджреА рдКрдм рдЬрд╛рдПрдЧрд╛ред рдФрд░ рдореБрдЭреЗ рдЕрдкрдиреЗ рдЦрд╛рддреЗ рдкрд░ рдкрд╛рд╕рд╡рд░реНрдб рдбрд╛рд▓рдирд╛ рдерд╛, рдХреНрдпреЛрдВрдХрд┐ рдореБрдЭреЗ рд░рд┐рдореЛрдЯ рдПрдХреНрд╕реЗрд╕ рдХреА рдЖрд╡рд╢реНрдпрдХрддрд╛ рдереАред рд╣рд╛рдВ, рд░рд┐рдореЛрдЯ рдПрдХреНрд╕реЗрд╕ рдХреЗ рд▓рд┐рдП рдПрдХ рдФрд░ рдЦрд╛рддрд╛ рдмрдирд╛рдирд╛ рд╕рдВрднрд╡ рдерд╛, рд▓реЗрдХрд┐рди рдЙрд╕ рд╕рдордп рддрдХ рдореЗрд░рд╛ рдЬреАрд╡рди рд╣реИрдХ рдкрд╣рд▓реЗ рд╕реЗ рд╣реА рддреИрдпрд╛рд░ рдерд╛, рдФрд░ рдЗрд╕ рдмрд╛рдд рдХреА рдкрд░рд╡рд╛рд╣ рдХрд┐рдП рдмрд┐рдирд╛ рдХрд┐ рдЦрд╛рддреЛрдВ рдореЗрдВ рдкрд╛рд╕рд╡рд░реНрдб рдереЗ рдпрд╛ рдирд╣реАрдВред

рдФрд░ рд╡рд┐рдЪрд╛рд░ рдпрд╣ рдерд╛ред рддреНрд╡рд░рд┐рдд рдЙрдкрдпреЛрдЧрдХрд░реНрддрд╛ рд╕реНрд╡рд┐рдЪрд┐рдВрдЧ рдПрдХ рд╣реА рдмрд╛рд░ рдореЗрдВ рдХрд░реЗрдВред рдПрдХ рд╣реЙрдЯрдХреА рдХреНрд▓рд┐рдХ рдХрд░рдХреЗред рдЗрдВрдЯрд░рдиреЗрдЯ рдкрд░ рдПрдХ рдЦреЛрдЬ (рдореБрдЭреЗ рдЖрдкрдХреЛ рдпрд╛рдж рджрд┐рд▓рд╛рдирд╛ рд╣реИ, рдпрд╣ рд▓рдЧрднрдЧ 3 рд╕рд╛рд▓ рдкрд╣рд▓реЗ рдерд╛) рдмреЛрд░ рдлрд▓, рдФрд░ рдЗрд╕реА рддрд░рд╣ рдХреЗ рд╕рдорд╛рдзрд╛рди рдкрд╛рдП рдЧрдП рдереЗред рд▓реЗрдХрд┐рди, рдореБрдлреНрдд рд╡рд╛рд▓реЗ рдпрд╛ рддреЛ рдЫреЛрдЯреА рдЧрд╛рдбрд╝реА рдереЗ рдпрд╛ рдЙрдиреНрд╣реЗрдВ рдерд░реНрдб рдкрд╛рд░реНрдЯреА рд╕реЙрдлреНрдЯрд╡реЗрдпрд░ рдХреА рд╕реНрдерд╛рдкрдирд╛ рдХреА рдЖрд╡рд╢реНрдпрдХрддрд╛ рдереАред рд▓реЗрдХрд┐рди рднреБрдЧрддрд╛рди рдХрд┐рдпрд╛ рдЧрдпрд╛, рдЙрдЪреНрдЪ-рдЧреБрдгрд╡рддреНрддрд╛ рд╡рд╛рд▓рд╛, рдПрдХ рдкрд╛рдпрд╛ рдЧрдпрд╛, рдФрд░ рдПрдХ рдиреЗ рдмрд╣реБрдд рдЕрдЪреНрдЫреА рддрд░рд╣ рд╕реЗ рдХрд╛рдо рдХрд┐рдпрд╛, рд▓реЗрдХрд┐рди, рд╕рдмрд╕реЗ рдкрд╣рд▓реЗ, рдпрд╣ рднреБрдЧрддрд╛рди рдХрд┐рдпрд╛ рдЧрдпрд╛ рдерд╛, рдФрд░ рджреВрд╕рд░реА рдмрд╛рдд, рдЗрд╕рдореЗрдВ рдЕрддрд┐рд░рд┐рдХреНрдд рдХрд╛рд░реНрдпрдХреНрд╖рдорддрд╛ рд╢рд╛рдорд┐рд▓ рдереА - рдЙрдкрдпреЛрдЧрдХрд░реНрддрд╛ рддреБрд░рдВрдд рд╣реЙрдЯрдХреА рджрдмрд╛рдХрд░ рд╕реНрд╡рд┐рдЪ рдирд╣реАрдВ рдХрд░рддрд╛ рдерд╛, рд▓реЗрдХрд┐рди рдПрдХ рд╡рд┐рдВрдбреЛ рдкреНрд░рджрд░реНрд╢рд┐рдд рдХреА рдЧрдИ рдереА (Alt / Tab рдХреЗ рд╕рдорд╛рди) рдЙрдкрдпреЛрдЧрдХрд░реНрддрд╛рдУрдВ рджреНрд╡рд╛рд░рд╛ред рдЖрдкрдХрд╛ рдирд┐рд░реНрдгрдп рд▓рд┐рдЦрдирд╛ рддрдп рдерд╛ред рдиреНрдпреВрдирддрдо рдХрд╛рд░реНрдпрдХреНрд╖рдорддрд╛ рдХреЗ рд╕рд╛рде рд╕рдмрд╕реЗ рд╕рд░рд▓: рд╣реЙрдЯрдХреА - рд╕реНрд╡рд┐рдЪрд┐рдВрдЧред

рдЬрд╛рд░реА рдХрд┐рдП рдЧрдП рд▓рдХреНрд╖реНрдп:
рдореИрдВ рддреБрд░рдВрдд рдЖрд░рдХреНрд╖рдг рдХрд░ рджреВрдВрдЧрд╛, рдФрд░ рдЖрдк рдореБрдЭ рдкрд░ рдЯрдорд╛рдЯрд░ рдлреЗрдВрдХ рд╕рдХрддреЗ рд╣реИрдВ, рд▓реЗрдХрд┐рди рдореИрдВрдиреЗ рдпрд╣ рдмрд╛рдд c # рдореЗрдВ рд▓рд┐рдЦреА рд╣реИ, рд╣рд╛рд▓рд╛рдВрдХрд┐ рдкреЗрд╢реЗрд╡рд░реЛрдВ рдкрд░, рдпрд╣ рдирд┐рд╢реНрдЪрд┐рдд рд░реВрдк рд╕реЗ рдмреЗрд╣рддрд░ рд╣реЛрдЧрд╛, рдЕрдзрд┐рдХ рджреЗрд╢реА, рдФрд░ рдЗрд╕реА рддрд░рд╣, рдФрд░ рдЗрд╕реА рддрд░рд╣, рд▓реЗрдХрд┐рди ... рд▓реЗрдХрд┐рди рдлрд┐рд░ рдореИрдВрдиреЗ рдЕрднреА c # рд╕реАрдЦрдирд╛ рд╢реБрд░реВ рдХрд┐рдпрд╛ рдФрд░ рдореБрдЭреЗ рдЕрдиреБрднрд╡ рдХреА рдЖрд╡рд╢реНрдпрдХрддрд╛ рдереА, рдФрд░ рдЬрдм рдирд┐рд░реНрдгрдп рд▓рд┐рдЦрд╛ рдЧрдпрд╛ рдерд╛; рдЗрд╕реЗ рдлрд┐рд░ рд╕реЗ рд▓рд┐рдЦрдиреЗ рдХреА рдХреЛрдИ рдЖрд╡рд╢реНрдпрдХрддрд╛ рдирд╣реАрдВ рдереА, рд╣рд╛рд▓рд╛рдВрдХрд┐ рдЗрд╕реЗ рд╕реНрдерд╛рдирд╛рдВрддрд░рд┐рдд рдХрд░рдиреЗ рдореЗрдВ рдПрдХ рд╢рд╛рдо рд╕реЗ рдЕрдзрд┐рдХ рд╕рдордп рдирд╣реАрдВ рд▓рдЧреЗрдЧрд╛ред

рдЗрд╕рд▓рд┐рдП, рд╢реБрд░реБрдЖрдд рдХреЗ рд▓рд┐рдП, рдПрдХ рд╕рд╛рдзрд╛рд░рдг win32 рдПрдкреНрд▓рд┐рдХреЗрд╢рди рдХреЛ рдПрдХ рдмрдЯрди рдХреЗ рд╕рд╛рде рд▓рд┐рдЦрд╛ рдЧрдпрд╛ рдерд╛, рдЬрд┐рд╕ рдкрд░ рдХреНрд▓рд┐рдХ рдХрд░рдХреЗ рдЗрд╕ рдХреЛрдб рдХреЛ рдирд┐рд╖реНрдкрд╛рджрд┐рдд рдХрд┐рдпрд╛ рдЧрдпрд╛ рдерд╛:
private void SwitchUser() { IntPtr buffer = IntPtr.Zero; int count = 0; //   ,     if (WTSEnumerateSessions(WTS_CURRENT_SERVER_HANDLE, 0, 1, ref buffer, ref count)) { WTS_SESSION_INFO[] sessionInfo = new WTS_SESSION_INFO[count]; //   : //       for (int index = 0; index < count; index++) sessionInfo[index] = (WTS_SESSION_INFO)Marshal.PtrToStructure((IntPtr)((int)buffer + (Marshal.SizeOf(new WTS_SESSION_INFO()) * index)), typeof(WTS_SESSION_INFO)); int activeSessId = -1; int targetSessId = -1; //  Id ,    // 0 ,   "Services" for (int i = 1; i < count; i++) { if (sessionInfo[i].State == WTS_CONNECTSTATE_CLASS.WTSDisconnected) targetSessId = sessionInfo[i].SessionId; else if (sessionInfo[i].State == WTS_CONNECTSTATE_CLASS.WTSActive) activeSessId = sessionInfo[i].SessionId; } if ((activeSessId > 0) && (targetSessId > 0)) { //    ,    . WTSConnectSession(Convert.ToUInt64(targetSessId), Convert.ToUInt64(activeSessId), "", false); } else { //   .   (    ) WTSDisconnectSession(WTS_CURRENT_SERVER_HANDLE, activeSessId, false); } } //    WTSFreeMemory(buffer); } 

рджреЛ рд╕рддреНрд░реЛрдВ рдореЗрдВ, sessionInfo рдореЗрдВ 3 рддрддреНрд╡ рд╣реЛрдВрдЧреЗ: рдПрдХ рд╕реЗрд╡рд╛ рд╕рддреНрд░, рдПрдХ рдкрд╣рд▓рд╛ рдЙрдкрдпреЛрдЧрдХрд░реНрддрд╛ рд╕рддреНрд░, рджреВрд╕рд░рд╛ рдЙрдкрдпреЛрдЧрдХрд░реНрддрд╛ рд╕рддреНрд░ред рддрджрдиреБрд╕рд╛рд░, targetSessId рдФрд░ activeSessId рд╡рд┐рд╢рд┐рд╖реНрдЯ рд░реВрдк рд╕реЗ рдирд┐рд░реНрдзрд╛рд░рд┐рдд рдХрд┐рдП рдЬрд╛рддреЗ рд╣реИрдВред 2 рд╕реЗ рдЕрдзрд┐рдХ рд╕рддреНрд░реЛрдВ рдХреЗ рд▓рд┐рдП, рд╕рдХреНрд░рд┐рдп рдФрд░ рдЕрдВрддрд┐рдо рдирд┐рд╖реНрдХреНрд░рд┐рдп рдХреЗ рдмреАрдЪ рд╕реНрд╡рд┐рдЪрд┐рдВрдЧ рд╣реЛрдЧреАред

рд▓реЗрдХрд┐рди рдпрд╣рд╛рдВ рдореБрдЭреЗ рдПрдХ рдЫреЛрдЯрд╛ рдЭрдЯрдХрд╛ рд▓рдЧрд╛ред рдХреБрдЫ рдкрд╣рд▓реЗ рд╕реЗ рд╣реА рдЕрдиреБрдорд╛рди рд▓рдЧрд╛ рд╕рдХрддреЗ рд╣реИрдВ рдХрд┐ рдпрд╣ рдХрд╛рдо рдирд╣реАрдВ рдХрд░реЗрдЧрд╛ред рдЬрд┐рд╕ рд╕рдордп WTSConnectSession рдПрдкреНрд▓рд┐рдХреЗрд╢рди рд╕реЗ рдЪрд▓рд╛рдпрд╛ рдЬрд╛рддрд╛ рд╣реИ, рдЙрд╕ рд╕рдордп рд╕рдХреНрд░рд┐рдп рдЙрдкрдпреЛрдЧрдХрд░реНрддрд╛ рдбрд┐рд╕реНрдХрдиреЗрдХреНрдЯ рд╣реЛ рдЬрд╛рддрд╛ рд╣реИ, рд▓реЗрдХрд┐рди рджреВрд╕рд░рд╛ рдЙрдкрдпреЛрдЧрдХрд░реНрддрд╛ рд╕рдХреНрд╖рдо рдирд╣реАрдВ рд╣реЛрддрд╛ рд╣реИред рдпрд╛рдиреА рд╕реАрдзреЗ рд╢рдмреНрджреЛрдВ рдореЗрдВ рдХрд╣реЗрдВ, рдПрдХ рдЙрдкрдпреЛрдЧрдХрд░реНрддрд╛ рдХрд╛ рдЖрд╡реЗрджрди рджреВрд╕рд░реЗ рдЙрдкрдпреЛрдЧрдХрд░реНрддрд╛ рдХреЗ рдкреНрд░рд╡реЗрд╢ рдХреА рдкрд╣рд▓ рдирд╣реАрдВ рдХрд░ рд╕рдХрддрд╛ рд╣реИред рд▓реЗрдХрд┐рди рд╕реЗрд╡рд╛ рдпрд╣ рдХрд░ рд╕рдХрддрд╛ рд╣реИ! рд╣рд╛рдВ, рдпрд╣ рдЕрдлрд╝рд╕реЛрд╕ рдХреА рдмрд╛рдд рд╣реИ, рд▓реЗрдХрд┐рди рд╕рд┐рд╕реНрдЯрдо рд╕реЗрд╡рд╛ рдХреЗ рдмрд┐рдирд╛, рд╣рдо рд╕рдлрд▓ рдирд╣реАрдВ рд╣реБрдПред рдЦреИрд░, рдПрдХ рд╕рд┐рд╕реНрдЯрдо рд╕реЗрд╡рд╛ рдмрдирд╛рдПрдВ рдЬрд┐рд╕рдореЗрдВ рд╣рдо рдЗрд╕ рдХреЛрдб рдХреЛ рдЫреЛрдбрд╝ рджреЗрдВрдЧреЗред рдпрд╣ рд╡рд╣ рдЬрдЧрд╣ рд╣реИ рдЬрд╣рд╛рдБ C # рдФрд░ .Net рдХрд╛рдо рдореЗрдВ рдЖрддреЗ рд╣реИрдВ, рдХреНрдпреЛрдВрдХрд┐ рдЗрди рддрдХрдиреАрдХреЛрдВ рдкрд░ рдПрдХ рд╕реЗрд╡рд╛ рд▓рд┐рдЦрдирд╛ рдмрд╣реБрдд рд╕рд░рд▓ рд╣реИ ред рдЕрдм рдирд┐рдореНрди рд╕рдорд╕реНрдпрд╛ рдЙрддреНрдкрдиреНрди рд╣реЛрддреА рд╣реИ: рд╕реЗрд╡рд╛ рдореЗрдВ рдЙрдкрдпреЛрдЧрдХрд░реНрддрд╛ рдЗрдВрдЯрд░рдлрд╝реЗрд╕ рдирд╣реАрдВ рд╣реИ, рдЕрд░реНрдерд╛рдд рдЙрдкрдпреЛрдЧрдХрд░реНрддрд╛ рд╕реАрдзреЗ рд╕реЗрд╡рд╛ рдХреЗ рд╕рдВрдЪрд╛рд▓рди рдХреЛ рдкреНрд░рднрд╛рд╡рд┐рдд рдирд╣реАрдВ рдХрд░ рд╕рдХрддрд╛ рд╣реИ, рдФрд░ рд╕реЗрд╡рд╛ рдЙрдкрдпреЛрдЧрдХрд░реНрддрд╛ рдХреЗ рдХрд╛рд░реНрдпреЛрдВ рдХреЛ рдирд╣реАрдВ рд╕реБрди рд╕рдХрддреА рд╣реИред рдЖрдк рд╣реЙрдЯрдХреА рдХреЛ рд╕реЗрд╡рд╛ рдкрд░ рдирд╣реАрдВ рд▓рдЯрдХрд╛ рд╕рдХрддреЗред

рддреЛ рдпрд╣рд╛рдБ рд╣рдорд╛рд░рд╛ рд╕рдорд╛рдзрд╛рди рд╣реИ:
рдЙрдкрдпреЛрдЧрдХрд░реНрддрд╛ рдПрдкреНрд▓рд┐рдХреЗрд╢рди рдЙрдкрдпреЛрдЧрдХрд░реНрддрд╛ рдХреЛ рд╕реБрдирддрд╛ рд╣реИ, рдФрд░ рдЬрдм рдПрдХ рд╣реЙрдЯрдХреА рдХрд╛ рдкрддрд╛ рд▓рдЧрд╛рдпрд╛ рдЬрд╛рддрд╛ рд╣реИ, рддреЛ рд╕рд┐рд╕реНрдЯрдо рд╕реЗрд╡рд╛ рдХреЛ рдПрдХ рд╕рд┐рдЧреНрдирд▓ рднреЗрдЬрддрд╛ рд╣реИ, рдЬреЛ рд╕реНрд╡рд┐рдЪ рдХрд░рддрд╛ рд╣реИред

рдмрд╣реБрдд рдХрдо рдмрдЪрд╛ рд╣реИ, рд▓реЗрдХрд┐рди рдпрд╣рд╛рдВ рдореИрдВ рдЖрдкрдХреЛ рджрд┐рдЦрд╛рдиреЗ рдХреЗ рд▓рд┐рдП рдХреБрдЫ рдкрд╛ рд╕рдХрддрд╛ рд╣реВрдВред рдЙрджрд╛рд╣рд░рдг рдХреЗ рд▓рд┐рдП, рд╣рдореЗрдВ рдПрдХ рдбреЗрд╕реНрдХрдЯреЙрдк рдПрдкреНрд▓рд┐рдХреЗрд╢рди рдХреА рдЖрд╡рд╢реНрдпрдХрддрд╛ рд╣реИ, рдмрд┐рдирд╛ рд╡рд┐рдВрдбреЛрдЬрд╝ рдХреЗ, рд▓реЗрдХрд┐рди рдЗрд╕рдХреЗ рд▓рд┐рдП рд╣реЙрдЯрдХреА рдХреЛ рд╕реНрд╡реАрдХрд╛рд░ рдХрд░рдирд╛ рд╣реЛрдЧрд╛ред рдпрд╣ рдХрд┐рдпрд╛ рдЬрд╛ рд╕рдХрддрд╛ рд╣реИ рдЬреИрд╕рд╛ рдХрд┐ рд╣рд░ рдХреЛрдИ рдХрд░рддрд╛ рд╣реИ: рдореБрдЦреНрдп рдПрдкреНрд▓рд┐рдХреЗрд╢рди рд╡рд┐рдВрдбреЛ рдЫрд┐рдкрд╛рдПрдВ рдФрд░ рди рджрд┐рдЦрд╛рдПрдВред рд▓реЗрдХрд┐рди рдПрдХ рдмреЗрд╣рддрд░ рдЙрдкрд╛рдп рд╣реИред рдЕрдкрдирд╛ ApplicationContext рд▓рд┐рдЦреЗрдВред рдХрд╛рд▓реЗ рдХреЗ рд╕рд╛рде
рдЙрджрд╛рд╣рд░рдг рдХреЗ рд▓рд┐рдП, рдпрд╣:
 internal class SUApplicationContext: ApplicationContext { private Hotkey hk; private Form form; private const int SWITCH_USER_COMMAND = 193; internal SUApplicationContext() { //   ,     //    form = new Form(); //    Win+A hk = new Hotkey(Keys.A, false, false, false, true); //    hk.Pressed += delegate { SendSwitchCommand(); }; //  ,   if (hk.GetCanRegister(form)) hk.Register(form); //     Application.ApplicationExit += Application_ApplicationExit; } private void SendSwitchCommand() { //    ServiceController sc = new ServiceController("Sus"); try { //    sc.ExecuteCommand(SWITCH_USER_COMMAND); } catch (Exception ex) { MessageBox.Show(ex.Message); } } void Application_ApplicationExit(object sender, EventArgs e) { //     if (hk.Registered) hk.Unregister(); } } [STAThread] static void Main() { Application.EnableVisualStyles(); Application.SetCompatibleTextRenderingDefault(false); Application.Run(new SUApplicationContext()); } 

рдпрд╣рд╛рдБ рдореИрдВ рдЗрдВрдЯрд░рдиреЗрдЯ рдкрд░ рдкрд╛рдП рдЬрд╛рдиреЗ рд╡рд╛рд▓реЗ MovablePython.Hotkey рдЗрдВрдЯрд░рдлреЗрд╕ рдХрд╛ рдЙрдкрдпреЛрдЧ user32.dll рдлрд╝рдВрдХреНрд╢рдВрд╕ RegisterHotKey, UnregisterHotKey рдкрд░ рдХрд░рддрд╛ рд╣реВрдБред

рдФрд░ рд╕реЗрд╡рд╛ рдХреЗ рдмрд╛рд░реЗ рдореЗрдВ рдХреБрдЫ рд╣реА рдкрдВрдХреНрддрд┐рдпрд╛рдБред
 protected override void OnCustomCommand(int command) { base.OnCustomCommand(command); if (command == SWITCH_USER_COMMAND) { SwitchUser(); } } 

рд╣рдо OnCustomCommand рдЗрд╡реЗрдВрдЯ рдХреЛ рдлрд┐рд░ рд╕реЗ рдкрд░рд┐рднрд╛рд╖рд┐рдд рдХрд░рддреЗ рд╣реИрдВ, рдФрд░ рд╣рдорд╛рд░реА рдХрдорд╛рдВрдб рдкреНрд░рд╛рдкреНрдд рдХрд░рдиреЗ рдкрд░, рд╣рдо рдЙрд╕ рдлрд╝рдВрдХреНрд╢рди рдХреЛ рдирд┐рд╖реНрдкрд╛рджрд┐рдд рдХрд░рддреЗ рд╣реИрдВ рдЬрд┐рд╕реЗ рд╣рдо рдкрд╣рд▓реЗ рд╕реЗ рдЬрд╛рдирддреЗ рд╣реИрдВред

рдпрд╣ рд╕реЗрд╡рд╛ рдХреЛ рдкрдВрдЬреАрдХреГрдд рдХрд░рдиреЗ рдФрд░ рд╢реБрд░реВ рдХрд░рдиреЗ рдХреЗ рд▓рд┐рдП рдмрдирд╛ рд╣реБрдЖ рд╣реИ, рдФрд░ рдкреНрд░рддреНрдпреЗрдХ рдЙрдкрдпреЛрдЧрдХрд░реНрддрд╛ рдХреЗ рд▓рд┐рдП рдПрдкреНрд▓рд┐рдХреЗрд╢рди рдХреЛ рд╕реНрдЯрд╛рд░реНрдЯрдЕрдк рдореЗрдВ рдбрд╛рд▓ рджрд┐рдпрд╛ рд╣реИред

рд╡рд╣ рд╕рдм рд╣реИред рдЕрдм, рдХрдВрдкреНрдпреВрдЯрд░ рдХреЛ рд╢реБрд░реВ рдХрд░рдиреЗ рдФрд░ Win + A рдХреЛ рджрдмрд╛рдиреЗ рдХреЗ рдмрд╛рдж рдкрд╣рд▓рд╛ рдЙрдкрдпреЛрдЧрдХрд░реНрддрд╛ рд▓реЙрдЧ рдЗрди рдХрд░рдиреЗ рдХреЗ рдмрд╛рдж, рдЙрд╕рдХрд╛ рд╕рддреНрд░ рдХрд╛рдЯ рджрд┐рдпрд╛ рдЬрд╛рддрд╛ рд╣реИ рдФрд░ рдЙрдкрдпреЛрдЧрдХрд░реНрддрд╛ рдЪрдпрди рд╡рд┐рдВрдбреЛ рджрд┐рдЦрд╛рдИ рджреЗрддреА рд╣реИред рджреВрд╕рд░рд╛ рдЙрдкрдпреЛрдЧрдХрд░реНрддрд╛ рдкреНрд░рд╡реЗрд╢ рдХрд░рддрд╛ рд╣реИ, рд╡рд┐рди + рдП рджрдмрд╛рддрд╛ рд╣реИ - рдкрд╣рд▓реЗ рдЙрдкрдпреЛрдЧрдХрд░реНрддрд╛ рдХрд╛ рдПрдХ рд╕рддреНрд░ рдкреНрд░рдХрдЯ рд╣реЛрддрд╛ рд╣реИред рдФрд░ рдЗрддрдиреЗ рдкрд░ред рдбреА

рдЧрд┐рддреБрдм рдкрд░ рдЖрдк рд╕реНрд░реЛрдд рдкрдврд╝ рд╕рдХрддреЗ рд╣реИрдВред рдпрд╛ рдЖрдк рдкреВрд░реЗ рдкреНрд░реЛрдЬреЗрдХреНрдЯ рдХреЛ рдбрд╛рдЙрдирд▓реЛрдб рдХрд░ рд╕рдХрддреЗ рд╣реИрдВ рдФрд░ рд╕рдВрдХрд▓рд┐рдд рдФрд░ рддреИрдпрд╛рд░-рдЯреВ-рд╡рд░реНрдХ рдирд┐рд╖реНрдкрд╛рджрди рдпреЛрдЧреНрдп рдлрд╛рдЗрд▓реЗрдВред

Source: https://habr.com/ru/post/In178105/


All Articles