ViSiToR
Silver Member | Редактировать | Профиль | Сообщение | ICQ | Цитировать | Сообщить модератору Код: If $CmdLine[1] = "/SpellWord" Then WinSetState($hWndOpera, "", @SW_DISABLE) $LangVal = "1049" $ReadLangVal = IniRead($ConfigFile, "Prefs", "SpellCheck Lang", "") If $ReadLangVal = "Eng" Then $LangVal = "1033" If $ReadLangVal = "Ukr" Then $LangVal = "1058" If $ReadLangVal = "Bel" Then $LangVal = "1059" $OldClip = ClipGet() ClipPut("") Send("^{INSERT}") $ClipContent = ClipGet() If $ClipContent <> "" Then $BeginSpace = _StringGetSpace($ClipContent, 1) $EndSpace = _StringGetSpace($ClipContent, -1) _SpellCheckProc($LangVal) If Not @error Then $SELECTION = StringStripWS(ClipGet(), 3) If $SELECTION <> StringStripWS($ClipContent, 3) Then $SELECTION = $BeginSpace & $SELECTION & $EndSpace ClipPut($SELECTION) WinActivate($hWndOpera) WinSetState($hWndOpera, "", @SW_ENABLE) WinWaitActive($hWndOpera, "", 3) Send("+{INSERT}") Else _MsgBox(64, $ScriptName, $MsgBox[87], $hWndOpera) EndIf Else _MsgBox(262144+48, $ScriptName & " - " & $MsgBox[34], $MsgBox[56] & @LF & "Word", $hWndOpera) EndIf Else _MsgBox(48, $ScriptName & " - " & $MsgBox[34], $MsgBox[88], $hWndOpera) EndIf WinActivate($hWndOpera) WinSetState($hWndOpera, "", @SW_ENABLE) ClipPut($OldClip) Exit EndIf | Сама функция _SpellCheckProc(): Код: Func _SpellCheckProc($Language) Local $Code = "" $Code &= 'On error resume next' & @CRLF $Code &= 'CheckSpell()' & @CRLF $Code &= 'Function CheckSpell()' & @CRLF $Code &= ' Set Word = CreateObject("word.Application")' & @CRLF $Code &= ' Word.WindowState = 2' & @CRLF $Code &= ' Word.Visible = False' & @CRLF $Code &= ' Set Doc = Word.Documents.Add( , , 1, True)' & @CRLF $Code &= ' Word.Selection.Paste' & @CRLF $Code &= ' If err = 0 Then' & @CRLF $Code &= ' Word.Selection.LanguageID = ' & $Language & @CRLF $Code &= ' Set Range = Word.ActiveDocument.Range(0, Word.Selection.End)' & @CRLF $Code &= ' If Not Word.CheckSpelling(Range) Or Not Word.CheckGrammar(Range) Then' & @CRLF $Code &= ' If Err.Number = 0 Then' & @CRLF $Code &= ' Doc.CheckGrammar' & @CRLF $Code &= ' Else' & @CRLF $Code &= ' Doc.CheckSpelling' & @CRLF $Code &= ' End If' & @CRLF $Code &= ' End If' & @CRLF $Code &= ' Word.Selection.WholeStory' & @CRLF $Code &= ' Word.Selection.Copy' & @CRLF $Code &= ' End If' & @CRLF $Code &= ' Doc.Close False' & @CRLF $Code &= ' Word.Application.Quit True' & @CRLF $Code &= 'End Function' & @CRLF $WordObjErr = ObjEvent("AutoIt.Error", "SpellCheckErrFunc") Local $VbsObj = ObjCreate("ScriptControl") If @error Then Return SetError(1, 0, -1) $VbsObj.Language = "vbscript" $VbsObj.AddCode($Code) EndFunc | Функция SpellCheckErrFunc() пуста, это чтобы скрипт не выпадал с фатальной ошибкой при случае не установленного объекта (Word). P.S Значения для MsgBox'ов соответствуют файлу перевода MultiAC_Lang.lng - т.е цифра (элемент) в массиве соответствует цифре перевода в файле. | Всего записей: 3251 | Зарегистр. 01-04-2006 | Отправлено: 01:27 29-07-2007 | Исправлено: ViSiToR, 03:22 31-07-2007 |
|