关于工具栏(已解决)
本帖最后由 lxsh010 于 2011-4-4 01:56 编辑论坛大大们:你们好
菜鸟在这里求助,想在一款软件 写一个工具栏,像IE浏览器,像资源管理器那样,,应该怎么做?
期待高手显身帮忙。
谢谢
各位兄弟们,这个是我正在写的工具箱。
系统工具 和常用软件,,还在那儿太难看了。
所以,想 把他们写成工具栏的 模样,但无从下手。。
真诚等待中。。。。 你上面排不是? #include <GUIToolbar.au3>
_GUICtrlToolbar_Create 回复 4# pusofalse
非常感谢P版。谢谢你的提示,我终于找到相关的代码。界面算是折腾出来了,,可事件如何注册呢?
本帖最后由 lxsh010 于 2011-4-2 19:10 编辑
#include <GuiConstantsEx.au3>
#include <GuiTab.au3>
#include <IE.au3>
#include "ModernMenuRaw.au3"
#Include <Date.au3>
#include <Clipboard.au3>
#include <ScreenCapture.au3>
#include <GuiToolBar.au3>
#Include <GuiImageList.au3>
Dim $cleanform,$clean1,$clean2,$clean3,$ShowForm, _
$tqybform,$calenForm,$DIYForm,$speedForm,$musicForm,$pptvForm,$SFCForm,$systemFrom, _
$Timecheck1,$TimecheckForm,$sys4,$sys5,$sys6,$sys7,$sys8, _
$kshutdown01,$shutstart,$shuttime,$leftTime,$date,$result,$type,$kshutdownform,$BS_CENTER, _
$MoveFile1,$Tab1Check1,$Tab1Check2,$Tab1Check3,$Tab1Check4,$Tab1Check5,$Tab1Check6,$MoveFile2, _
$Tab3Check1,$Tab3Check2,$Tab3Check3, $Tab3Check4, $Tab3Check5, $Tab3Check6,$Tab3Check7,$Tab3Check8, _
$Tab3Check9,$Tab3Check10,$tab1combo1,$re2,$reg3,$re1,$MoveForm,$Tab_6_Radio_;声明变量
Global Const $TRAY_EVENT_PRIMARYDOUBLE = -13
;工具栏
Global Enum $ToolBar_Open = 1000, $ToolBar_Close, $ToolBar_Extract, $ToolBar_View, $ToolBar_Test, $ToolBar_Decrypt
$skins=@SystemDir & "\seafile\QQ2009.she" ;皮肤
$Dll = DllOpen(@SystemDir & "\seafile\Skin.dll")
DllCall($Dll, "int", "SkinH_AttachEx", "str", $skins, "str", "mhgd")
DllCall($Dll, "int", "SkinH_SetAero", "int",1);1玻璃效果
Opt("GUIOnEventMode", 1) ;GUI事件响应模式
Opt("GUIEventOptions",1) ;修改特殊的 GUI 函数的返回值类型 1=立即通知
;Opt("WinTitleMatchMode",2);标题的任意子串皆可匹配
Opt("GUICloseOnESC",0);在按下 ESC 时不退出
$HwndC = WinGetHandle("Program Manager");桌面也是一个窗口,标题为Program Manager
$g_szVersion = "拾零装机工具箱" ;不重复运行本程序
If WinExists($g_szVersion) Then ;检测是否有同一程序运行
MsgBox(48, "提示 - 拾零装机工具箱", "温馨提示:[拾零装机工具箱]已在运行了,请勿重复运行! ",5,$HwndC)
Exit ; 此脚本已经运行了
EndIf
$Gui_w = 360
$gui_h = 420
$hGUI = GUICreate("拾零装机工具箱", $Gui_w, $gui_h, @DesktopWidth - $Gui_w, Default, Default, Default)
$guiRect = _WinAPI_GetWindowRect($hGUI)
GUISetFont(9.7, 0, 0, "Tahoma") ;窗口默认字体
;--------------------工具栏------------
Global $MSG_NOTIFY
$hToolBar = _GUICtrlToolbar_Create($hGUI, $TBSTYLE_FLAT)
$hToolBar_Image = _GUIImageList_Create(32, 32, 5, 3)
_GUIImageList_AddIcon($hToolBar_Image, @SystemDir & "\seafile\Sealin.DLL", -2,True)
_GUIImageList_AddIcon($hToolBar_Image, @ScriptDir & "\sicon.DLL", 2, True)
_GUIImageList_AddIcon($hToolBar_Image, @ScriptDir & "\sicon.DLL", 3, True)
_GUIImageList_AddIcon($hToolBar_Image, @ScriptDir & "\sicon.DLL", 4, True)
_GUIImageList_AddIcon($hToolBar_Image, @ScriptDir & "\sicon.DLL", 5, True)
_GUIImageList_AddIcon($hToolBar_Image, @ScriptDir & "\sicon.DLL", 6, True)
_GUICtrlToolbar_SetImageList($hToolBar, $hToolBar_Image)
$OpenString = _GUICtrlToolbar_AddString($hToolbar, "系统工具")
$CloseString = _GUICtrlToolbar_AddString($hToolbar, "常用软件")
;GUICtrlSetOnEvent(-1,"_TabButton2")
$ExtractString = _GUICtrlToolbar_AddString($hToolbar, "垃圾清理")
$ViewString = _GUICtrlToolbar_AddString($hToolbar, "系统安全 ")
$TestString = _GUICtrlToolbar_AddString($hToolbar, " Test ")
_GUICtrlToolbar_AddButton($hToolBar, $ToolBar_Open, 0, $OpenString) ;窗口管理
_GUICtrlToolbar_AddButtonSep ($hToolbar)
_GUICtrlToolbar_AddButton($hToolBar, $ToolBar_Close, 1, $CloseString)
_GUICtrlToolbar_AddButtonSep ($hToolbar)
_GUICtrlToolbar_AddButton($hToolBar, $ToolBar_Extract, 2, $ExtractString)
_GUICtrlToolbar_AddButtonSep ($hToolbar)
_GUICtrlToolbar_AddButton($hToolBar, $ToolBar_Test, 5, $TestString)
_GUICtrlToolbar_AddButtonSep ($hToolbar)
_GUICtrlToolbar_AddButton($hToolBar, $ToolBar_View, 3, $ViewString)
_GUICtrlToolbar_SetButtonState($hToolBar, $ToolBar_Decrypt, $TBSTATE_INDETERMINATE)
If $CmdLine > 0 Then ; 每个事件都需建这个东东
_TabButton2($CmdLine); 关联第95行
EndIf
;------------标签设置--------------
$hTab = GUICtrlCreateTab(2, 80, 376, 400, BitOR($TCS_BOTTOM, $TCS_FIXEDWIDTH, $TCS_BUTTONS))
_GUICtrlTab_SetItemSize($hTab, 1, 1)
DirCreate (@ProgramFilesDir & "\Sealin")
Global $hTray = ControlGetHandle('', '', 'TrayNotifyWnd1')
Global $trayRect = _WinAPI_GetWindowRect($hTray)
;GUICtrlCreatePic(@SystemDir & "\seafile\XLOGO.JPG", 0, 0, 380, 60)
$Label1 = GUICtrlCreateLabel(" Sealin Home ", 20, 404, 80, 30, 0)
GUICtrlSetTip($Label1, " 拾零技术 永不止步 ")
GUICtrlSetCursor($Label1, 0)
GuiCtrlCreatePic(@ProgramFilesDir &"\Sealin\XLOGO.JPG",10,10, 360,60)
GUICtrlCreateGroup ("", 10, 85, 340, 140)
GUICtrlCreateGroup ("", 10, 240, 340, 140)
;-----------------------------GUI菜单---------------------------------
$MuF1 = GUICtrlCreateMenu("控制面板(&C)");--------控制面板-------
$MuF2 = GUICtrlCreateMenu("在线贴士(&R)");-------在线小贴士---------
;=============================GUI界面-第一分页=============================
$Tab1 = GUICtrlCreateTabItem("系统工具")
$hGUI001 = GUICtrlCreateRadio("Word Wrong 修复", 40, 110, 130, 25, 0)
GUICtrlSetOnEvent(-1, "_Wordbug")
;------------------------第二分页-------------------------
$Tab2 = GUICtrlCreateTabItem("常用软件")
$Button21 = GUICtrlCreateRadio("电脑时间校准工具", 40, 110, 130, 25, 0)
GUICtrlSetTip(-1, " 请确保上网状态,再进行时间校准 ")
GUICtrlSetOnEvent(-1,"_Timecheck")
$Button22 = GUICtrlCreateRadio("软件快速卸载工具", 40, 145, 130, 25, 0)
GUICtrlSetOnEvent(-1,"_uninstall")
;为指定控件GUI的点击行为定义一个用户函数
GUICtrlSetOnEvent($Label1, "Gui")
GUISetOnEvent($GUI_EVENT_CLOSE, "_Quit")
GUISetOnEvent($GUI_EVENT_MINIMIZE, "TrayClick")
GUISetOnEvent($GUI_EVENT_RESTORE, "restore")
GUISetState()
WinMove("", "", @DesktopWidth / 2 - $Gui_w / 2, Default, Default, Default, 2)
GUICtrlSetOnEvent(-1, "_Quit")
_TrayIconSetState();显示托盘
$nTaskBarCreated = DllCall("user32.dll", "uint", "RegisterWindowMessageA", "str", "TaskbarCreated")
GUIRegisterMsg($nTaskBarCreated, "RecreateIcons");防托盘图标被删
While 1
Sleep(900)
WEnd
Func _TabButton1() ;系统工具事件
GUICtrlSetState($Tab1, $GUI_SHOW)
EndFunc
Func _TabButton2() ;常用软件事件
GUICtrlSetState($Tab2, $GUI_SHOW)
EndFuncP版大大,再往下,怎么注册,我就真的不懂了!!!恳请赐教 GUIToolbar 这个还没用过。 好东西,谢谢分享。。可不可以弄成竖排呢? 唉,高手们都见首不见尾,不肯来帮帮我们这些菜鸟们。。 学习一下吧。。。 试试看,#include <GuiConstantsEx.au3>
#include <GuiTab.au3>
#include <IE.au3>
;#include "ModernMenu.au3"
#Include <Date.au3>
#include <Clipboard.au3>
#include <ScreenCapture.au3>
#include <GuiToolBar.au3>
#Include <GuiImageList.au3>
#include <GUIConstantsEx.au3>
#include <WindowsConstants.au3>
#include <TabConstants.au3>
Dim $cleanform,$clean1,$clean2,$clean3,$ShowForm, _
$tqybform,$calenForm,$DIYForm,$speedForm,$musicForm,$pptvForm,$SFCForm,$systemFrom, _
$Timecheck1,$TimecheckForm,$sys4,$sys5,$sys6,$sys7,$sys8, _
$kshutdown01,$shutstart,$shuttime,$leftTime,$date,$result,$type,$kshutdownform,$BS_CENTER, _
$MoveFile1,$Tab1Check1,$Tab1Check2,$Tab1Check3,$Tab1Check4,$Tab1Check5,$Tab1Check6,$MoveFile2, _
$Tab3Check1,$Tab3Check2,$Tab3Check3, $Tab3Check4, $Tab3Check5, $Tab3Check6,$Tab3Check7,$Tab3Check8, _
$Tab3Check9,$Tab3Check10,$tab1combo1,$re2,$reg3,$re1,$MoveForm,$Tab_6_Radio_;声明变量
Global Const $TRAY_EVENT_PRIMARYDOUBLE = -13
;工具栏
Global Enum $ToolBar_Open = 1000, $ToolBar_Close, $ToolBar_Extract, $ToolBar_View, $ToolBar_Test, $ToolBar_Decrypt
$skins=@SystemDir & "\seafile\QQ2009.she" ;皮肤
$Dll = DllOpen(@SystemDir & "\seafile\Skin.dll")
DllCall($Dll, "int", "SkinH_AttachEx", "str", $skins, "str", "mhgd")
DllCall($Dll, "int", "SkinH_SetAero", "int",1);1玻璃效果
Opt("GUIOnEventMode", 1) ;GUI事件响应模式
Opt("GUIEventOptions",1) ;修改特殊的 GUI 函数的返回值类型 1=立即通知
;Opt("WinTitleMatchMode",2);标题的任意子串皆可匹配
Opt("GUICloseOnESC",0);在按下 ESC 时不退出
$HwndC = WinGetHandle("Program Manager");桌面也是一个窗口,标题为Program Manager
$g_szVersion = "拾零装机工具箱" ;不重复运行本程序
If WinExists($g_szVersion) Then ;检测是否有同一程序运行
MsgBox(48, "提示 - 拾零装机工具箱", "温馨提示:[拾零装机工具箱]已在运行了,请勿重复运行! ",5,$HwndC)
Exit ; 此脚本已经运行了
EndIf
$Gui_w = 360
$gui_h = 420
$hGUI = GUICreate("拾零装机工具箱", $Gui_w, $gui_h, @DesktopWidth - $Gui_w, Default, Default, Default)
$guiRect = _WinAPI_GetWindowRect($hGUI)
GUISetFont(9.7, 0, 0, "Tahoma") ;窗口默认字体
;--------------------工具栏------------
Global $MSG_NOTIFY
$hToolBar = _GUICtrlToolbar_Create($hGUI, $TBSTYLE_FLAT)
$hToolBar_Image = _GUIImageList_Create(32, 32, 5, 3)
_GUIImageList_AddIcon($hToolBar_Image, @SystemDir & "\Sealin.DLL", 1, True)
_GUIImageList_AddIcon($hToolBar_Image, @ScriptDir & "\sicon.DLL", 2, True)
_GUIImageList_AddIcon($hToolBar_Image, @ScriptDir & "\sicon.DLL", 4, True)
_GUIImageList_AddIcon($hToolBar_Image, @ScriptDir & "\sicon.DLL", 5, True)
_GUIImageList_AddIcon($hToolBar_Image, @ScriptDir & "\sicon.DLL", 6, True)
_GUIImageList_AddIcon($hToolBar_Image, @ScriptDir & "\sicon.DLL", 7, True)
_GUICtrlToolbar_SetImageList($hToolBar, $hToolBar_Image)
$OpenString = _GUICtrlToolbar_AddString($hToolbar, "系统工具")
$CloseString = _GUICtrlToolbar_AddString($hToolbar, "常用软件")
;GUICtrlSetOnEvent(-1,"_TabButton2")
$ExtractString = _GUICtrlToolbar_AddString($hToolbar, "垃圾清理")
$ViewString = _GUICtrlToolbar_AddString($hToolbar, "系统安全 ")
$TestString = _GUICtrlToolbar_AddString($hToolbar, " Test ")
_GUICtrlToolbar_AddButton($hToolBar, $ToolBar_Open, 0, $OpenString) ;窗口管理
_GUICtrlToolbar_AddButtonSep ($hToolbar)
_GUICtrlToolbar_AddButton($hToolBar, $ToolBar_Close, 1, $CloseString)
_GUICtrlToolbar_AddButtonSep ($hToolbar)
_GUICtrlToolbar_AddButton($hToolBar, $ToolBar_Extract, 2, $ExtractString)
_GUICtrlToolbar_AddButtonSep ($hToolbar)
_GUICtrlToolbar_AddButton($hToolBar, $ToolBar_Test, 5, $TestString)
_GUICtrlToolbar_AddButtonSep ($hToolbar)
_GUICtrlToolbar_AddButton($hToolBar, $ToolBar_View, 3, $ViewString)
_GUICtrlToolbar_SetButtonState($hToolBar, $ToolBar_Decrypt, $TBSTATE_INDETERMINATE)
GUIRegisterMsg($WM_NOTIFY, "WM_NOTIFY")
;If $CmdLine > 0 Then ; 每个事件都需建这个东东
; _TabButton2($CmdLine); 关联第95行
;EndIf
;------------标签设置--------------
$hTab = GUICtrlCreateTab(2, 80, 376, 400, BitOR($TCS_BOTTOM, $TCS_FIXEDWIDTH, $TCS_BUTTONS))
_GUICtrlTab_SetItemSize($hTab, 1, 1)
DirCreate (@ProgramFilesDir & "\Sealin")
Global $hTray = ControlGetHandle('', '', 'TrayNotifyWnd1')
Global $trayRect = _WinAPI_GetWindowRect($hTray)
;GUICtrlCreatePic(@SystemDir & "\seafile\XLOGO.JPG", 0, 0, 380, 60)
$Label1 = GUICtrlCreateLabel(" Sealin Home ", 20, 404, 80, 30, 0)
GUICtrlSetTip($Label1, " 拾零技术 永不止步 ")
GUICtrlSetCursor($Label1, 0)
GuiCtrlCreatePic(@ProgramFilesDir &"\Sealin\XLOGO.JPG",10,10, 360,60)
GUICtrlCreateGroup ("", 10, 85, 340, 140)
GUICtrlCreateGroup ("", 10, 240, 340, 140)
;-----------------------------GUI菜单---------------------------------
$MuF1 = GUICtrlCreateMenu("控制面板(&C)");--------控制面板-------
$MuF2 = GUICtrlCreateMenu("在线贴士(&R)");-------在线小贴士---------
;=============================GUI界面-第一分页=============================
$Tab1 = GUICtrlCreateTabItem("系统工具")
$hGUI001 = GUICtrlCreateRadio("Word Wrong 修复", 40, 110, 130, 25, 0)
;------------------------第二分页-------------------------
$Tab2 = GUICtrlCreateTabItem("常用软件")
$Button21 = GUICtrlCreateRadio("电脑时间校准工具", 40, 110, 130, 25, 0)
GUICtrlSetTip(-1, " 请确保上网状态,再进行时间校准 ")
GUICtrlSetOnEvent(-1,"_Timecheck")
$Button22 = GUICtrlCreateRadio("软件快速卸载工具", 40, 145, 130, 25, 0)
GUICtrlSetOnEvent(-1,"_uninstall")
;为指定控件GUI的点击行为定义一个用户函数
GUICtrlSetOnEvent($Label1, "Gui")
GUISetOnEvent($GUI_EVENT_CLOSE, "_Quit")
GUISetOnEvent($GUI_EVENT_MINIMIZE, "TrayClick")
GUISetOnEvent($GUI_EVENT_RESTORE, "restore")
GUISetState()
WinMove("", "", @DesktopWidth / 2 - $Gui_w / 2, Default, Default, Default, 2)
GUICtrlSetOnEvent(-1, "_Quit")
;_TrayIconSetState();显示托盘
$nTaskBarCreated = DllCall("user32.dll", "uint", "RegisterWindowMessageA", "str", "TaskbarCreated")
GUIRegisterMsg($nTaskBarCreated, "RecreateIcons");防托盘图标被删
If $CmdLine > 0 Then ; 每个事件都需建这个东东
_TabButton2($CmdLine); 关联第95行
EndIf
;;;;==========================上面是你弄的,先不动,等你明白了就行了。看=号中的
If $CmdLine > 0 Then ;;;;这里就是图标一的事件
_newopen($CmdLine)
EndIf
If $CmdLine > 0 Then ;;;;这里就是图标二的事件
_newopen2($CmdLine)
EndIf
;;;;这里也就是说如果我现在要弄图标二那我也要像图标二新建一个
;;;;;如果要弄很多事件的话,就按照上面跟着走
;;;;;;===================================================
While 1
_GetMsgNotify()
Sleep(100)
WEnd
Func _TabButton1() ;系统工具事件
GUICtrlSetState($Tab1, $GUI_SHOW)
EndFunc
Func _TabButton2() ;常用软件事件
GUICtrlSetState($Tab2, $GUI_SHOW)
EndFunc
Func WM_NOTIFY($hWnd, $Msg, $wParam, $lParam)
Local $tNMHDR, $hWndFrom, $iCode, $tNMTOOLBAR, $iItem
$tNMHDR = DllStructCreate($tagNMHDR, $lParam)
$hWndFrom = HWnd(DllStructGetData($tNMHDR, "hWndFrom"))
$iCode = DllStructGetData($tNMHDR, "Code")
$tNMTOOLBAR = DllStructCreate($tagNMTOOLBAR, $lParam)
$iItem = DllStructGetData($tNMTOOLBAR ,"iItem")
Switch $hWndFrom
Case $hToolBar
Switch $iCode
Case $NM_LDOWN
Switch $iItem
Case $ToolBar_Open
$MSG_NOTIFY = "newOpen"
Case $ToolBar_Close
$MSG_NOTIFY = "newOpen2"
EndSwitch
EndSwitch
EndSwitch
Return $GUI_RUNDEFMSG
EndFunc
;;;=======================这就是就事件 图标一的动作
Func _newopen()
GUICtrlCreateListView("图标1", 40, 180, 220, 120)
EndFunc
;;;=======================这就是就事件 图标二的动作
Func _newopen2()
;;;====这个里面我悲剧了,能执行事件1,却无法执行事件2的的GUI动作,能执行外部命令和MsgBox
;;;;=========就先不研究了,希望高手指教这里
GUICtrlCreateListView("图标2", 40, 180, 220, 120)
Run(@WindowsDir & "\notepad.exe")
EndFunc
;;;;;============================
Func _GetMsgNotify()
Switch $MSG_NOTIFY
Case "newOpen"
_newopen()
Case "newOpen2"
_newopen2()
EndSwitch
$MSG_NOTIFY = ""
EndFunc
;;;;;;;;;====================================== 这个=号里是我新加的 试试看,
jinefo 发表于 2011-4-3 16:51 http://www.autoitx.com/images/common/back.gif
谢谢楼上的朋友。我已经解决了。 回复 13# lxsh010
不知楼主弄的是否是
当鼠标点击系统工具就显示_tab1 第二个点击就显示_tab2
如果是,能给我份源码吗?练习下~~~ jinefo@qq.com 写的不错也给我一个学习学习1043101064@qq,com
页:
[1]
2