网吧公告牌

用来模拟类似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
申明:本站资源大部分来自网络,如果无意侵犯了你的权利,请及时通知我们 AutoIt@FoxMail.Com,我们将尽快处理
Copyright © 2008-2009 随便复制 共享精神 人人有责 All Right Reserved
粤ICP备08009024号