मैं एक मौजूदा Google Chrome टैब पर ध्यान केंद्रित करने के लिए ऑटोहोटकी का उपयोग कैसे कर सकता हूं, न कि "कंटेनर" विंडो पर?


16

मैं मौजूदा Google Chrome टैब पर ध्यान केंद्रित करने के लिए ऑटोहोटकी का उपयोग कैसे कर सकता हूं, न कि "कंटेनर" विंडो?

विवरण

Google Chrome कंटेनर की खिड़की के हैंडल के साथ प्रत्येक विंडो का प्रतिनिधित्व करता है, जिसमें एक या अधिक टैब होते हैं। टैब (कम से कम वर्तमान एक) का अपना विंडो हैंडल है। टैब विंडो हैंडल में विंडो शीर्षक होते हैं (जो वर्तमान में "- Google Chrome" में सभी समाप्त होते हैं), जबकि कंटेनर विंडो हैंडल स्वयं नहीं होता है। निम्न ऑटोहोटेकी कोड Google क्रोम के लिए काम नहीं करता है:

^+i::
if WinExist("ahk_class Chrome_WidgetWin_0")
    WinActivate
else
    Run "C:\Users\vleeshue\AppData\Local\Google\Chrome\Application\chrome.exe"
return

यह बाइंडिंग Google Chrome विंडो पर केंद्रित होगी यदि यह मौजूद है या Google Chrome चलाएगी। हालांकि, यह अक्सर कंटेनर विंडो को लक्षित करेगा (विंडो स्पाई में, विंडो शीर्षक रिक्त है)। कंटेनर विंडो को सक्रिय करने से Google Chrome कीबोर्ड शॉर्टकट का उपयोग बंद हो जाता है। दुर्गम कीबोर्ड शॉर्टकट में सर्वग्राही तक पहुँचने के लिए सभी महत्वपूर्ण ctrl + l शामिल हैं। चूंकि मुझे अभी तक कंटेनर विंडो के बजाय टैब विंडो को लगातार सक्रिय करने का कोई तरीका नहीं मिला है, मेरा काम माउस का उपयोग करना है, लेकिन यदि संभव हो तो मैं इससे बचना पसंद करूंगा।

विंडो जासूस स्क्रीनशॉट

कंटेनर विंडो हैंडल

टैब विंडो हैंडल

पृष्ठभूमि

वर्तमान Google Chrome संस्करण: 5.0.317.2 देव

यदि मैं पहले से चल रहा है या यह नहीं चल रहा है तो एप्लिकेशन को चलाने के लिए एक सामान्य ऑटोहोटेकी बाइंडिंग बाइंडिंग का उपयोग करता है।

उदाहरण के लिए, मैं इसे फ़ोबोबार 220 के लिए उपयोग करता हूं

^+m::
If WinExist("foobar2000")
    WinActivate
else
    Run "C:\Program Files (x86)\foobar2000\foobar2000.exe"
return

जवाबों:


5
^+i::
if WinExist("ahk_class Chrome_WindowImpl_0")
  {
  WinActivate
  ControlFocus, Chrome_AutocompleteEditView1
  }
else
  Run "C:\Users\vleeshue\AppData\Local\Google\Chrome\Application\chrome.exe"
return

चाल चलनी चाहिए

("Chrome_AutocompleteEditView1" सर्वव्यापी नियंत्रण का नाम है, इसलिए आप Send ^aसभी का चयन करने के लिए जोड़ सकते हैं )

नोट:ahk_class क्रोम के अपने संस्करण को प्राप्त करने के लिए, जैसे, ऑटोहोट्की निर्देशिका ahk_class Chrome_WindowImp1-0के AU3_Spy.exeअंदर का उपयोग करें । यदि आप उदाहरण के लिए काम नहीं करते हैं तो यह आपको अपने क्रोम ब्राउज़र के लिए सही आह वर्ग खोजने की अनुमति देगा।

अद्यतन: मैं पुन: पेश नहीं कर सकता, शायद यह एक और नियंत्रण के साथ बेहतर होगा ... एक विंडो नियंत्रण की एक सूची रखने के लिए मैं इस कोड का उपयोग करता हूं:

#Persistent
SetTimer, WatchCursor, 100
return

