我在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
}
答案 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
}