Как сменить рабочий стол? Меня интересует отправка событий мыши на рабочий стол winlogon (я буду запускать приложение под системной учетной записью). Дело в том, что ничего не происходит, когда я вызываю mouse_event (или любую другую функцию (keybd_event, sendinput, sendkeys и т. д.). Ничего не происходит, даже если я все еще нахожусь на рабочем столе по умолчанию. setthreaddesktop возвращает true, так что это означает, что изменение удалось. Я даже пытался поставить messagebox с тем же результатом.
Я создал новый поток, потому что в противном случае setthreaddesktop вернет код ошибки 170 (ресурс используется).
bool dd = false;
StringBuilder name = new StringBuilder(200, 200);
uint sss = 0;
IntPtr hDesktop = OpenInputDesktop(1, true, desktop_ReadObjects | desktop_WriteObjects);
System.Threading.Tasks.Task.Factory.StartNew(() =>
{ dd = SetThreadDesktop(hDesktop);
CloseDesktop(hDesktop);
bool get = GetUserObjectInformation(hDesktop, 2, name, 100, ref sss);
SendKeys.Send("X");
mouse_event(MOUSEEVENTF_LEFTDOWN, 400, 400, 0, 0);
mouse_event(MOUSEEVENTF_LEFTUP, 400, 400, 0, 0);
mouse_event(MOUSEEVENTF_RIGHTDOWN, 400, 400, 0, 0);
mouse_event(MOUSEEVENTF_RIGHTUP, 400, 400, 0, 0);
}).Wait();
Изменить: если я не использую SetThreadDesktop, mouse_event работает
Спасибо,