Войти в систему пользователя на экране блокировки с имитацией нажатия клавиш с помощью SendInput? ⇐ C++
-
Anonymous
Войти в систему пользователя на экране блокировки с имитацией нажатия клавиш с помощью SendInput?
Я хочу использовать функцию SendInput() для входа в свою учетную запись, как если бы я это делал лично; нажмите ввод, нажмите клавиши пароля, нажмите ввод еще раз.
Целью этого является то, что я написал программу удаленного подключения, с помощью которой я могу получать снимки экрана и проверять, все ли в порядке. Программа запускается с планировщиком задач, поэтому после перезагрузки компьютера я все равно могу отправлять команды и получать снимки экрана. Но я хочу добавить возможность удаленного входа в систему, чтобы, если мой компьютер перезагрузится, я мог удаленно отправить сигнал для входа в систему.
Он работает так, как задумано на рабочем столе, но когда я блокирую своего пользователя с помощью Win+L, он ничего не делает ни на экране блокировки, ни на рабочем столе, когда я вхожу в систему для проверки.
Вот код
void sendPassword(){ //Сопоставление для хранения ключей в виде char-WORD QMap keyMap; keyMap["Enter"] = 0x0D; карта клавиш["0"] = 0x30; карта клавиш["1"] = 0x31; карта клавиш["2"] = 0x32; карта клавиш["3"] = 0x33; карта клавиш["4"] = 0x34; карта клавиш["5"] = 0x35; карта клавиш["6"] = 0x36; карта клавиш["7"] = 0x37; карта клавиш["8"] = 0x38; карта клавиш["9"] = 0x39; keyMap["A"] = 0x41; карта клавиш["B"] = 0x42; keyMap["C"] = 0x43; keyMap["D"] = 0x44; keyMap["E"] = 0x45; keyMap["F"] = 0x46; keyMap["G"] = 0x47; keyMap["H"] = 0x48; keyMap["I"] = 0x49; keyMap["J"] = 0x4A; keyMap["K"] = 0x4B; карта клавиш["L"] = 0x4C; keyMap["M"] = 0x4D; keyMap["N"] = 0x4E; keyMap["O"] = 0x4F; keyMap["P"] = 0x50; keyMap["Q"] = 0x51; keyMap["R"] = 0x52; keyMap["S"] = 0x53; keyMap["T"] = 0x54; keyMap["U"] = 0x55; keyMap["V"] = 0x56; keyMap["W"] = 0x57; карта клавиш["X"] = 0x58; карта клавиш["Y"] = 0x59; keyMap["Z"] = 0x5A; //Получаем пароль из файла. QFile passFile("password.txt"); passFile.open(QIODevice::ReadOnly); Пароль QString = QString::fromUtf8(passFile.readAll()).split("\r\n")[0].split("\n")[0]; проходФайл.закрыть(); //Инициализируем массив входов. INPUT* inputs = новый INPUT[password.length()*2+4] {}; //Добавляем кнопку ввода в массив входов, клавиши вниз и вверх. входы[0].тип = INPUT_KEYBOARD; inputs[0].ki.wVk = keyMap["Enter"]; входы[1].тип = INPUT_KEYBOARD; inputs[1].ki.wVk = keyMap["Enter"]; inputs[1].ki.dwFlags = KEYEVENTF_KEYUP; for(int i=0; i
Я хочу использовать функцию SendInput() для входа в свою учетную запись, как если бы я это делал лично; нажмите ввод, нажмите клавиши пароля, нажмите ввод еще раз.
Целью этого является то, что я написал программу удаленного подключения, с помощью которой я могу получать снимки экрана и проверять, все ли в порядке. Программа запускается с планировщиком задач, поэтому после перезагрузки компьютера я все равно могу отправлять команды и получать снимки экрана. Но я хочу добавить возможность удаленного входа в систему, чтобы, если мой компьютер перезагрузится, я мог удаленно отправить сигнал для входа в систему.
Он работает так, как задумано на рабочем столе, но когда я блокирую своего пользователя с помощью Win+L, он ничего не делает ни на экране блокировки, ни на рабочем столе, когда я вхожу в систему для проверки.
Вот код
void sendPassword(){ //Сопоставление для хранения ключей в виде char-WORD QMap keyMap; keyMap["Enter"] = 0x0D; карта клавиш["0"] = 0x30; карта клавиш["1"] = 0x31; карта клавиш["2"] = 0x32; карта клавиш["3"] = 0x33; карта клавиш["4"] = 0x34; карта клавиш["5"] = 0x35; карта клавиш["6"] = 0x36; карта клавиш["7"] = 0x37; карта клавиш["8"] = 0x38; карта клавиш["9"] = 0x39; keyMap["A"] = 0x41; карта клавиш["B"] = 0x42; keyMap["C"] = 0x43; keyMap["D"] = 0x44; keyMap["E"] = 0x45; keyMap["F"] = 0x46; keyMap["G"] = 0x47; keyMap["H"] = 0x48; keyMap["I"] = 0x49; keyMap["J"] = 0x4A; keyMap["K"] = 0x4B; карта клавиш["L"] = 0x4C; keyMap["M"] = 0x4D; keyMap["N"] = 0x4E; keyMap["O"] = 0x4F; keyMap["P"] = 0x50; keyMap["Q"] = 0x51; keyMap["R"] = 0x52; keyMap["S"] = 0x53; keyMap["T"] = 0x54; keyMap["U"] = 0x55; keyMap["V"] = 0x56; keyMap["W"] = 0x57; карта клавиш["X"] = 0x58; карта клавиш["Y"] = 0x59; keyMap["Z"] = 0x5A; //Получаем пароль из файла. QFile passFile("password.txt"); passFile.open(QIODevice::ReadOnly); Пароль QString = QString::fromUtf8(passFile.readAll()).split("\r\n")[0].split("\n")[0]; проходФайл.закрыть(); //Инициализируем массив входов. INPUT* inputs = новый INPUT[password.length()*2+4] {}; //Добавляем кнопку ввода в массив входов, клавиши вниз и вверх. входы[0].тип = INPUT_KEYBOARD; inputs[0].ki.wVk = keyMap["Enter"]; входы[1].тип = INPUT_KEYBOARD; inputs[1].ki.wVk = keyMap["Enter"]; inputs[1].ki.dwFlags = KEYEVENTF_KEYUP; for(int i=0; i
Мобильная версия