Как я могу получить текущий URL-адрес браузера с помощью скрипта AutoHotKey?

Я ищу способ в AutoHotkey поместить текущий посещенный URL-адрес в переменную.

Цель этого AHK — отследить, что я делал в течение дня, чтобы лучше регистрировать свои часы. У меня есть другая система, которую я использую для учета своей работы, но иногда я забываю использовать ее, когда отвлекаюсь.

loop
{
    ; Get current Window ID & Name
    WinGet, active_id, ID, A
    WinGet, process_name, ProcessName, A

    ; Only do anything if any other windows was activated
    if(active_id = PrevActiveId)
    {
        ; Do nothing
    }
    else
    {
        ; Format the time-stamp.
        current=%A_DD%/%A_MM%/%A_YYYY%, %A_Hour%:%A_Min%

        ; Write this data to the log.txt file.
        fileappend, %current% - %process_name%`n, log.txt

        ; Get the URL if process_name = "chrome.exe"
        if(process_name = "chrome.exe")
        {
            ; Put URL in log file
            ; fileappend, %current% - %current_url%`n, log.txt
        }
    }

    PrevActiveId = %active_id%
    Sleep, 100
}

person masterdam79    schedule 08.06.2011    source источник
comment
Решил, но пользователи с репутацией менее 100 не могут ответить на свой вопрос в течение 8 часов после вопроса. Вы можете самостоятельно ответить в течение 5 часов. Так что отчитаюсь через 5 часов..... :-(   -  person masterdam79    schedule 08.06.2011
comment
Хорошая идея вернуться через 5 часов и опубликовать свой ответ. Это может помочь другим :)   -  person ardavis    schedule 15.06.2011


Ответы (6)


Для Chrome получите текст элемента управления Chrome_OmniboxView1, который является омнибоксом (как для текущей версии Chrome, 21.0.1180.83).

Этот код помещает содержимое омнибокса в переменную omniboxContents:

ControlGetText omniboxContents, Chrome_OmniboxView1, Chrome

Обратите внимание, что omniboxContents не обязательно содержит правильный URL-адрес, поскольку «http://» не учитывается, если URL-адрес начинается с «http://». Таким образом, вместо «http://www.google.com» вы получите «www.google.com», что, строго говоря, не является правильным URL-адресом. Это просто потому, что Chrome показывает адрес таким образом в омнибоксе. Вам потребуется добавить дополнительный код, чтобы получить правильный URL-адрес из содержимого омнибокса.

person Community    schedule 27.08.2012
comment
Сейчас это выглядит устаревшим. - person Thierry Dalon; 22.04.2021

Все браузеры, которые я использовал, поддерживают Alt+D для фокусировки и выбора URL-адреса. Вот мои сценарии AHK, которые дублируют текущую вкладку в Google Chrome, Firefox и Internet Explorer, нажав Ctrl+Shift+D..

#IfWinActive ahk_class MozillaUIWindowClass ; Mozilla Firefox 3.x
   ^+d::GenericDuplicateTab() ; (Control+Shift+D)
#IfWinActive

#IfWinActive ahk_class MozillaWindowClass ; Firefox 4, 5, 6, 7, 8+ (?)
   ^+d::GenericDuplicateTab() ; (Control+Shift+D)
#IfWinActive

#IfWinActive ahk_class Chrome_WidgetWin_1 ; Chromium and Chrome 19+
   ^+d::GenericDuplicateTab() ; (Control+Shift+D)
#IfWinActive

#IfWinActive ahk_class Chrome_WidgetWin_1 ; Chrome 18 and less
   ^+d::GenericDuplicateTab() ; (Control+Shift+D)
#IfWinActive

#IfWinActive ahk_class IEFrame
   ^+d::InternetExplorerDuplicateTab() ; (Control+Shift+D)
#IfWinActive

GenericDuplicateTab()
{
   ; Wait for both Control and Shift to be released.
   KeyWait Control
   KeyWait Shift

   BackupClipbrd := Clipboard
   Sleep 50

   Send !d ; Select the url textbox
   Sleep 150

   Send ^x ; Copy the url
   ClipWait 0.1
   If ERRORLEVEL
   {
    Clipboard := BackupClipbrd
    Return
   }

   Send ^t ; Open a new tab
   Sleep 50

   Send ^v ; Paste the url into the new tab's url textbox
   Sleep 50
   Send {Enter}

   Clipboard := BackupClipbrd
}

InternetExplorerDuplicateTab()
{
   ; Wait for both Control and Shift to be released.
   KeyWait Control
   KeyWait Shift

   Send ^k ; Call IE's shortcut to duplicate tab (Control+K)
   Sleep 100

   Send ^{TAB} ; Switch to that tab
}
person kodybrown    schedule 11.09.2012

Это также можно сделать, не полагаясь на буфер обмена, напрямую просматривая фактические компоненты, составляющие окно браузера. Дополнительная информация: http://www.autohotkey.com/board/topic/111114-get-the-url-of-the-current-active-browser-tab/. Этот метод гораздо более эффективен, но основан на использовании API ОС.

person Mihai Rotaru    schedule 28.09.2014

Или вы можете использовать F6.

Большинство браузеров попадают в адресную строку и выбирают для вас весь URL-адрес при нажатии F6.

Тогда дело просто в копипасте.

Однако для более новых версий Firefox это Ctrl+L.

Для этого вы можете проверить заголовок окна.

person tumchaaditya    schedule 20.04.2012
comment
это не хороший трюк. я вмешиваюсь в пользовательский браузер, который пользователь может подумать, что это взлом. - person Himanshu sharma; 30.05.2016
comment
Я рекомендую использовать Alt+D вместо F6. Клавиша F6 переключает фокус, то есть вы можете случайно отменить выбор строки URL, если она уже была в фокусе. - person Stevoisiak; 22.09.2017

Чистый способ сделать это:

    GroupAdd, WebBrowsers, ahk_class MozillaWindowClass
    GroupAdd, WebBrowsers, ahk_class IEFrame
    GroupAdd, WebBrowsers, ahk_class Chrome_WidgetWin_0
    GroupAdd, WebBrowsers, ahk_class Chrome_WidgetWin_1
    GroupAdd, WebBrowsers, ahk_class OperaWindowClass
    GroupAdd, WebBrowsers, ahk_class {1C03B488-D53B-4a81-97F8-754559640193}
    ; etc.

    #IfWinActive, ahk_group WebBrowsers
    {
        ^+d::
        ; [Instructions...]
        return
    }#If
person Exnius    schedule 02.11.2013

Вы можете использовать сочетание клавиш Alt+D, чтобы активировать адресную строку, а затем скопировать URL-адрес, используя сочетание клавиш Ctrl+C.

F1::
{
Send, !d
Sleep 50
Send, ^c
Sleep 50
Return
}
person insearchofcode    schedule 16.10.2019