Skip to Content
author's profile photo Former Member
Former Member

Spelling checking in powerbuilder

Hi Everyone,

I am using PB11.1 build 8123. I want to add a functionality to checking the spelling. I write below code but I have a problem that MS WORD open as minimized state. I want this at front of user. Please suggest.

Global external function

------------------------------------------

PUBLIC FUNCTION unsignedlong FindWindow (long &

classname, string windowname) LIBRARY "user32.dll" &

ALIAS FOR FindWindowW

PUBLIC FUNCTION int SetForegroundWindow (unsignedlong &

hwnd) LIBRARY "user32.dll" ALIAS FOR SetForegroundWindowW

code

------------

string ls_current_text

ls_current_text=mle_1.text

If ls_current_text = "" then Return

If Clipboard(ls_current_text) = "" Then RETURN

OleObject myOleObject

myOleObject = CREATE OLEObject

If myOleObject.ConnectToNewObject("word.application") <> 0 Then Return

unsignedlong hwnd

hwnd = FindWindow ( 0, "Document1")

myoleobject.Application.Visible = True

myoleobject.Application.WindowState = 1

myoleobject.Application.Documents.Add.Content.Paste

if hwnd = 0 then

//

else

SetForegroundWindow ( hwnd)

end if

myoleobject.Application.ActiveDocument.CheckSpelling

myoleobject.Application.ActiveDocument.Content.Copy

myoleobject.ActiveDocument.Close(0)

myoleobject.Application.Quit

myOleObject.disconnectobject()

Destroy myOleObject

messagebox("Information", "The spelling and grammer check is complete.")

mle_1.text=Clipboard(ls_current_text)

Add a comment
10|10000 characters needed characters exceeded

Assigned Tags

Related questions

2 Answers

  • author's profile photo Former Member
    Former Member
    Posted on Oct 23, 2015 at 10:59 AM

    Don't know if this workaround is too ugly, but...

    You can set "w_yourWindow.visible = false" before setting Word visibility, and back again to true after spell check.

    Add a comment
    10|10000 characters needed characters exceeded

  • author's profile photo Former Member
    Former Member
    Posted on Oct 23, 2015 at 11:14 AM

    I think I found the problem:

    The code "hwnd = FindWindow ( 0, "Documento1 - Word")" is before "myoleobject.Application.Visible = True", so it always return 0. Just put it after.

    Add a comment
    10|10000 characters needed characters exceeded

    • Former Member Former Member

      Following code that works for me:

      Just make sure to put in FindWindow the name of your Word document.

      Mine is "Documento1 - Word" because I use Word 2013 in Portuguese.

      --------------------------------------

      string ls_current_text

      unsignedlong hwnd

      ls_current_text=mle_1.text

      If ls_current_text = "" then Return

      If Clipboard(ls_current_text) = "" Then RETURN

      OleObject myOleObject

      myOleObject = CREATE OLEObject

      If myOleObject.ConnectToNewObject("word.application") <> 0 Then Return

      myoleobject.Application.Visible = True

      myoleobject.Application.WindowState = 1

      myoleobject.Application.Documents.Add.Content.Paste

      hwnd = FindWindow ( 0, "Documento1 - Word")

      if hwnd <> 0 then

      SetForegroundWindow ( hwnd)

      end if

      myoleobject.Application.ActiveDocument.CheckSpelling

      myoleobject.Application.ActiveDocument.Content.Copy

      myoleobject.ActiveDocument.Close(0)

      myoleobject.Application.Quit

      myOleObject.disconnectobject()

      Destroy myOleObject

      messagebox("Information", "The spelling and grammer check is complete.")

      mle_1.text=Clipboard(ls_current_text)

Before answering

You should only submit an answer when you are proposing a solution to the poster's problem. If you want the poster to clarify the question or provide more information, please leave a comment instead, requesting additional details. When answering, please include specifics, such as step-by-step instructions, context for the solution, and links to useful resources. Also, please make sure that you answer complies with our Rules of Engagement.
You must be Logged in to submit an answer.

Up to 10 attachments (including images) can be used with a maximum of 1.0 MB each and 10.5 MB total.