找回密码
 加入
搜索
查看: 13863|回复: 42

[AU3基础] [已解决]请问如何在GUI控件上插入超链接?

[复制链接]
发表于 2009-9-25 19:11:50 | 显示全部楼层 |阅读模式
本帖最后由 smooth 于 2010-11-9 21:01 编辑

假如以下是我的GUI代码:
GUICtrlCreateLabel("访问鼎盛中国博客", 280, 323, 344, 24)
GUICtrlSetFont(-1, 10, 400)
GUICtrlCreateGroup("", -99, -99, 1, 1)
GUICtrlCreateGroup("", -99, -99, 1, 1)
如何才能做到,点击“访问鼎盛中国博客”的时候,自动打开我指定的网页“www.***.***.com”?

以下代码是我在网上查询的资料,但是琢磨了一天,都不知道怎么用,有达人指点下吗?
;$Label1 = GUICtrlCreateLabel("Label1", 39, 327, 36, 17)
;GUICtrlSetFont(-1, 8, 400, 4, "MS Sans Serif")
;GUICtrlSetOnEvent(-1, "Label1Click")
发表于 2009-9-25 19:25:11 | 显示全部楼层
#include <GUIConstantsEx.au3>
#include <StaticConstants.au3>
#include <WindowsConstants.au3>
#Region ### START Koda GUI section ### Form=
$Form1 = GUICreate("Form1", 201, 81, 192, 124)
$Label1 = GUICtrlCreateLabel("访问鼎盛中国博客", 88, 40, 100, 17)
GUICtrlSetCursor (-1, 0)
GUISetState(@SW_SHOW)
#EndRegion ### END Koda GUI section ###

While 1
        $nMsg = GUIGetMsg()
        Switch $nMsg
                Case $GUI_EVENT_CLOSE
                        Exit
                Case $Label1
                        ShellExecute("http://www.autoitx.com")

        EndSwitch
WEnd

评分

参与人数 1贡献 +3 收起 理由
afan + 3

查看全部评分

 楼主| 发表于 2009-9-25 19:50:07 | 显示全部楼层
本帖最后由 smooth 于 2009-9-25 19:53 编辑

你的代码是可以的。但是放到我的代码中就不行了。而且我的代码原来的功能都不行了。在研究中。
发表于 2009-9-25 21:12:57 | 显示全部楼层
Case $Label1
ShellExecute("http://www.autoitx.com")
不就只加了这么一句嘛,我看也没有什么问题,怎么楼主的代码就不能用了呢,楼主用的不会是事件模式吧!


 楼主| 发表于 2009-9-25 21:52:56 | 显示全部楼层
Case $Label1
ShellExecute("http://www.autoitx.com")
不就只加了这么一句嘛,我看也没有什么问题,怎么楼主的代码就不能用了呢,楼主用的不会是事件模式吧!


http://lwc.nhome.cn/code/showip.asp
gto250 发表于 2009-9-25 21:12

我上传代码,你帮我看下好吗?
发表于 2009-9-25 22:53:04 | 显示全部楼层
你传呢!



 楼主| 发表于 2009-9-25 23:42:39 | 显示全部楼层
本帖最后由 smooth 于 2009-9-27 10:04 编辑

……
;
GUICtrlCreateLabel("访问鼎盛中国博客", 280, 323, 344, 24)
GUICtrlSetFont(-1, 10, 400)
GUICtrlCreateGroup("", -99, -99, 1, 1)
GUICtrlCreateGroup("", -99, -99, 1, 1)

Global $vPartEdge[2], $vPartText[2]
$vPartEdge[0] = 200
$vPartEdge[1] = 400
$vPartText[0] = '  今天日期是:' & @YEAR & '年 ' & @MON & '月 ' & @MDAY & '日'
$vPartText[1] = '  Coded by 鼎盛中国,QQ:93737788'
_GUICtrlStatusBar_Create($Form, $vPartEdge, $vPartText)

_Set(GUICtrlRead($Date))
GUISetState(@SW_SHOW)

While 1
        $nMsg = GUIGetMsg()
        Switch $nMsg
                Case $GUI_EVENT_CLOSE
                        _UnLoadSkin($hSkinDll)
                        FileDelete($SkinFile)
                        FileDelete($SkinDll)
                        Exit
                Case $Date
                        _Set(GUICtrlRead($Date))
                        _Write($IniFile, 'Baby', 'PregnantDate', GUICtrlRead($Date))
        EndSwitch