WatchCursor:
  MouseGetPos, , , id, control
  WinGetTitle, title, ahk_id %id%
  WinGetClass, class, ahk_id %id%
  WinGet, ControlList, ControlList, A
  ToolTip, Under Cursor:`nahk_id: %id%`nahk_class: %class%`nTitle:%title%`nControl: %control%`n`nWindow Control List:`n%ControlList%
return

तो मेरे गूगल क्रोम का नियंत्रण 4.0.249.78 बीटा (36714) हैं:

  • ViewsTextfieldEdit1
  • Chrome_RenderWidgetHostWND1
  • Chrome_AutocompleteEditView1
  • Chrome_WindowImpl_01
  • Chrome_WindowImpl_02

आपका बहुत बहुत धन्यवाद। यह मेरे पिछले फ़ंक्शन की तुलना में अधिक बार काम करता है (ahk_class Chrome_WindowImpl_0 को ahk_class Chrome_WidgetWin_0 पर बदलना होगा, लेकिन यह Google Chrome के विभिन्न संस्करणों के कारण हो सकता है)। दुर्भाग्य से, यह अभी भी कुछ समय के लिए काम नहीं करता है और उस मामले को पुन: पेश करना मुश्किल है। एक बार जब मैं एक कंटेनर विंडो पर बंद हो जाता हूं (प्रश्न पोस्ट में स्क्रीनशॉट देखें), मुझे अभी भी माउस का सहारा लेना है।
vleeshue

मुझे Google Chrome नियंत्रणों की सूची कैसे मिलेगी? इसे थोड़ा उपयोग करने के बाद, मैं "सामग्री" विंडो पर ध्यान केंद्रित करना पसंद करूंगा। उदाहरण के लिए, यदि सक्रिय टैब Google रीडर या जीमेल है, तो मैं उनके कीबोर्ड शॉर्टकट तक पहुंचना चाहूंगा, जो केवल "सामग्री" विंडो पर ध्यान केंद्रित करते समय लागू होते हैं। इसके अलावा, "सामग्री" विंडो पर ध्यान केंद्रित करने से तेज़ पृष्ठ खोज की अनुमति मिलती है। इसके अलावा, "कंटेंट" विंडो से ऑम्निबार में जाने के लिए, मैं हमेशा ctrl + l का उपयोग कर सकता हूं।
vleeshue

1
हाँ यह एक और नियंत्रण के साथ बेहतर हो सकता है, मेरे अपडेट को देखें
फ़्लक्सटेंडू

हम्म ... मुझे मिलता है: Chrome_WidgetWin_01, Chrome_WidgetWin_02, Chrome_RenderWidgetHostHWND1, ViewsTextfieldEdit1, Chrome_AutocomodEditView1। मैं कौन सा नियंत्रण चाहता हूं, यह कटौती करने का समय धन्यवाद! Update1: कुछ त्वरित परीक्षण से पता चलता है कि Chrome_WidgetWin_01 मुझे क्या चाहिए। मेरा अनुमान है कि अतिरिक्त पृष्ठ सामग्री के आधार पर बनाए गए हैं। Update2: एक Google रीडर टैब निश्चित रूप से इस सुपरसुअर एडिट टैब की तुलना में कम से कम एक अधिक नियंत्रण रखता है।
vleeshue

दुर्भाग्य से, मैं फिर से "कंटेनर" विंडो में जा रहा हूं (विंडो स्पाई में रिक्त विंडो शीर्षक) और स्वीकृत उत्तर टैग को पूर्ववत करना था। आप हालांकि एक बड़ी मदद रहे हैं।
vleeshue

3

Alt + Tab का उपयोग करके समाधान:

; Activates the window identified with wintitle if it's active,
; else opens a new one
OpenWindow(wintitle, runCommand)
{
    if WinExist(wintitle)
        WinActivate ; activates the window found above. Sweet.
    else
        Run %runCommand%
}

#g::
AppsKey & g::
    prevKeyDelay := A_KeyDelay
    SetKeyDelay, 100
    OpenWindow("ahk_class Chrome_WidgetWin_0", A_AppData
                . "\Local\Google\Chrome\Application\chrome.exe")
    SendEvent {Alt down}{Tab}
    SendEvent +{Tab}
    SendEvent {Alt up}
    SetKeyDelay, prevKeyDelay
return

आवश्यकतानुसार तर्क समायोजित करें। SetKeyDelay का उपयोग इसलिए किया गया क्योंकि बहुत तेज़ी से भेजने से काम नहीं होता है।


3

आप AutoHotkey के बजाय Chrome एक्सटेंशन का उपयोग करना चाह सकते हैं। एक्सटेंशन को सभी खुले टैब तक पहुंच मिल सकती है, जिसमें URL और टैब फ़ोकस को बदलने की क्षमता शामिल है। अन्यथा आपको संभवतः सक्रिय विंडो को क्वेरी करने के लिए Chrome में Accessibility सुविधाओं का उपयोग करने की आवश्यकता होगी । मेरा मानना ​​है कि इस तरह से रेस्क्यूटाइम ट्रैक जैसे प्रोग्राम सक्रिय URL क्या है। उदाहरण के लिए, विंडोज 7 एसडीके से एक्सेसिबल इवेंट वॉचर (AccEvent) का उपयोग क्रोम में टैब बदलते समय निम्न घटनाओं को दर्शाता है:

Google Chrome का आगमन


मुझे इसकी जानकारी नहीं थी। सर उठाने के लिए धन्यवाद।
vleeshue

ऐसा लगता है कि AutoHotkey के पास iAccessible इंटरफ़ेस के साथ काम करने के लिए कुछ समर्थन है। हो सकता है कि यह कोशिश करें और देखें कि क्या यह मदद करता है: autohotkey.com/forum/viewtopic.php?t=48629
ग्रेग ब्रे

1

यदि आप क्रोम का एक टैब ढूंढना चाहते हैं तो आप इसका उपयोग कर सकते हैं

SetTitleMatchMode, 2
If WinExist("your title ahk_exe chrome.exe")

     .... do your stuff ... 

else {
     .... do your other stuff ...
}

return

चूंकि क्रोम में सब कुछ एक प्रक्रिया है, आपके टैब भी प्रक्रियाएं हैं।


0

विंडो जासूस "विज़िबल विंडो टेक्स्ट" फ़ील्ड में टैब का शीर्षक देता है।

आप तब तक टैब में लूप कर सकते हैं जब तक आपको वांछित टेक्स्ट नहीं मिल जाता। टैब से टैब पर जाने के लिए, CTRL+ TABकुंजियाँ भेजें । समस्या कुछ बिंदु पर रुकने की होगी लेकिन अगर आपको पता है कि आप एक्स टैब से अधिक का उपयोग नहीं करते हैं, तो आप वांछित टैब नहीं मिलने पर किसी बिंदु पर ब्रेक लगाने के लिए लूप में एक काउंटर शामिल कर सकते हैं।


दुर्भाग्य से, ctrl + टैब भी दुर्गम है। यहां एक कंटेनर विंडो पर और संदर्भ के लिए इस टैब पर विंडो जासूस का स्क्रीनशॉट है: img43.imageshack.us/img43/7341/containere.png img25.imageshack.us/img25/2651/tabw.png मैंने भी उन्हें अभी-अभी जोड़ा है मुख्य प्रश्न पोस्ट।
vleeshue


0
!f::
    IfWinExist ahk_class Chrome_WidgetWin_0
    {   IfWinActive ahk_class Chrome_WidgetWin_0
        {   Loop, 60
            {   GetKeyState, state, C
                if state = D
                {   KeyWait, c

                    KeyWait, LAlt
                    Sleep 10

                    ;must send RCtrl!!!
                    Send {RCtrl down}
                    Send {w down}
                    Sleep 10
                    Send {w up}
                    Send {RCtrl up}

                    break
                }
                Sleep 1
            }

        }

        else
        {   KeyWait,f
            KeyWait,LAlt
            ;don't hijack other apps
            Send f
        }
    }

    return

2
थोड़ा समझाने की परवाह करें कि यह क्या करता है?
12:30

0

देखें कि क्या यह आपकी मदद करता है या आपको अधिक विचार देता है। मैं उपरोक्त किसी का उपयोग नहीं कर रहा हूं।

!z::
WinWait, Yahoo,
IfWinNotActive, Yahoo, , WinActivate,Yahoo,
WinWaitActive, Yahoo, 
Sleep, 100
return

1
हालांकि यह प्रश्न का उत्तर दे सकता है, यह एक बेहतर उत्तर होगा यदि आप कुछ स्पष्टीकरण प्रदान कर सकते हैं कि ऐसा क्यों होता है।
DavidPostill

0

यह AHK फ़ंक्शन मौजूद होने और वापस लौटने पर Google Chrome टैब को सक्रिय कर देगा। नहीं तो झूठा लौट आएगा।

; Activates tab in Google Chrome if it exists
; Returns true if exists, false if does not exist
; Leaves original tab activated if sought tab does not exist
; Known issue: will stop searching tabs if two tabs have same name
ActivateChromeTab(soughtTab)
{
  SetTitleMatchMode 2 ; Allows for partial matches in window titles

  IfWinNotExist Google Chrome
  {
    return false
  }

  WinActivate Google Chrome
  WinWaitActive Google Chrome
  WinGetTitle, currentTab, A
  firstTab := currentTab

  if (InStr(currentTab, soughtTab) > 0)
  {
    return true
  }

  Loop
  {
    Send {CtrlDown}{Tab}{CtrlUp}
    Sleep 50 ; Requires some time to update the window titles
    WinGetTitle, currentTab, A
    foundTab := InStr(currentTab, soughtTab) > 0
  }
  Until (foundTab || currentTab == firstTab)

  return foundTab
}
हमारी साइट का प्रयोग करके, आप स्वीकार करते हैं कि आपने हमारी Cookie Policy और निजता नीति को पढ़ और समझा लिया है।
Licensed under cc by-sa 3.0 with attribution required.