Jump to content

Hyperlink on edit?


Madza91
 Share

Recommended Posts

Hi. i have 1 question...

Why hyperlink at "label" working, and at "edit" not?

#include <GuiConstants.au3>

GuiCreate("MyGUI", 501, 431,-1, -1 , BitOR($WS_OVERLAPPEDWINDOW, $WS_CLIPSIBLINGS))

$Label7a = GUICtrlCreateEdit("www.asd.com", 257, 224, 163, 20,BitOR($ES_AUTOHSCROLL,$ES_READONLY))

$Label7a = GUICtrlCreateLabel("www.asd.com", 257, 204, 163, 20,BitOR($ES_AUTOHSCROLL,$ES_READONLY))
GuiSetState()
While 1
    $msg = GuiGetMsg()
    Select
    Case $msg = $GUI_EVENT_CLOSE
        ExitLoop
    Case $msg = $Label7a
        Onwww()
    Case Else
    ;;;
    EndSelect
WEnd
Exit

Func OnWWW()
    Run(@ComSpec & " /c " & 'start www.autoitscript.com/forum/', "", @SW_HIDE)
EndFunc

[quote name='dbzfanatic' post='609696' date='Nov 26 2008, 08:46 AM']This is a help forum not a "write this for me" forum.[/quote](Sorry for bad English) :)

Link to comment
Share on other sites

When you use the same Control ID ( $Label7a ) twice, it wipes out the first one from working

#include <GuiConstants.au3>

GuiCreate("MyGUI", 501, 431,-1, -1 , BitOR($WS_OVERLAPPEDWINDOW, $WS_CLIPSIBLINGS))

$Edit = GUICtrlCreateEdit("www.asd.com", 257, 224, 163, 20,BitOR($ES_AUTOHSCROLL,$ES_READONLY))

$Label = GUICtrlCreateLabel("www.asd.com", 257, 204, 163, 20,BitOR($ES_AUTOHSCROLL,$ES_READONLY))
GuiSetState()
While 1
    $msg = GuiGetMsg()
    Select
    Case $msg = $GUI_EVENT_CLOSE
        ExitLoop
    Case $msg = $Edit
        Onwww()
    Case $msg = $Label
        Onwww()
    Case Else
    ;;;
    EndSelect
WEnd
Exit

Func OnWWW()
    Run(@ComSpec & " /c " & 'start www.autoitscript.com/forum/', "", @SW_HIDE)
EndFunc

8)

NEWHeader1.png

Link to comment
Share on other sites

Nice but too complicated <_<

...i just want to know why not work hyperlink in edit :S

[quote name='dbzfanatic' post='609696' date='Nov 26 2008, 08:46 AM']This is a help forum not a "write this for me" forum.[/quote](Sorry for bad English) :)

Link to comment
Share on other sites

I really dont know...

things have changed, if i remember correctly, I have used something similar to what i showed you

**** anyways, This works.... TESTED OK!

#include <GuiConstants.au3>
#include <_ControlHover.au3>

$GUI = GuiCreate("MyGUI", 501, 431,-1, -1 , BitOR($WS_OVERLAPPEDWINDOW, $WS_CLIPSIBLINGS))

$Edit = GUICtrlCreateEdit("www.asd.com", 257, 224, 163, 20,BitOR($ES_AUTOHSCROLL,$ES_READONLY))

$Label = GUICtrlCreateLabel("www.asd.com", 257, 204, 163, 20,BitOR($ES_AUTOHSCROLL,$ES_READONLY))
GuiSetState()

_ControlHover(2, $GUI, $Edit)

While 1
    If _ControlHover(1) Then OnWWW()
    
    $msg = GuiGetMsg()
    Select
    Case $msg = $GUI_EVENT_CLOSE
        ExitLoop
    Case $msg = $Label
        Onwww()
    Case Else
    ;;;
    EndSelect
WEnd
Exit


Func OnWWW()
    MsgBox(0X0,"TEST","", 2)
    ;Run(@ComSpec & " /c " & 'start www.autoitscript.com/forum/', "", @SW_HIDE)
EndFunc

8)

Edited by Valuater

NEWHeader1.png

Link to comment
Share on other sites

Val.. I think you kinda forgot _ControlHover... <_<