WEnd
……
发表于 2009-9-26 00:01:14 | 显示全部楼层
修改这一段即可
GUICtrlCreateLabel("祝:母子平安,阖家幸福!", 39, 320, 200, 24) ;修改
GUICtrlSetFont(-1, 12, 400)
GUICtrlCreateGroup("", -99, -99, 1, 1)
GUICtrlCreateGroup("", -99, -99, 1, 1)
;
$lj = GUICtrlCreateLabel("访问鼎盛中国博客", 280, 323, 344, 24) ;修改
GUICtrlSetFont(-1, 10, 400)
GUICtrlCreateGroup("", -99, -99, 1, 1)
GUICtrlCreateGroup("", -99, -99, 1, 1)

Global $vPartEdge[2], $vPartText[2]
$vPartEdge[0] = 200
$vPartEdge[1] = 400
$vPartText[0] = '  今天日期是:' & @YEAR & '年 ' & @MON & '月 ' & @MDAY & '日'
$vPartText[1] = '  Coded by 鼎盛中国,QQ:93737788'
_GUICtrlStatusBar_Create($Form, $vPartEdge, $vPartText)

_Set(GUICtrlRead($Date))
GUISetState(@SW_SHOW)

While 1
        $nMsg = GUIGetMsg()
        Switch $nMsg
                Case $GUI_EVENT_CLOSE
                        _UnLoadSkin($hSkinDll)
                        FileDelete($SkinFile)
                        FileDelete($SkinDll)
                        Exit
                Case $Date
                        _Set(GUICtrlRead($Date))
                        _Write($IniFile, 'Baby', 'PregnantDate', GUICtrlRead($Date))
                Case $lj ;增加
                        ShellExecute("http://www.autoitx.com") ;改为自己的链接
        EndSwitch
WEnd
 楼主| 发表于 2009-9-26 00:08:08 | 显示全部楼层
能说说原理吗?我都改了一天都改不成功。
发表于 2009-9-26 00:37:47 | 显示全部楼层
总统先生(993839793) 19:04:01
别人给的例子总是不能简约写,实际上一个例子里面真正能教会你的其实就两3句,其它都是碍眼的东西。一个例子之所以变得难懂就是因为添加了太多的碍眼的东西。
总统先生(993839793) 19:10:08
许多例子都是这样的,如果你把这些所有垃圾信息都删除,那么你就很快就找到你需要的答案。这些垃圾是否就是垃圾呢?从完整的程序来考虑,这些包括各种功能及异常处理的程序,其实是不能称之为垃圾的,但是作为学习,这就东西就大大阻碍了你的学习进度,你不能在那么多语句中找到那么一个最关键的语句。所以当一些例子子放出来的时候,你就会大呼,复杂难懂。
发表于 2009-9-26 09:39:30 | 显示全部楼层
能说说原理吗?我都改了一天都改不成功。
smooth 发表于 2009-9-26 00:08


很简单,改为200的那个Label控件原来太长了,盖住了右边你要点击的Label控件...
估计你的问题就出在这里
 楼主| 发表于 2009-9-26 09:47:32 | 显示全部楼层
本帖最后由 smooth 于 2009-9-26 09:54 编辑
很简单,改为200的那个Label控件原来太长了,盖住了右边你要点击的Label控件...
估计你的问题就出在这里
afan 发表于 2009-9-26 09:39


我的意思不是这个。我是说,为什么要用一个循环来。
用:
$Label1 = GUICtrlCreateLabel("Label1", 39, 327, 36, 17)
case $Label1
sellexecute(www.autoitx.com)

这样不行吗?
发表于 2009-9-26 09:58:30 | 显示全部楼层
你是用的消息循环模式,当然就得用循环获得点击的消息
 楼主| 发表于 2009-9-26 10:08:15 | 显示全部楼层
你是用的消息循环模式,当然就得用循环获得点击的消息
afan 发表于 2009-9-26 09:58


明白了。那如果用事件模式,是不是简单点呢?
你会吗?
发表于 2009-9-26 10:15:57 | 显示全部楼层
本帖最后由 afan 于 2009-9-26 10:18 编辑

事件模式就是你一楼琢磨了半天的那段,关键代码 GUICtrlSetOnEvent(-1, "Label1Click")
脚本前面加一句 Opt("GUIOnEventMode", 1) ,消息模式随之无效。(即关闭窗口等消息均无效,需重新以上面所说的关键代码格式重写事件)
后面还需要写 Functions 函数,如
Func Label1Click()
       ShellExecute("http://www.autoitx.com")
Endfunc
您需要登录后才可以回帖 登录 | 加入

本版积分规则

QQ|手机版|小黑屋|AUTOIT CN ( 鲁ICP备19019924号-1 )谷歌 百度

GMT+8, 2024-5-4 19:54 , Processed in 0.087310 second(s), 28 queries .

Powered by Discuz! X3.5 Licensed

© 2001-2024 Discuz! Team.

快速回复 返回顶部 返回列表