AutoHotKey - एक से अधिक ऑल्ट-टैब के साथ स्क्रिप्ट


2

मैं एक स्क्रिप्ट बनाने की कोशिश कर रहा हूं, जो खिड़कियों के बीच स्थानांतरित करने के लिए Alt-Tab का उपयोग करके एक विंडो पर एक रूप में फ़ील्ड को दूसरी विंडो पर फ़ॉर्म में कॉपी करता है।

पहला ऑल-टैब विंडो 1 से विंडो 2 में जाने के लिए काम करता है लेकिन विंडो 2 से विंडो 1 में जाने के लिए अगला ऑल्ट टैब काम नहीं करता है।

मेरी स्क्रिप्ट इस प्रकार है:

#z :: भेजें ^ c! {टैब} ^ v! {टैब} {टैब} ^ c! {टैब} {टैब} ^ v! {टैब} {टैब} ^ सी! {टैब} {टैब} ^ v {} टैब

विंडो z दबाने पर मैं यह चाहता हूं कि यह विंडो 1 में वर्तमान फ़ील्ड की प्रतिलिपि बनाएँ, विंडो 2 पर ले जाएँ और इसे पेस्ट करें, फिर विंडो 1 पर वापस जाएँ और अगले फ़ील्ड की प्रतिलिपि बनाएँ, विंडो 2 पर जाएँ और अगले फ़ील्ड में पेस्ट करें और इसी तरह।

क्या कोई मदद कर सकता है?

धन्यवाद

जवाबों:


2

मुझे इस प्रकार की परिस्थिति में बहुत प्रभावी होने के लिए स्ट्रिंग ऑफ कीस्ट्रोक्स भेजना नहीं मिला। वहाँ कई अलग अलग तरीकों से यह गलत हो सकता है। मैं क्लिपबोर्ड चर में निर्मित का उपयोग करने की कोशिश करता हूं और केवल एक बार खिड़कियों के बीच स्वैप करता हूं।

आप अपनी स्क्रिप्ट में इस प्रारूप का उपयोग करके निर्देश का एक सेट करने के लिए हॉटकी का उपयोग कर सकते हैं:

z::
; do a bunch of stuff here
return

मैं पहले फ़ॉर्म से डेटा को एक बार में हड़पूंगा और उसे स्टोर करूँगा:

clipboard =  ; Start off empty to allow ClipWait to detect 
Send ^c
ClipWait 
Field1:=ClipboardAll

Send {Tab} ; move to next field

एक बार जब आप पहली विंडो से डेटा प्राप्त कर लेते हैं, तो आप अगली विंडो पर जा सकते हैं:

Send AltTab 

(हालांकि एक बेहतर तरीका WinActivate है ।)

दूसरी विंडो पर, आप फॉर्म को नीचे ला सकते हैं, पहले से डेटा डालें:

clipboard = %Field1%
Send ^v
Wait 100

Send {Tab} ; move to field 2...

संदर्भ के लिए क्लिपबोर्ड वेरिएबल्स के लिए AutoHotKey का पृष्ठ देखें ।


1

यहाँ 2 बहुत ही सरल तरीके हैं जो आप चाहते हैं कि वास्तव में ऑल्ट-मल्टीपल-टैब अनुक्रम करें। मुख्य बात यह है, आप घुंघराले ब्रैकेट के अंदर निर्दिष्ट कर सकते हैं कि आपको कितनी बार एक कुंजी दबाया जाना चाहिए !:

1) निम्नलिखित परिचित का उपयोग करता है ! के लिए वैकल्पिक और मान लीजिए कि आप ऑल्ट-टैब 2 खिड़कियां दूर करते हैं। स्वाभाविक रूप से, आप '2' को जिस भी संख्या में आपकी आवश्यकता हो, बदल सकते हैं:

Send !{TAB 2}

इसलिए आपकी स्क्रिप्ट को संशोधित किया जा सकता है:

#z::Send ^c!{tab}^v!{tab 2}^c!{tab 2}^v!{tab 2}^c!{tab 2}^v!{tab}

2) यह अगले एक आप स्पष्ट रूप से कहते हैं कि जब Alt दबाया जाता है और जब इसे जारी किया जाता है। फिर से, {टैब} {टैब} को {टैब 2} संक्षिप्त किया गया है :

Send {alt down}{tab 2}{alt up}

इसलिए आपकी स्क्रिप्ट को संशोधित किया जा सकता है:

#z::Send ^c!{tab}^v{alt down}{tab 2}{alt up}^c{alt down}{tab 2}{alt up}^v{alt down}{tab 2}{alt up}^c{alt down}{tab 2}{alt up}^v!{tab}

इससे पहले कि मैं एक समाधान की तलाश करता, मैंने भी कोशिश की ! {टैब} {टैब} जो आपने कोशिश की; यह सिर्फ इतना है कि दूसरे {टैब} को ऑल्ट के साथ नहीं माना जाता है।

मुझे AutoHotKey सहायता >> कीबोर्ड नियंत्रण >> भेजें / SendRaw / SendInput / SendPlay / SendEvent: कुंजी और क्लिक भेजें में उत्तर मिला।


0

ऐसा करने का वास्तव में आसान तरीका है, अगर विंडो खिताब हमेशा कम से कम एक ही आंशिक नाम (अनटाइटल्ड - नोटपैड, डॉक्यूमेंट 1 - नोटपैड, आदि) होता है, तो WinWaitActive फ़ंक्शन का उपयोग करना है। यदि आप जानते हैं कि वे कभी नहीं बदलने वाले हैं, तो AU3Record.exe प्रोग्राम खोलें (C: \ Program Files \ AutoIt3 \ SciTE \ ScriptWriter \ AU3Record.exe में स्थित)। रिकॉर्डिंग शुरू करें, और एक-दो बार खिड़कियों के बीच आगे-पीछे क्लिक करें। रिकॉर्डिंग बंद करो, और उन पंक्तियों को ले लो जो WinWaitActive और मापदंडों में आपकी खिड़कियों के शीर्षकों के साथ शुरू होती हैं, जो कुछ भी बदल सकती है उसे हटा दें, और उन पंक्तियों का उपयोग खिड़कियों के बीच आगे और पीछे स्विच करने के लिए करें।

इसे इस तरह से करना बहुत अधिक कुशल है, क्योंकि आपको कीबोर्ड कमांड के विशाल तारों के बारे में चिंता करने की ज़रूरत नहीं है (ऐसा करें, ऑल-टैब, ऐसा करें, अल्ट-टैब, इसे फिर से करें, ऑल-टैब, आदि) अपनी स्क्रिप्ट को संपादित करते समय बनाए रखें।

इसके अलावा, एक साइड नोट के रूप में, मैं महत्वपूर्ण दृश्यों को छोटे लोगों में तोड़ दूंगा। प्रति पंक्ति अनुक्रम में केवल 2 या 3 कुंजी होने पर उन्हें प्रबंधित करना आसान है। यदि आपको अभी भी एक ही समय में सभी को चलाने की आवश्यकता है, तो इसे एक फ़ंक्शन में बनाएं।

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