#region _ControlHover;
;===============================================================================
;   UDF Name: _ControlHover.au3 
;
;   Version v1.2.0  Sept 25, 2006, built with Autoit 3.2.1.3
;
;   Author: Valuater, Robert M
;
;   Contributions: marfdaman(Marvin), RazerM, Quaizywabbit(AnyGUI).
;   
;   Email: <Valuater [at] aol [dot] com>
;   
;   Use: Enable Mouse/Hover Over Control Events
;===============================================================================

#include-once
#include<Array.au3>

Global $cHoverID[2], $Global_cHID = 0, $cHoverActive = 0, $cHClicked = 0

;===============================================================================
;
; Function Name:    _ControlHover()
; Description:      Enable Mouse/Hover Over Control Events
;                   Find if Mouse is over a known control
;                   Find if a Mouse has Clicked on a known control
;                   Add, Remove, or Verify the control within the known control list
; Parameter(s):     $cH_Mode    [default]       0 = Find if Mouse is over a known control
;                               [optional]      1 = Find if a Mouse has Clicked on a known control
;                                               2 = Add a control to the known control list
;                                               3 = Remove a control from the known control list
;                                               4 = Verify a control is in the known control list
;                   $cH_hWin    [optional]      - Window handle as returned by GUICreate()
;                               [preferred]     - Window handle to save CPU usage and speed of _ControlHover()
;                                               - and Avoid array errors for "non-active window"
;                   $cH_hCntrl  [required]      - Control ID to Add, Remove, or Verify the control within the known control list
;                               [not used]      - to find if a mouse is over or has clicked on a known control
; Requirement(s):   #include<Array.au3>
; Return Value(s):  
;                   $cH_Mode 0 or 1 
;                               On Success  Return = 1      @error = 0, @extended = Current known control 
;                               While Success Return = "" 
;                               On Failure: Return = 0      @error = 1, @extended = Last known control 
;                   $cH_Mode 2, 3, or 4
;                               On Success  Return = 1      @error = 0, @extended = Function's return line number 
;                   All $cH_Mode's
;                               On Error:   Return = Description of the error       
;                                                           @error = -1, @extended = Function's return line number 
; Author(s):        Valuater, Robert M
;
;===============================================================================
Func _ControlHover($cH_Mode = 0, $cH_hWin = "", $cH_hCntrl = "")
    
    Local $cH_i, $cH_Data
    If not @Compiled Then Opt("TrayIconDebug", 1) ; 1=debug line info
    
    Select
        Case $cH_Mode = 0 Or $cH_Mode = 1 ; 0 = Check if mouse is over a control, 1 = Check if mouse clicked on a control 
            
            ; Developer did not add any controls before the function mode 0 or 1 was called
            If UBound($cHoverID) = 2 Then ConsoleWrite("*** _ControlHover() Error *** " & @CRLF & "No Controls were Added" & @CRLF) 
            
            If $cH_hWin = "" Then 
                $cH_Data = GUIGetCursorInfo() ; Get cursor data from the active window
            Else
                If Not WinActive($cH_hWin) Then Return SetError( -1, 1, "Window not active") ; Dont waist CPU if the known window is not active
                $cH_Data = GUIGetCursorInfo($cH_hWin) ; Get cursor data from the known window
            EndIf
            
            If Not IsArray($cH_Data) Then Return SetError( -1, 2, "Window not found") ; A readable GUI window was not found
            
            For $cH_i = 1 to UBound($cHoverID) -1 ; Search the known controls for the currently hovered control 
                If $cH_Data[4] = $cHoverID[$cH_i] Then ; Mouse is over a current known control
                    
                    ; Mode 1 - check for a Click on a known control
                    If $cH_Mode And $cH_Data[2] = 1 and Not $cHClicked Then
                        $cHClicked = 1
                        Return SetError( 0, $cHoverID[$Global_cHID], 1) ; Mouse clicked on current control
                    ElseIf $cH_Mode And $cH_Data[2] <> 1 And $cHClicked Then
                        $cHClicked = 0
                        Return SetError( 1, $cHoverID[$Global_cHID], 0) ; Release clicked current control
                    EndIf
                    If $cH_Mode Then Return SetError ( "", "", "") ; Mouse is still over last known control and may click again
                    
                    ; Mode 0 & 1
                    If $cHoverID[$cH_i] = $cHoverID[$Global_cHID] And $cHoverActive Then Return SetError ( "", "", "") ; Mouse is still over last known control
                    If $cHoverActive Then 
                        $cHoverActive = 0
                        Return SetError( 1, $cHoverID[$Global_cHID], 0) ; Release Active - Mouse is over a new known control
                    EndIf
                    $cHoverActive = 1
                    $cHoverID[$Global_cHID] = $cHoverID[$cH_i] ; Re-set the current control to the new known control
                    Return SetError(0, $cHoverID[$Global_cHID], 1) ; Mouse is over the new-current known control
                    
                EndIf
            Next
            ; hover control not found in the known control list
            If $cHoverActive Then 
                If  $cH_Mode And $cHClicked Then  ; check - Release clicked current control
                    $cHClicked = 0
                    Return SetError( 1, $cHoverID[$Global_cHID], 0) ; Release clicked current control
                EndIf
                If $cH_Mode Then Return SetError ( "", "", "") ; Protect the release of the active control
                $cHoverActive = 0
                Return SetError( 1, $cHoverID[$Global_cHID], 0) ; Release Active - Mouse is over a new unknown control
            EndIf
            If  $cH_Mode And $cHClicked Then
                $cHClicked = 0
                Return SetError( 1, $cHoverID[$Global_cHID], 0) ; Release clicked current control
            EndIf
            Return SetError ( "", "", "")
        
        Case $cH_Mode = 2 ; Add the new control to the known control list
            
            If $cH_hCntrl = "" Then Return SetError( -1, 8, "Control not provided #1") ; The control ID was not given
            _ArrayAdd($cHoverID, $cH_hCntrl) ; Add the control to the known control array
            If @error Then Return SetError( -1, 9, "Control not added") ; Control not added to the known control list
            Return SetError( 0, 10, 1) ; ; Control was added to the known control list
            
        Case $cH_Mode = 3 ; Remove the control from the known control list
            
            If $cH_hCntrl = "" Then Return SetError( -1, 11, "Control not provided #2") ; The control ID was not given
            _ArrayDelete($cHoverID, $cH_hCntrl) ; Delete the control from the known control array list
            If @error Then Return SetError( -1, 12, "Control not removed") ; Control not deleted from the known control list
            Return SetError( 0, 13, 1) ; Control was deleted from the known control list
            
        Case $cH_Mode = 4 ; Verify if control is in the known control list
            
            If $cH_hCntrl = "" Then Return SetError( -1, 14, "Control not provided #3") ; The control ID was not given
            _ArraySearch($cHoverID, $cH_hCntrl) ; Search to verify if control is in the known control list
            If @error Then Return SetError( -1, 15, "Control not found") ; Control was not found in the known control list
            Return SetError( 0, 16, 1) ; Control was found in the known control list
            
        Case Else
            Return SetError( -1, 17, "$cH_Mode incorrect") ; $cH_Mode has an incorrect value
    EndSelect
    Return SetError( -1, 18, "Unknown Error") ; Error is Unknown
