Jump to content

_GUICtrlRichEdit_AutoDetectURL() UDF example not working

Recommended Posts

This is the built-in example script from the _GUICtrlRichEdit_AutoDetectURL UDF. The GUI shows up and the hyperlink is formatted properly, but nothing happens when the link is clicked (no "Invoke your web browser" message box appears)

#include <GUIConstantsEx.au3>
#include <GuiRichEdit.au3>
#include <MsgBoxConstants.au3>
#include <WindowsConstants.au3>

Global $g_hRichEdit


Func Example()
    Local $hGui, $iMsg
    $hGui = GUICreate("Example (" & StringTrimRight(@ScriptName, StringLen(".exe")) & ")", 320, 350, -1, -1)
    $g_hRichEdit = _GUICtrlRichEdit_Create($hGui, "This is a test.", 10, 10, 300, 220, _

    GUIRegisterMsg($WM_NOTIFY, "WM_NOTIFY")
    _GUICtrlRichEdit_SetEventMask($g_hRichEdit, $ENM_LINK)

    _GUICtrlRichEdit_AutoDetectURL($g_hRichEdit, True)
    _GUICtrlRichEdit_AppendText($g_hRichEdit, @CRLF & "http://www.autoitscript.com")
    While True
        $iMsg = GUIGetMsg()
            Case $iMsg = $GUI_EVENT_CLOSE
                _GUICtrlRichEdit_Destroy($g_hRichEdit) ; needed unless script crashes
                ; GUIDelete()   ; is OK too
EndFunc   ;==>Example

Func WM_NOTIFY($hWnd, $iMsg, $wParam, $lParam)
    #forceref $hWnd, $iMsg, $wParam
    Local $hWndFrom, $iCode, $tNMHDR, $tEnLink, $iCpMin, $iCpMax, $tMsgFilter
    $tNMHDR = DllStructCreate($tagNMHDR, $lParam)
    $hWndFrom = HWnd(DllStructGetData($tNMHDR, "hWndFrom"))
    $iCode = DllStructGetData($tNMHDR, "Code")
    Switch $hWndFrom
        Case $g_hRichEdit
                Case $iCode = $EN_LINK
                    $tMsgFilter = DllStructCreate($tagMSGFILTER, $lParam)
                    If DllStructGetData($tMsgFilter, "msg") = $WM_LBUTTONUP Then
                        $tEnLink = DllStructCreate($tagENLINK, $lParam)
                        $iCpMin = DllStructGetData($tEnLink, "cpMin")
                        $iCpMax = DllStructGetData($tEnLink, "cpMax")
                        MsgBox($MB_SYSTEMMODAL, "", "Invoke your web browser here and point it to " & _GUICtrlRichEdit_GetTextInRange($g_hRichEdit, $iCpMin, $iCpMax))
EndFunc   ;==>WM_NOTIFY


Link to post
Share on other sites

Tested both on Win7 and Win10, and it is working as expected.  Do you have the latest version of AutoIt ? 

Link to post
Share on other sites

Ok.  I was able to replicate your problem when running x64.  If you run it x86, the problem is not showing.

Link to post
Share on other sites

Hum okay. I'm using x64 to compile as Windows Defender tends to flag the x86 version as malicious (and of course it is not.)

Is this something that can be fixed for x64? I can use beta versions if need be.

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
  • Recently Browsing   0 members

    No registered users viewing this page.

  • Create New...