Как вставить новый URL в адресную строку Firefox И выполнить его? - PullRequest
0 голосов
/ 21 октября 2019

Я пытаюсь изменить 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-адрес не «активирован», поэтому его можно выполнить с помощью клавиши возврата.

...