如何使用AutoHotKey脚本获取当前浏览器URL?

时间:2011-06-08 07:18:57

标签: browser autohotkey

我在AutoHotkey中寻找一种方法将当前访问的网址放入变量中。

这个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
}

7 个答案:

答案 0 :(得分:4)

对于Chrome,请获取控件Chrome_OmniboxView1的文本,这是多功能框(与当前版本的Chrome一样,21.0.1180.83)。

此代码将多功能框的内容放入变量omniboxContents:

ControlGetText omniboxContents, Chrome_OmniboxView1, Chrome

请注意,omniboxContents不一定包含正确的URL,因为如果URL以“http://”开头,则省略“http://”。因此,您将获得“www.google.com”而不是“http://www.google.com”,严格来说,这不是正确的网址。这只是因为Chrome在多功能框中显示了这种方式的地址。您将添加额外的代码,以从多功能框的内容中获取正确的URL。

答案 1 :(得分:3)

我使用的所有浏览器都支持 Alt + D 来关注并选择网址。以下是我的AHK脚本,它通过按 Ctrl + Shift + D 来复制Google Chrome,Firefox和Internet Explorer中的当前选项卡。 / p>

#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
}

答案 2 :(得分:2)

或者您可以使用 F6

当按 F6 时,大多数浏览器都会找到地址栏并为您选择整个网址。

然后只是复制粘贴的问题。

对于较新的Firefox版本,其 Ctrl + L 虽然。

为此,您可以检查窗口标题。

答案 3 :(得分:1)

干净利落的方法:

    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

答案 4 :(得分:0)

使用WinGetTitle功能,因为大多数浏览器都会在标题中设置当前网址。

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%

}

答案 5 :(得分:0)

通过直接检查构成浏览器窗口的实际组件,也可以在不依赖剪贴板的情况下完成。更多信息:http://www.autohotkey.com/board/topic/111114-get-the-url-of-the-current-active-browser-tab/。这种方法更有效,但依赖于使用OS API。

答案 6 :(得分:0)

您可以使用 Alt + D 快捷方式激活地址栏,然后使用 Ctrl + C 复制网址kbd>快捷方式

F1::
{
Send, !d
Sleep 50
Send, ^c
Sleep 50
Return
}