2011-06-08 15 views
7

Estoy buscando una forma en AutoHotkey para poner la url actualmente visitada en una variable.¿Cómo puedo obtener la URL del navegador actual con un script AutoHotKey?

El objetivo de este AHK es rastrear lo que he estado haciendo durante el día para registrar mejor mis horas. Tengo otro sistema que utilizo para sincronizar mi trabajo, pero a veces me olvido de usarlo cuando recibo un seguimiento lateral.

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 
} 
+1

Lo resolvió pero "Los usuarios con menos de 100 de reputación no pueden responder a su propia pregunta durante 8 horas después de preguntar. Puede auto-responder en 5 horas". Así que se informará en 5 horas ..... :-( – masterdam79

+1

Una buena idea para volver en 5 horas y publicar su respuesta. Podría ayudar a los demás :) – ardavis

Respuesta

0

utilizar la función WinGetTitle, como la mayoría de los navegadores establecen la URL actual en el título.

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% 

} 
2

O puede utilizar F6.

La mayoría de los navegadores llegan a la barra de direcciones y seleccionan la URL completa cuando presionas F6.

Entonces es solo cuestión de copiar y pegar.

Para las versiones más recientes de Firefox, su Ctrl +L sin embargo.

Para esto, puede verificar el título de la ventana.

+0

esto no es un buen truco. Estoy interfiriendo en el navegador del usuario que el usuario puede pensar que es un hack corto de cosas. –

+0

Recomiendo usar ** Alt + D ** en lugar de F6. La tecla F6 alterna el foco, lo que significa que puede anular la selección accidental de la barra de URL si ya estaba enfocada. –

3

Para Chrome, obtenga el texto del control Chrome_OmniboxView1, que es el omnibox (en cuanto a la versión actual de Chrome, 21.0.1180.83).

Este código pone el contenido del cuadro multifunción en las omniboxContents variables:

ControlGetText omniboxContents, Chrome_OmniboxView1, Chrome 

Tenga en cuenta que omniboxContents no contiene necesariamente una URL correcta, ya que "http: //" se deja fuera si la URL comienza con "http: //". Por lo tanto, en lugar de "http://www.google.com" obtendrá "www.google.com", que estrictamente hablando no es una URL correcta. Esto es simplemente porque Chrome muestra la dirección de esa manera en el Omnibox. Deberá agregar un código adicional para obtener una URL correcta de los contenidos del cuadro multifunción.

3

Todos los navegadores que he utilizado el apoyo Alt + D para enfocar y seleccionar la URL. Aquí están mis guiones AHK que duplica la pestaña actual en Google Chrome, Firefox, Internet Explorer y pulsando 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 
} 
1

Una forma limpia de hacer esto:

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 
Cuestiones relacionadas