Мне нужно взять QString (например, «A») и преобразовать эту строку в 0x41. Вход представляет собой QString, а выход должен быть «WORD» (материал Microsoft).Преобразование QString в unsigned short int
СЛОВО - это неподписанный короткий int в моем случае. Я пробовал:.
Qstring str = "A"
qDebug() << str.toLatin1().toHex().prepend("0x");
результат хороший «0x41», но это не беззнаковое короткое ИНТ :(Я попытался литая, но он не работает
коммун ответ, кажется, использование " toUShort», но мой код не работает с этим изменением я хочу эмулировать клавиатуру с дллами winuser (https://msdn.microsoft.com/en-us/library/windows/desktop/ms646270%28v=vs.85%29.aspx):.
этого кода работа:
INPUT key;
key.type = INPUT_KEYBOARD;
key.ki.wScan = 0; // hardware scan code for key
key.ki.time = 0;
key.ki.dwExtraInfo = 0;
key.ki.wVk = 0x42; // virtual-key code for the "a" key
key.ki.dwFlags = 0; // 0 for key press
SendInput(1, &key, sizeof(INPUT));
key.ki.dwFlags = KEYEVENTF_KEYUP; // KEYEVENTF_KEYUP for key release
SendInput(1, &key, sizeof(INPUT));
что нет:
QString str = "a";
bool ok;
INPUT key;
key.type = INPUT_KEYBOARD;
key.ki.wScan = 0; // hardware scan code for key
key.ki.time = 0;
key.ki.dwExtraInfo = 0;
key.ki.wVk = str.toUShort(&ok,16);
key.ki.dwFlags = 0; // 0 for key press
SendInput(1, &key, sizeof(INPUT));
key.ki.dwFlags = KEYEVENTF_KEYUP; // KEYEVENTF_KEYUP for key release
SendInput(1, &key, sizeof(INPUT));
может быть, это просто потому, что короткое возвращение 42 и не 0x42.
- SOLUTION -
void SyncKeyboard::writeUID(QString uid)
{
qDebug() << uid;
for(int i = 0; i < uid.length(); i++)
pressKey(uid.at(i).unicode());
}
void SyncKeyboard::pressKey(ushort letter)
{
INPUT key;
key.type = INPUT_KEYBOARD;
key.ki.wScan = 0; // hardware scan code for key
key.ki.time = 0;
key.ki.dwExtraInfo = 0;
key.ki.wVk = letter;
key.ki.dwFlags = 0; // 0 for key press
SendInput(1, &key, sizeof(INPUT));
key.ki.dwFlags = KEYEVENTF_KEYUP; // KEYEVENTF_KEYUP for key release
SendInput(1, &key, sizeof(INPUT));
}
Показать свой состав, пожалуйста. – LogicStuff