网吧公告牌
用来模拟类似QQ在屏幕右下角展示公告信息,可以更改Ini配置文件,来实现不同的内容公告! 演示图:
代码: #NoTrayIcon
#include <GUIConstantsEx.au3> #include <WindowsConstants.au3> #include "SHAppBarMessage.au3" ;该库为自定义的,请参考 http://www.1msoft.com/column/UDF-hanshu/SHAppBarMessage.html ProExists() $FrmMain = GUICreate("", 256, 159, @DesktopWidth - 256, @DesktopHeight - 159 - _GetTaskBarHeight(), _ $WS_POPUP, $WS_EX_TOOLWINDOW,WinGetHandle(AutoItWinGetTitle())) ;设置窗体不在任务栏和任务管理器中的应用程序管理显示 $Info = WinGetPos($FrmMain) ;获取指定窗口的坐标位置和大小等属性 FileInstall("bg.jpg",@TempDir & "\bg.jpg") GUICtrlCreatePic(@TempDir & "\bg.jpg", 0, 0, 0, 0) GUICtrlSetState(-1, $GUI_DISABLE) ;设置为背景图片 $LblClose = GUICtrlCreateLabel("", 240, 5, 10, 10) GUICtrlSetCursor(-1, 0) ;为特定控件指定一个鼠标指针 GUICtrlSetBkColor(-1, $GUI_BKCOLOR_TRANSPARENT) ;设置指定控件的背景颜色为透明色,该方法测试对 Button 不生效 ;~ $Button = GUICtrlCreateButton(" ",210,5,20,20) ;~ GUICtrlSetState($Button,$WS_EX_TRANSPARENT) $LblView = GUICtrlCreateLabel("",6,133,55,20) GUICtrlSetCursor(-1, 0) GUICtrlSetBkColor(-1, $GUI_BKCOLOR_TRANSPARENT) GUISetState(@SW_SHOW) _SetWindowPos($FrmMain, @DesktopWidth - $Info[2], @DesktopHeight - _GetTaskBarHeight() - $Info[3]) ;这里设置窗口始终在最前端 _GetIni() ;设置标题信息和内容 _RoundGUI($FrmMain,0,0,5,5) ;窗体圆角 While 1 $nMsg = GUIGetMsg() Switch $nMsg Case $LblClose Exit Case $LblView $url = IniRead("config.ini","配置信息","URL","") If $url <> "" Then Run(@ComSpec & " /c start " & $url,"",0) Exit EndIf EndSwitch WEnd Func _SetWindowPos($hWnd, $x, $y) ;使用API将窗体保持最前 Local $cX, $cY $hWndInsertAfter = -1 $wFlags = 1 DllCall("user32.dll", "long", "SetWindowPos", "long", $hWnd, "long", $hWndInsertAfter, "long", $x, _ "long", $y, "long", $cX, "long", $cY, "long", $wFlags) EndFunc ;==>_SetWindowPos Func _GetTaskBarHeight() ;获取任务栏的高度 $result = SHAppBarMessage($ABM_GETTASKBARPOS, $pabd) Return @DesktopHeight - DllStructGetData($pabd, 6) EndFunc ;==>_GetTaskBarHeight Func _GetIni() ;读取配置文件信息设置公告板标题 $Title = IniRead("config.ini","配置信息","标题信息","") $Text = IniRead("config.ini","配置信息","内容信息","") If $Title <> "" Then $LblTitle = GUICtrlCreateLabel($Title,45,5,170,15,0) GUICtrlSetColor(-1, 0xFFFFFF) GUICtrlSetBkColor(-1, $GUI_BKCOLOR_TRANSPARENT) ;设置LABLE背景透明 GUICtrlSetFont(-1, 9, 800,0,"黑体_GB2312") ;本行为设置粗体字,但是字体也会改变.... EndIf If $Text <> "" Then $lblText = GUICtrlCreateLabel($Text,15,30,230,90,0) GUICtrlSetBkColor(-1, $GUI_BKCOLOR_TRANSPARENT) ;设置LABLE背景透明 GUICtrlSetColor(-1, 0x09f0) EndIf EndFunc Func _RoundGUI($h_win, $i_x1, $i_y1, $i_x3, $i_y3) ;窗体圆角API Dim $pos, $ret, $ret2 $pos = WinGetPos($h_win) $ret = DllCall("gdi32.dll", "long", "CreateRoundRectRgn", "long", $i_x1, "long", $i_y1, "long", $pos[2], "long", $pos[3], "long", $i_x3, "long", $i_y3) If $ret[0] Then $ret2 = DllCall("user32.dll", "long", "SetWindowRgn", "hwnd", $h_win, "long", $ret[0], "int", 1) If $ret2[0] Then Return 1 Else Return 0 EndIf Else Return 0 EndIf EndFunc Func ProExists() Local $my_Version $my_Version = "网吧公告板" If WinExists("gg" & $my_Version) Then Exit ;AutoItWinSetTitle($my_Version) EndFunc |
查看所有评论