EndFunc
#endregion
Link to comment
Share on other sites

Using Gary's http://www.autoitscript.com/fileman/users/gafrost/projects/GUIRichEdit/GuiRichEdit.au3

#include <GuiConstants.au3>
#include "GuiRichEdit.au3"

$Gui=GuiCreate("MyGUI", 501, 431,-1, -1 , BitOR($WS_OVERLAPPEDWINDOW, $WS_CLIPSIBLINGS))

$Edit = _GUICtrlRichEditCreate($Gui, 257, 224, 163, 20,BitOR($ES_AUTOHSCROLL,$ES_READONLY))

$Label7a = GUICtrlCreateLabel("www.asd.com", 257, 204, 163, 20,BitOR($ES_AUTOHSCROLL,$ES_READONLY))
GuiCtrlSetFont(-1, 8.5, -1, 4) ; underlined
GuiCtrlSetColor(-1,0x0000ff)
GuiCtrlSetCursor(-1,0)

GUIRegisterMsg($WM_NOTIFY, "WM_NOTIFY_Events")
$lResult = _SendMessage($Edit, $EM_AUTOURLDETECT, True)
_GUICtrlRichEditAppendText ($Edit,"www.asd.com")
GuiSetState()
While 1
    $msg = GuiGetMsg()
    Select
    Case $msg = $GUI_EVENT_CLOSE
        ExitLoop
    Case $msg = $Label7a
        Onwww()
    Case Else
    ;;;
    EndSelect
WEnd
Exit

