javascript विंडोज 7 में जावास्क्रिप्ट/जेस्क्रिप्ट के साथ अग्रभूमि पर स्पेल चेक विंडो लाओ



ms-word activex (1)

हो सकता है कि आप खिड़की स्थिति को दबाएं। जब खिड़की को न्यूनतम किया जाने के बाद अधिकतम किया जाता है, तो विंडोज उसमें सामने (zIndex को शीर्ष पर) स्टैक करेगा

कुछ इस तरह:

 var WIN_MAX = 2;
 var WIN_MIN = 1;

 var Word = new ActiveXObject("Word.Application");
 Word.Visible = true;
 // minimize the app
 Word.WindowState = WIN_MIN ;
 // in 500ms, maximize
 setTimeout(function () {
     Word.WindowState = WIN_MAX;
 }, 500);

setTimeout कॉल एक समय के मुद्दे के आसपास काम करना चाहता है; खिड़कियां कभी-कभी "भ्रम" हो जाती हैं, जब तत्काल उत्तराधिकार में प्रोग्राममैटिक कम से कम / अधिकतम होता है। आपको उस देरी को थोड़ा ज़्यादा विस्तार करना पड़ सकता है, बार-बार इसका परीक्षण कर सकते हैं और देखें कि आपको किस तरह के परिणाम मिलते हैं।

मेरे पास कुछ जेस्क्रिप्ट कोड है (कुछ पुराने वीबीस्क्रिप्ट से बदला हुआ है) जो इस तरह शुरू होता है:

var Word = new ActiveXObject("Word.Basic");

Word.FileNew(); // opens new Word document
Word.Insert(IncorrectText);
Word.ToolsSpelling(); // opens spell check behind IE

यह विचार ब्राउज़र उपयोग के लिए एमएस वर्ड जादू की जांच का उपयोग करना है, और यह XP में अच्छी तरह से काम करता है, लेकिन विंडोज 7 / आईई 8 में पृष्ठभूमि में वर्तनी की जांच बॉक्स खुलता है ( यह सवाल मुझसे कहता है कि समस्या विस्टा में शुरू हुई और शायद एक ओएस मुद्दा, एक ब्राउज़र या कार्यालय मुद्दा नहीं)।

तो मेरा सवाल है, मैं इस विंडो को अग्रभूमि में कैसे ला सकता हूं? एक महत्वपूर्ण नोट यह है कि अंतिम पंक्ति, Word.ToolsSpelling(); , मेरी स्क्रिप्ट को लॉक कर लेता है, इसलिए जो कुछ भी करता है उसे उसके पहले होना चाहिए।

मैंने कोशिश की

var wshShell = new ActiveXObject("WScript.Shell");
wshShell.AppActivate("Document1 - Microsoft Word"); // or some other text

ToolsSpelling कॉल से पहले, लेकिन यह कुछ भी नहीं करता (हो सकता है क्योंकि वर्ड दस्तावेज़ इस बिंदु पर वास्तव में प्रकट नहीं हुआ है?)। बेशक, यह केवल तभी काम करेगा यदि कोई "Document1" पहले से ही खोला नहीं गया है, इसलिए यह आरंभ करने के लिए एक संदिग्ध विचार है।

इस उत्तर के अनुसार , मैं window.blur(); का उपयोग करने की कोशिश की। window.blur(); IE को धुंधला करने के लिए, लेकिन यह केवल तभी काम करेगा जब IE विंडो केवल एक ही खोला है। हो सकता है कि किसी भी तरह से मैं सभी खोले खिड़कियों के माध्यम से लूप कर सकता हूँ और इसे लागू कर सकता हूं?

SetForegroundWindow आशाजनक देखा, लेकिन मुझे नहीं पता कि इसे JSRIpt में कैसे उपयोग करें।

कोई विचार?

नोट: इस साइट के लिए ब्राउज़र अनुमतियां पूरी तरह से खुली रहेंगी।

अपडेट : यदि आप Word.Application उपयोग करते हैं तो बाहर Word.Application , वर्तनी की जांच सामने में सामने आती है जैसा वह होना चाहिए केवल Word.BasicWord.Basic पद्धति में यह समस्या है (मुझे यह जानने की उम्मीद नहीं है कि अनंत काल के इस हिस्से के कारण):

var wordApp = new ActiveXObject("Word.Application");
wordApp.Documents.Add();
wordDoc = wordApp.ActiveDocument;
... // safety checks before insertion
wordSelection.TypeText(IncorrectText);
wordDoc.CheckSpelling();
wordApp.Visible = false; // CheckSpelling makes the document visible




office-interop