Sign in to follow this  
Followers 0
DW1

AnyGui and Word Example

5 posts in this topic

#1 ·  Posted (edited)

#NoTrayIcon
#include<Word.au3>
#include<ANYGUI.au3>
#include<array.au3>
#Include <GuiEdit.au3>
#include <GuiList.au3>
#Include <GuiCombo.au3>
#include <GuiConstants.au3>

;~ HotKeySet("!t", "_test")

$ver = RegRead("HKEY_CLASSES_ROOT\Word.Application", "")
If $ver <> "Microsoft Word Application"  Then
    MsgBox(0, "Error", "You must have word installed to use spell check in notepad")
    Exit
EndIf



_WordErrorHandlerRegister()
Global $oWordApp = _WordCreate("", 0, 0, 0)
Global $oDoc = $oWordApp.ActiveDocument
Global $oRange = $oDoc.Range
Global $oSpellCollection, $oAlternateWords
Global $aLangs[2][2] = [[1, ""], ["English", 1033]]


;~ Opt ("GUIOnEventMode", 1)
Run("notepad.exe")

WinWaitActive("")

$hWnd = _GuiTarget ("Untitled - Notepad")
_ArrayDisplay($hWnd)
$child = _TargetaddChild ("", 0, 0, 50000, 20, $hWnd)
$Button1 = GUICtrlCreateButton("Spell Check!", 0, 0, 100, 20)
$Button2 = GUICtrlCreateButton("Replace Word", 400, 0, 100, 20)
$ListBox1 = GUICtrlCreateList("", 100, 0, 150, 20, $LBS_NOTIFY + $WS_VSCROLL)
$ListBox2 = GUICtrlCreateList("", 250, 0, 150, 20, $LBS_NOTIFY + $WS_VSCROLL)
$edit = ControlGetHandle($hWnd, "", 15)
;~ MsgBox(0, "test", $edit )
;~ GUICtrlSetOnEvent($button2, "_SpellCheck")
$Combo = GUICtrlCreateCombo("", 500, 0, 80, 20)
For $i = 1 To $aLangs[0][0]
    _GUICtrlComboAddString($Combo, $aLangs[$i][0])
Next
GUICtrlSetState($Button2, $GUI_DISABLE)

GUISetState(@SW_SHOW)
_EndTarget ()


While WinExists($hWnd)
    $msg = GUIGetMsg()
    Switch $msg
;~      Case $GUI_EVENT_CLOSE, $Button3
;~          _Exit()
        Case $Button1
            If ControlGetText($hWnd, "", 15) <> "" Then
                _SpellCheck()
            Else
                MsgBox(0, "Error", "No text to check")
            EndIf
        Case $Button2
            _ReplaceWord()
        Case $ListBox1
            _SpellingSuggestions()
            _HighlightWord()
        Case $ListBox2
            GUICtrlSetState($Button2, $GUI_ENABLE)
        Case $Combo
            _SetLanguage()
            _SpellCheck()
    EndSwitch
    $size = WinGetClientSize($hWnd)
    If WinExists($hWnd) Then
        ControlMove($hWnd, "", 15, 0, 20, $size[0], $size[1] - 20)
        ControlMove($hWnd, "", "button2", $size[0], 25, 20, 20)
    EndIf
    Sleep(10)
WEnd



;~ While WinExists($hWnd)
;~  $size = WinGetClientSize($hWnd)
;~  If WinExists($hWnd) Then
;~      ControlMove($hWnd, "", 15, 0, 20, $size[0], $size[1] - 20)
;~      ControlMove($hWnd, "", "button2", $size[0], 25, 20, 20)
;~  EndIf
;~  Sleep(10)
;~ WEnd
_WordQuit($oWordApp, 0)

Func Eventer()
    MsgBox(0, "test", "hit")
EndFunc   ;==>Eventer


Func _test()
    MsgBox(0, "ControlGetText", ControlGetText($hWnd, "", 15))
    MsgBox(0, "GUICtrlRead", GUICtrlRead($edit))
EndFunc   ;==>_test






                    ; -----------------MS WORD FUNCS-----------------;
;----These funcs were written by big_daddy for his Custom Spell Checker----;


Func _SpellCheck()
    Local $sText, $sWord
    ; this will allow you to have the last word corrected
    ControlSetText($hWnd, "", 15, ControlGetText($hWnd, "", 15) & " ")
    ; TRY TO FIND A WAY AROUND THIS
    _GUICtrlListClear($ListBox1)
    _GUICtrlListClear($ListBox2)
    GUICtrlSetState($Button2, $GUI_DISABLE)

