How can I get the current browser URL with an AutoHotKey script?

回眸只為那壹抹淺笑 提交于 2019-11-29 06:56:14

For Chrome, get the text of the control Chrome_OmniboxView1, which is the omnibox (as for the current version of Chrome, 21.0.1180.83).

This code puts the content of the omnibox into the variable omniboxContents:

ControlGetText omniboxContents, Chrome_OmniboxView1, Chrome

Note that omniboxContents doesn't necessarily contain a correct URL, because "http://" is left out if the URL starts with "http://". So instead of "http://www.google.com" you will get "www.google.com", which strictly speaking isn't a correct URL. This is simply because Chrome shows the address that way in the Omnibox. You will have add extra code to get a correct URL from the contents of the omnibox.

wasatchwizard

All browsers that I've used support Alt+D to focus and select the url. Here are my AHK scripts that duplicates the current tab in Google Chrome, Firefox, and Internet Explorer by pressing 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
}
tumchaaditya

Or you can use F6.

Most of the browsers get to address bar and select entire URL for you when press F6.

Then its just matter of copy-paste.

For newer Firefox versions, its Ctrl+L though.

For this, you can check window title.

A clean way to do this:

    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

It is also possible to do it without relying on the clipboard, by directly inspecting the actual components which make up the browser window. More info: http://www.autohotkey.com/board/topic/111114-get-the-url-of-the-current-active-browser-tab/. This method much more effective, but relies on using OS APIs.

Use the WinGetTitle function, as most browsers set the current URL in the title.

loop
{
    ; Get current Window ID & Name
    WinGet, active_id, ID, A
    WinGet, process_name, ProcessName, A
    WinGetTitle, this_title, ahk_id %active_id%

    ; Format the time-stamp.
    current=%A_DD%/%A_MM%/%A_YYYY%, %A_Hour%:%A_Min%

    ; Only do anything if any other windows was activated
    if(active_id = PrevActiveId)
    {
        if process_name contains chrome.exe,firefox.exe,iexplore.exe,flock.exe,k-meleon.exe,javaw.exe
        {
            ; Write titles to the log.txt file.
            fileappend, %current% - %process_name% - %this_title%`n, log.txt
        }
    }
    else
    {
        ; Write titles to the log.txt file.
        fileappend, %current% - %process_name% - %this_title%`n, log.txt
    }

    Sleep, 1000
    PrevActiveId = %active_id%

}
易学教程内所有资源均来自网络或用户发布的内容,如有违反法律规定的内容欢迎反馈
该文章没有解决你所遇到的问题?点击提问,说说你的问题,让更多的人一起探讨吧!