Я пытаюсь изменить URL-адрес в адресной строке Firefox и выполнить его (в Visual Studio 2019 / C ++).
Мне удалось поместить новый URL-адрес в адресную строку, но это только кажется"hover" там, и я должен вручную щелкнуть в поле адреса и добавить пробел, чтобы он был распознан как новая ссылка и мог быть выполнен с помощью кнопки со стрелкой вправо или нажатием клавиши ввода. Так есть ли способ, как URL-адрес сразу же запускается моим приложением без необходимости делать это вручную? Сначала я попробовал виртуальные коды клавиш, затем я надеялся получить лучший результат со скан-кодами, но оба дали одинаковый результат. Следующий код использует коды сканирования:
HWND hFF = FindWindowA ("MozillaWindowClass", NULL); SetForegroundWindow (hFF);
INPUT ip;
ip.type = INPUT_KEYBOARD;
ip.ki.time = 0;
ip.ki.wVk = 0; //We're doing scan codes instead
ip.ki.dwExtraInfo = 0;
//This let's you do a hardware scan instead of a virtual keypress
ip.ki.dwFlags = KEYEVENTF_SCANCODE;
ip.ki.wScan = 0x1D; // CTRL left
//Send the press
SendInput(1, &ip, sizeof(INPUT));
ip.ki.dwFlags = KEYEVENTF_SCANCODE;
ip.ki.wScan = 0x26; // 'L'
//Send the press
SendInput(1, &ip, sizeof(INPUT));
//Prepare a keyup event
ip.ki.dwFlags = KEYEVENTF_SCANCODE | KEYEVENTF_KEYUP;
SendInput(1, &ip, sizeof(INPUT));
ip.ki.dwFlags = KEYEVENTF_SCANCODE;
ip.ki.wScan = 0x1D;
ip.ki.dwFlags = KEYEVENTF_SCANCODE | KEYEVENTF_KEYUP;
SendInput(1, &ip, sizeof(INPUT));
ip.ki.dwFlags = KEYEVENTF_SCANCODE;
ip.ki.wScan = 0x1D; // CTRL left
//Send the press
SendInput(1, &ip, sizeof(INPUT));
ip.ki.dwFlags = KEYEVENTF_SCANCODE;
ip.ki.wScan = 0x2F; // 'V'
//Send the press
SendInput(1, &ip, sizeof(INPUT));
//Prepare a keyup event
ip.ki.dwFlags = KEYEVENTF_SCANCODE | KEYEVENTF_KEYUP;
SendInput(1, &ip, sizeof(INPUT));
ip.ki.dwFlags = KEYEVENTF_SCANCODE;
ip.ki.wScan = 0x1D;
ip.ki.dwFlags = KEYEVENTF_SCANCODE | KEYEVENTF_KEYUP;
SendInput(1, &ip, sizeof(INPUT));
ip.ki.dwFlags = KEYEVENTF_SCANCODE;
ip.ki.wScan = 0x1C; // 'Return'
//Send the press
SendInput(1, &ip, sizeof(INPUT));
//Prepare a keyup event
ip.ki.dwFlags = KEYEVENTF_SCANCODE | KEYEVENTF_KEYUP;
SendInput(1, &ip, sizeof(INPUT));
, как я уже сказал, этот код позволяет только новыйURL-адрес находится внутри адресной строки, сам URL-адрес не «активирован», поэтому его можно выполнить с помощью клавиши возврата.