Sendkeys (त्रुटि) के साथ vbs स्क्रिप्ट


3

मेरे पास एक छोटी सी स्क्रिप्ट है जो एक ओपन प्रोग्राम (नोटपैड) को फोकस में लाती है, और फिर प्रोग्राम को फंक्शन भेजने से पहले एक सेकंड इंतजार करती है CTRL S। यह स्क्रिप्ट 50% समय के लिए काम करती है, जबकि बाकी समय में स्क्रिप्ट एक त्रुटि करती है और वास्तव में एक राजधानी S अक्षर को .txt फ़ाइल में भेजती है CTRL Sजिसे भेजने के बजाय मैं संपादित कर रहा हूं (जिसे बचाने की आज्ञा है)।

नीचे स्क्रिप्ट की सामग्री दी गई है:

' Create WScript Shell Object to access filesystem.
Set WshShell = WScript.CreateObject("WScript.Shell")

' Select, or bring Focus to a window named `NOTEPAD`
WshShell.AppActivate "Notepad"

WScript.Sleep 1000

WshShell.SendKeys "^s"

क्या कोई मुझे बता सकता है कि यह त्रुटि कैसे हो रही है? मैंने सोचा कि शायद यह इसलिए था क्योंकि मेरे पास CAPSLOCK था, लेकिन ऐसा नहीं था।

विंडोज और 64 बिट चल रहा है।


क्या त्रुटि तभी होती है जब आप उस समय नोटपैड का सक्रिय रूप से उपयोग कर रहे हों? यदि नोटपैड खुला है, लेकिन आप कीपैड या माउस को नहीं छूते हैं, तो क्या त्रुटि कभी-कभी होती है?
रिच हॉल्टन

@ रिखोलटन हाँ। यह त्रुटि होने पर नोटपैड हमेशा खुला रहता है क्योंकि स्क्रिप्ट नोटपैड के लिए है। त्रुटि हमेशा तब होती है जब मैं कीबोर्ड को नहीं छूता। मैं स्क्रिप्ट को सक्रिय करने के लिए जॉयस्टिक का उपयोग कर रहा हूं
कलामल्का किड

2
मैंने इसी तरह के मुद्दों को देखा है (नोटपैड नहीं, लेकिन एक और कार्यक्रम जहां मुझे इसे लॉन्च करने और एक सिंगल कीपर भेजने की आवश्यकता है) जब मैंने प्रेस भेजने से पहले आवेदन को स्थिर करने के लिए लंबे समय तक इंतजार नहीं किया (सीटीआर नोटपैड के अलावा कहीं और गया था )। मैंने अभी और इंतजार करके इसे ठीक किया है। आप ध्यान देंगे कि राहुल का जवाब 1500 मिलियन (अतिरिक्त 1/2 सेकंड) इंतजार कर रहा है, जो उनकी सफलता के लिए भी जिम्मेदार हो सकता है।
रसल

1
KalamalkaKid - चूंकि आप कहते हैं कि यह पहले से ही आधे समय तक काम करता है, इसलिए WshShell.AppActivate "Notepad"अपने VBS कोड में नीचे तीन अतिरिक्त पंक्तियों को जोड़ने का प्रयास करें और अगली तीन पंक्तियों में उसी कोड को जोड़ दें, ताकि आप चार कुल पंक्तियों के साथ एक के बाद एक WshShell.AppActivate "Notepad"बिना किसी छोर से समाप्त हो जाएं sleepबीच में कार्य करता है और फिर 1 सेकंड की नींद करता है Ctrl+S। यह देखने के लिए परीक्षण करें कि क्या यह आधे से अधिक समय या हर समय काम करता है, और यदि ऐसा है और आप चाहें, तो मुझे उत्तर जोड़ने में खुशी होगी।
दलाल जूस आईटी

जवाबों:


1

ठीक है तो। मुझे पता है कि इस चरम हैकरी का कोई मतलब नहीं है, लेकिन इसने हर बार मेरे लिए काम किया है, इसलिए आपको शायद इसे आज़माना चाहिए:

' Create WScript Shell Object to access filesystem.
Set WshShell = WScript.CreateObject("WScript.Shell")

' Select, or bring Focus to a window named `NOTEPAD`
WshShell.AppActivate "Notepad"
WScript.Sleep 1500
' Minimize
WshShell.SendKeys "% n"
WshShell.AppActivate "Notepad"
WScript.Sleep 1500
' Maximize
WshShell.SendKeys "% x"
WshShell.AppActivate "Notepad"
WScript.Sleep 1500
' Restore
WshShell.SendKeys "% r"
WshShell.AppActivate "Notepad"
WScript.Sleep 1500
' MAGIC!
WshShell.SendKeys "^s"
हमारी साइट का प्रयोग करके, आप स्वीकार करते हैं कि आपने हमारी Cookie Policy और निजता नीति को पढ़ और समझा लिया है।
Licensed under cc by-sa 3.0 with attribution required.