Func OnWWW()
    Run(@ComSpec & " /c " & 'start www.autoitscript.com/forum/', "", @SW_HIDE)
EndFunc


Func WM_NOTIFY_Events($hWndGUI, $MsgID, $wParam, $lParam)
    #forceref $hWndGUI, $MsgID
    Local $identifier, $nmhdr, $hwndFrom, $idFrom, $code
    ;----------------------------------------------------------------------------------------------
    $nmhdr = DllStructCreate($NMHDR_fmt, $lParam)
    $hwndFrom = DllStructGetData($nmhdr, 1)
    $idFrom = DllStructGetData($nmhdr, 2)
    $code = DllStructGetData($nmhdr, 3)
    Switch $hwndFrom
        Case $Edit
            Switch $code
                Case $EN_LINK
                    Local $EN_LINK_struct = DllStructCreate($ENLINK_fmt, $lParam)
                    $hwndFrom = DllStructGetData($EN_LINK_struct, 1)
                    $idFrom = DllStructGetData($EN_LINK_struct, 2)
                    $code = DllStructGetData($EN_LINK_struct, 3)
                    Local $en_link_msg = DllStructGetData($EN_LINK_struct, 4)
                    Local $en_link_wParam = DllStructGetData($EN_LINK_struct, 5)
                    Local $en_link_lParam = DllStructGetData($EN_LINK_struct, 6)
                    Local $cpMin = DllStructGetData($EN_LINK_struct, 7)
                    Local $cpMax = DllStructGetData($EN_LINK_struct, 8)
                    If BitAND($en_link_msg, $WM_LBUTTONDOWN) = $WM_LBUTTONDOWN Then
                        Local $link_clicked = _GUICtrlRichEditGetText ($hwndFrom, $cpMin, $cpMax) ; doesn't seem to work on zoomed text
                        If $link_clicked <> "" Then Run(@ComSpec & ' /c START "" "' & $link_clicked & '"', @SystemDir, @SW_HIDE)

                    EndIf
                    ;----------------------------------------------------------------------------------------------
                Case $EN_MSGFILTER
                    Local $EN_MSGFILTER_struct = DllStructCreate($msgfilter_fmt, $lParam)
                    $hwndFrom = DllStructGetData($EN_MSGFILTER_struct, 1)
                    $idFrom = DllStructGetData($EN_MSGFILTER_struct, 2)
                    $code = DllStructGetData($EN_MSGFILTER_struct, 3)
                    Local $en_msgfilter_msg = DllStructGetData($EN_MSGFILTER_struct, 4)
                    Local $en_msgfilter_wParam = DllStructGetData($EN_MSGFILTER_struct, 5)
                    Local $en_msgfilter_lParam = DllStructGetData($EN_MSGFILTER_struct, 6)
            EndSwitch
    EndSwitch
    Return $GUI_RUNDEFMSG

EndFunc   ;==>WM_NOTIFY_Events
Link to comment
Share on other sites

Tnx Valuater,but...,on msgbox works but on Run open web 100 times :S

why?

#include <GuiConstants.au3>
#include <_ControlHover.au3>

$GUI = GuiCreate("MyGUI", 501, 431,-1, -1 , BitOR($WS_OVERLAPPEDWINDOW, $WS_CLIPSIBLINGS))

$Edit = GUICtrlCreateEdit("www.asd.com", 257, 224, 163, 20,BitOR($ES_AUTOHSCROLL,$ES_READONLY))

$Label = GUICtrlCreateLabel("www.asd.com", 257, 204, 163, 20,BitOR($ES_AUTOHSCROLL,$ES_READONLY))
GuiSetState()

_ControlHover(2, $GUI, $Edit)

While 1
    If _ControlHover(1) Then OnWWW()
    
    $msg = GuiGetMsg()
    Select
    Case $msg = $GUI_EVENT_CLOSE
        ExitLoop
    Case $msg = $Label
        Onwww()
    Case Else
   ;;;
    EndSelect
WEnd
Exit


Func OnWWW()
    Run(@ComSpec & " /c " & 'start www.autoitscript.com/forum/', "", @SW_HIDE)
EndFunc

[quote name='dbzfanatic' post='609696' date='Nov 26 2008, 08:46 AM']This is a help forum not a "write this for me" forum.[/quote](Sorry for bad English) :)

Link to comment
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
 Share

  • Recently Browsing   0 members

    • No registered users viewing this page.
×
×
  • Create New...