;~  $sText = GUICtrlRead($edit)
    $sText = ControlGetText($hWnd, "", 15)
    $oRange = $oWordApp.Activedocument.Range
    $oRange.Delete
    $oRange.InsertAfter ($sText)
    _SetLanguage()

    $oSpellCollection = $oRange.SpellingErrors
    If $oSpellCollection.Count > 0 Then
        For $i = 1 To $oSpellCollection.Count
            $sWord = $oSpellCollection.Item ($i).Text
            _GUICtrlListAddItem($ListBox1, $sWord)
        Next
    Else
        _GUICtrlListAddItem($ListBox1, "No spelling errors found.")
    EndIf
    ControlSetText($hWnd, "", 15, $oRange.Text)
;~  GUICtrlSetData($edit, $oRange.Text)
EndFunc   ;==>_SpellCheck

Func _SpellingSuggestions()
    Local $iWord, $sWord
    ;
    _GUICtrlListClear($ListBox2)
    GUICtrlSetState($Button2, $GUI_DISABLE)

    $iWord = _GUICtrlListSelectedIndex($ListBox1) + 1
    $sWord = $oSpellCollection.Item ($iWord).Text

    $oAlternateWords = $oWordApp.GetSpellingSuggestions ($sWord)
    If $oAlternateWords.Count > 0 Then
        For $i = 1 To $oAlternateWords.Count
            _GUICtrlListAddItem($ListBox2, $oAlternateWords.Item ($i).Name)
        Next
    Else
        _GUICtrlListAddItem($ListBox2, "No suggestions.")
    EndIf
EndFunc   ;==>_SpellingSuggestions

Func _HighlightWord()
    Local $sText, $iWord, $sWord, $iEnd, $iStart
    ;
    $iWord = _GUICtrlListSelectedIndex($ListBox1) + 1
    $sWord = $oSpellCollection.Item ($iWord).Text
    $sText = $oRange.Text

    $iStart = ($oSpellCollection.Item ($iWord).Start)
    $iEnd = ($oSpellCollection.Item ($iWord).End)
    _GUICtrlEditSetSel($edit, $iStart, $iEnd)
EndFunc   ;==>_HighlightWord

Func _ReplaceWord()
    Local $iWord, $iNewWord, $sWord, $sNewWord, $sText, $sNewText
    ;
    $iWord = _GUICtrlListSelectedIndex($ListBox1) + 1
    $iNewWord = _GUICtrlListSelectedIndex($ListBox2) + 1
    If $iWord == $LB_ERR Or $iNewWord == $LB_ERR Then
        MsgBox(48, "Error", "You must first select a word to replace, then a replacement word.")
        Return
    EndIf
    $oSpellCollection.Item ($iWord).Text = $oAlternateWords.Item ($iNewWord).Name

;~  GUICtrlSetData($edit, $oRange.Text)
    ControlSetText($hWnd, "", 15, $oRange.Text)

    _SpellCheck()


; TRYING THIS OUT

$string = ControlGetText( $hWnd, "", 15 )
While 1
    If StringRight($string, 1) = " "  Then
        $string = StringTrimRight($string, 1)
    Else
        ExitLoop
    EndIf
WEnd
ControlSetText( $hWnd, "", 15, $string)


;TESTTESTTEST


    GUICtrlSetState($Button2, $GUI_DISABLE)
EndFunc   ;==>_ReplaceWord

Func _SetLanguage()
    $sLang = GUICtrlRead($Combo)
    If $sLang <> "" Then
        $oWordApp.CheckLanguage = False
        For $i = 1 To $aLangs[0][0]
            If $sLang = $aLangs[$i][0] Then
                $WdLangID = Number($aLangs[$i][1])
            EndIf
        Next

        If $WdLangID Then
            With $oRange
                .LanguageID = $WdLangID
                .NoProofing = False
            EndWith
        EndIf
    Else
        $oWordApp.CheckLanguage = True
    EndIf
EndFunc   ;==>_SetLanguage

Func _Exit()
    _WordQuit($oWordApp, 0)
    Exit
EndFunc   ;==>_Exit

Edited by danwilli

Share this post


Link to post
Share on other sites



Nice use of anygui and notepad..

Share this post


Link to post
Share on other sites

very nice example


A decision is a powerful thing

Share this post


Link to post
Share on other sites

; -----------------MS WORD FUNCS-----------------;
;----I don't know for sure the author of these (not me), but I think it is big_daddy----;
Those functions came from my Custom Spell Checker.

Share this post


Link to post
Share on other sites

Create an account or sign in to comment

You need to be a member in order to leave a comment

Create an account

Sign up for a new account in our community. It's easy!


Register a new account

Sign in

Already have an account? Sign in here.


Sign In Now
Sign in to follow this  
Followers 0