yozhic
Silver Member | Редактировать | Профиль | Сообщение | Цитировать | Сообщить модератору
Код: // http://akelpad.sourceforge.net/forum/viewtopic.php?p=1346#1346 // Description(1033): Spell check using Microsoft Word // Description(1049): Проверка орфографии используя MS Word // Version: 1.3 mod 1 // Author: VladSh // Initial code: © Instructor // // // Редакция ..: yozhic // Дата ......: 2015.01.15 // Основания .: добавлен аргумент - идентификатор языка проверки орфографии // Идентификатор = LCID (локальный языковой идентификатор Windows) // // Arguments: prompt - вызов диалогового окна для ввода LCID // 1033 - английский // 1049 - русский // 1032 - греческий // 1058 - украинский // // Usage: // Call("Scripts::Main", 1, "SpellCheckMSWord.js", "1032") // проверка греческого языка // Call("Scripts::Main", 1, "SpellCheckMSWord.js", "prompt") // запрос на ввод LCID с клавиатуры var pSelText; var hMainWnd = AkelPad.GetMainWnd(); var nCursor = -1; var oSys=AkelPad.SystemFunction(); var nLangID=AkelPad.GetArgLine(); if (hMainWnd) { var pScriptName = WScript.ScriptName; pSelText = AkelPad.GetSelText(); if (!pSelText) { nCursor = AkelPad.GetSelStart(); pSelText = AkelPad.GetTextRange(0, -1); } if (pSelText.charCodeAt(0) != 0) { var Word = new ActiveXObject("Word.application"); if (Word) { var oSpellDoc; var pMessage; var pTextIn; var pTextOut; Word.Visible = false; Word.Options.SuggestSpellingCorrections = true; if (oSpellDoc = Word.Documents.Add()) { if (nLangID) { if (nLangID=="prompt") nLangID=AkelPad.InputBox(hMainWnd, WScript.ScriptName, "Language ID", "1049"); // Word.CheckLanguage=false Word.Selection.LanguageIDOther=nLangID; } oSpellDoc.Content.Text = pSelText; Word.ActiveWindow.WindowState = 2; //wdWindowStateMinimize if (parseInt(Word.Version) >= 15) { //MS Word 2013 and higher Word.Visible = false; oSys.Call("user32::SetForegroundWindow", oSpellDoc.ActiveWindow.Hwnd); } pTextIn = oSpellDoc.Content.Text; if (Word.Options.CheckGrammarWithSpelling == true) oSpellDoc.CheckGrammar(); else oSpellDoc.CheckSpelling(); pTextOut = oSpellDoc.Content.Text; oSpellDoc.Close(false); if (pTextIn != pTextOut) { if (AkelPad.MessageBox(hMainWnd, GetLangString(3), pScriptName, 36 /*MB_ICONQUESTION|MB_YESNO*/) == 6 /*IDYES*/) { if (nCursor != -1) AkelPad.SetSel(0, -1); AkelPad.ReplaceSel(pTextOut.substr(0, pTextOut.length - 1), -2); } } } Word.Quit(true); Word = 0; } else { AkelPad.MessageBox(hMainWnd, GetLangString(0), pScriptName, 48 /*MB_ICONEXCLAMATION*/); } } else { AkelPad.MessageBox(hMainWnd, GetLangString(1), pScriptName, 64 /*MB_ICONINFORMATION*/); } } function GetLangString(nStringID) { var nLangID = AkelPad.GetLangId(1 /*LANGID_PRIMARY*/); if (nLangID == 0x19) //LANG_RUSSIAN { if (nStringID == 0) return "Необходимо сначала установить Microsoft Word 97 или выше."; if (nStringID == 1) return "Текст отсутствует."; if (nStringID == 3) return "Вставить исправленый текст?"; } else { if (nStringID == 0) return "You must first install Microsoft Word 97 or higher."; if (nStringID == 1) return "The text is absent."; if (nStringID == 3) return "Insert corrected text?"; } return ""; } |
| Всего записей: 2773 | Зарегистр. 20-03-2008 | Отправлено: 19:49 03-11-2019 | Исправлено: yozhic, 19:52 03-11-2019 |
|