pasos - Poner la ventana de revisión ortográfica en primer plano con JavaScript/JScript en Windows 7
ortografia y gramatica en word definicion (1)
Es posible que puedas desplegar el estado de la ventana. Cuando la ventana se maximiza después de haber sido minimizada, Windows la apilará al frente (zIndex al principio).
Algo como:
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);
La llamada a setTimeout
busca setTimeout
un problema de temporización; Windows a veces se "confunde" cuando ocurre una minimización / maximización programática en sucesión inmediata. Es posible que tenga que extender un poco ese retraso, probarlo repetidamente y ver qué tipo de resultados obtiene.
Tengo un código JScript (convertido a partir de un antiguo VBScript) que comienza así:
var Word = new ActiveXObject("Word.Basic");
Word.FileNew(); // opens new Word document
Word.Insert(IncorrectText);
Word.ToolsSpelling(); // opens spell check behind IE
La idea es utilizar el corrector ortográfico de MS Word para el uso del navegador, y funciona bien en XP, pero la casilla de verificación de ortografía se abre en segundo plano en Windows 7 / IE 8 ( esta pregunta me dice que el problema comenzó en Vista y probablemente un problema de sistema operativo, no un problema de navegador o de Office).
Entonces mi pregunta es, ¿cómo puedo traer esta ventana al primer plano? Una nota importante es que la última línea, Word.ToolsSpelling();
, bloquea mi script, por lo que cualquier cosa que haga tendrá que ser antes de eso.
He intentado
var wshShell = new ActiveXObject("WScript.Shell");
wshShell.AppActivate("Document1 - Microsoft Word"); // or some other text
antes de la llamada ToolsSpelling, pero esto no hace nada (¿tal vez porque el documento Word no se revela en este momento?). Por supuesto, esto solo funcionará si no se ha abierto el "Documento1", por lo que es una idea cuestionable para empezar.
Según esta respuesta , intenté usar window.blur();
para difuminar IE, pero esto solo funcionará si la ventana IE es la única abierta. Tal vez haya alguna forma en que pueda recorrer todas las ventanas abiertas y aplicar esto.
SetForegroundWindow parecía prometedor, pero no sé cómo usarlo en JSript.
¿Algunas ideas?
Nota: los permisos del navegador estarán completamente abiertos para este sitio.
Actualización : Resulta que si usas Word.Application
, el corrector ortográfico aparece al frente como debería. Solo el método Word.Basic
tiene este problema (no espero saber por qué de este lado de la eternidad):
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