fuldho 发表于 2016-2-18 14:19:40

message制作工具---au3源码

message制作工具




#Region ;**** 参数创建于 ACNWrapper_GUI ****
#PRE_Icon=LOGO\message.ico
#PRE_Outfile=message.exe
#PRE_UseUpx=n
#PRE_Res_Description=message制作工具1.2
#PRE_Res_Fileversion=1.2.0.0
#PRE_Res_LegalCopyright=@copyright 2010
#PRE_Res_requestedExecutionLevel=None
#PRE_Res_Field=CompanyName|www.60808.net
#EndRegion ;**** 参数创建于 ACNWrapper_GUI ****
#include <ButtonConstants.au3>
#include <ComboConstants.au3>
#include <GUIConstantsEx.au3>
#include <Process.au3>
#include <ButtonConstants.au3>
#include <GUIConstants.au3>
#include <ProgressConstants.au3>
#include <GDIPlus.au3>
#include <StaticConstants.au3>
#include <GuiComboBoxEx.au3>
#include <GuiImageList.au3>
#include <GuiConstantsEx.au3>
#include <WindowsConstants.au3>
#include <Misc.au3>
#include <WinApiEx.au3>
#include <File.au3>

Opt("SendCapslockMode", 0)
$Form1 = GUICreate("GfxMenu Message                                        by_年老痴呆", 640, 640, -1, -1)
DirCreate (@TempDir & "\tmp")
$tmp = @TempDir & "\tmp"
FILEINSTALL ( "LOGO\back.jpg" , $tmp & "\back.jpg", 1 )
$Pic = GUICtrlCreatePic($tmp & "\back.jpg", 0, 0, 640, 480)
FILEINSTALL ( "LOGO\gfxboot.cfg",$tmp & "\gfxboot.cfg", 1 )
Local $start_x,$start_y,$entries,$width,$normal,$select,$color,$width,$height,$Label,$bar,$s,$Labe0
$Button1 = GUICtrlCreateButton("更改背景", 430, 565, 75, 22, 0)
$Button2 = GUICtrlCreateButton("更改字体", 535, 565, 75, 22, 0)
$Button3 = GUICtrlCreateButton("开始制作", 430, 595, 75, 22, 0)
$Button4 = GUICtrlCreateButton("效果测试", 535, 595, 75, 22, 0)
$C1= GUICtrlCreateLabel("设置菜单文本颜色",25, 534, 98, 22)
$C2= GUICtrlCreateLabel("菜单文本选中颜色",223, 534, 98, 22)
$C3= GUICtrlCreateLabel("菜单选中背景颜色",421, 534, 98, 22)
$Combo1 = GUICtrlCreateCombo("", 123, 565,75, 20, BitOR($CBS_DROPDOWN,$CBS_AUTOHSCROLL))
GUICtrlSetData(-1, "100|120|150|180|200|220|250|280|300|320|350|380|", "180")
$Combo2 = GUICtrlCreateCombo("", 320, 565,75, 20, BitOR($CBS_DROPDOWN,$CBS_AUTOHSCROLL))
GUICtrlSetData(-1, "50|100|120|150|180|200|220|250|280|300|320|", "120")
$Labe2= GUICtrlCreateLabel("菜单条左起始位置",25, 568, 98, 22)
$Labe3= GUICtrlCreateLabel("菜单条上起始位置",223, 568, 98, 22)
$Labe4= GUICtrlCreateLabel("增加菜单容纳行数",25, 598, 98, 22)
$Labe5= GUICtrlCreateLabel("设置菜单最小宽度",223, 598, 98, 22)
$Combo3 = GUICtrlCreateCombo("", 123, 595,75, 20, BitOR($CBS_DROPDOWN,$CBS_AUTOHSCROLL))
GUICtrlSetData(-1, "18|20|22|25|28|30|", "18")
$Combo4 = GUICtrlCreateCombo("", 320, 595,75, 20, BitOR($CBS_DROPDOWN,$CBS_AUTOHSCROLL))
GUICtrlSetData(-1, "200|220|250|280|300|320|350|380|420|", "420")
Global $hGUI, $hImage, $hCombo1, $msg, $iMemo
Global $Color = ['0xFF9933', '0xFF00FF', '0xFF0000', '0xFFFF00', '0xFFFFFF', '0x00FFFF', '0x00FF66', '0x009900', '0x0000FF', '0x000000']
$hCombo1 = _GUICtrlComboBoxEx_Create($Form1, "", 123, 530, 95, -1, $CBS_DROPDOWNLIST, $CBES_EX_NOSIZELIMIT)
      GUIRegisterMsg($WM_COMMAND, "WM_COMMAND")
      $hImage1 = _GUIImageList_Create(12, 12, 5, 3)
      For $i = 0 To UBound($Color) - 1
                _GUIImageList_Add($hImage1, _GUICtrlComboBoxEx_CreateSolidBitMap($hCombo1, $Color[$i], 12, 12))
      Next
      _GUICtrlComboBoxEx_SetImageList($hCombo1, $hImage1)
      For $x = 0 To UBound($Color) - 1
                _GUICtrlComboBoxEx_AddString($hCombo1, $Color[$x], $x, $x)
      Next
      _GUICtrlComboBoxEx_SetCurSel($hCombo1, 0)
$hCombo2 = _GUICtrlComboBoxEx_Create($Form1, "", 320, 530, 95, -1, $CBS_DROPDOWNLIST, $CBES_EX_NOSIZELIMIT)
      GUIRegisterMsg($WM_COMMAND, "WM_COMMAND")
      $hImage2 = _GUIImageList_Create(12, 12, 5, 3)
      For $i = 0 To UBound($Color) - 1
                _GUIImageList_Add($hImage2, _GUICtrlComboBoxEx_CreateSolidBitMap($hCombo2, $Color[$i], 12, 12))
      Next
      _GUICtrlComboBoxEx_SetImageList($hCombo2, $hImage2)
      For $x = 0 To UBound($Color) - 1
                _GUICtrlComboBoxEx_AddString($hCombo2, $Color[$x], $x, $x)
      Next
      _GUICtrlComboBoxEx_SetCurSel($hCombo2, 0)
$hCombo3 = _GUICtrlComboBoxEx_Create($Form1, "", 519, 530, 95, -1, $CBS_DROPDOWNLIST, $CBES_EX_NOSIZELIMIT)
      GUIRegisterMsg($WM_COMMAND, "WM_COMMAND")
      $hImage3 = _GUIImageList_Create(12, 12, 5, 3)
      For $i = 0 To UBound($Color) - 1
                _GUIImageList_Add($hImage3, _GUICtrlComboBoxEx_CreateSolidBitMap($hCombo3, $Color[$i], 12, 12))
      Next
      _GUICtrlComboBoxEx_SetImageList($hCombo3, $hImage3)
      For $x = 0 To UBound($Color) - 1
                _GUICtrlComboBoxEx_AddString($hCombo3, $Color[$x], $x, $x)
      Next
      _GUICtrlComboBoxEx_SetCurSel($hCombo3, 0)

GUISetState(@SW_SHOW)
_cfg()
AdlibRegister('_HoverEffect',50)
While 1

      $nMsg = GUIGetMsg()
        Select
             Case $nMsg = $GUI_EVENT_CLOSE
                     AdlibUnRegister('_HoverEffect')
                     DirRemove($tmp, 1)
                        Exit
               Case $nMsg = $Button1
                        $Search = FileOpenDialog("请选择程序名","\","图像文件 (*.jpg;*.bmp)", 1 + 4)

                        $Imag = $Search
                              _GDIPlus_Startup()
                        $hImage = _GDIPlus_ImageLoadFromFile($Imag)
                        $Imagew = _GDIPlus_ImageGetWidth($hImage)
                              $Imageh = _GDIPlus_ImageGetHeight($hImage)
                              _GDIPlus_ImageDispose($hImage)
                              _GDIPlus_Shutdown()

                        IF $Imagew&" "&$Imageh == "800 600" OR $Imagew &" "&$Imageh = "1024 768" THEN
                               _Pic2jpg($Imag, $tmp & "\back.jpg", 90) ;质量90
                                 IniWrite($tmp & "\gfxboot.cfg", "Config", "custom_width", $Imagew)
                                 IniWrite($tmp & "\gfxboot.cfg", "Config", "custom_height" ,$Imageh)

                                       _cfg()

                        ELSE
                           MSGBOX (0 , "非标准图片" ,"请选择1024x768或800x600图片 |*.jpg|*.bmp|")
                        ENDIF
               Case $nMsg = $Button2
                        Local $a_font
                        $a_font = _ChooseFont("Arial", 8)
                        
                           If (@error) Then
                           Else
                                 $entries = INIREAD ( $tmp & "\gfxboot.cfg" , "Config" ,"menu_max_entries" , "" )   ;菜单条数
                                 $height = INIREAD ( $tmp & "\gfxboot.cfg" , "Config" , "custom_height" , "" )   ;高
                                 $start_y = INIREAD ( $tmp & "\gfxboot.cfg" , "Config" , "menu_start_y" , "" ) ;纵向起始                                    
                                  IfINT(($a_font+4)*$entries)>INT($height-$start_y-50) then
                                        $ent =INT(($height-$start_y-100)/($a_font+6))
                                        MSGBOX (0 , "字体设置过大","目前可以容纳"& $ent&"条菜单,"&@LF& _
                                                "如果你确定你的菜单少于"& $ent &"条"&@LF& _
                                                "你可以使用这个设置,"&@LF& _
                                                "否则请重新设置," )      
                                 EndIf
                                       IniWrite($tmp & "\gfxboot.cfg", "Config", "menu_font", $a_font)
                                       IniWrite($tmp & "\gfxboot.cfg", "Config", "font_size" ,$a_font)
                        GUICtrlSetData($Label, "")
                        GUICtrlSetBkColor($Label, $GUI_BKCOLOR_TRANSPARENT)
                                                 _cfg()   
                           EndIf
                                    
               Case $nMsg = $Button3
                              DirCreate (@TempDir & "\tmp\Msgtmp")
                              DIM $DIYMSG = @TempDir & "\tmp\Msgtmp"
                                        _msg()
                  MSGBOX (0 , "制作完成!" ,"“message”文件已拷贝在当前目录。" & @LF& _
                              "你可以进行模拟效果测试了!")

               Case $nMsg = $Button4
                                 _Amvm()
               Case $nMsg = $Combo1
                        $b1 = GUICtrlRead($Combo1)
                        IniWrite($tmp & "\gfxboot.cfg", "Config", "menu_start_x", $b1)
                        GUICtrlSetData($Label, "")
                        GUICtrlSetBkColor($Label, $GUI_BKCOLOR_TRANSPARENT)
                                       _cfg()
               Case $nMsg = $Combo2
                        $b2 = GUICtrlRead($Combo2)
                        IniWrite($tmp & "\gfxboot.cfg", "Config", "menu_start_y", $b2)
                        GUICtrlSetData($Label, "")
                        GUICtrlSetBkColor($Label, $GUI_BKCOLOR_TRANSPARENT)
                                       _cfg()
               Case $nMsg = $Combo3
                        $b3 = GUICtrlRead($Combo3)
                        $height = INIREAD ( $tmp & "\gfxboot.cfg" , "Config" , "custom_height" , "" )   ;高
                        $start_y = INIREAD ( $tmp & "\gfxboot.cfg" , "Config" , "menu_start_y" , "" ) ;纵向起始
                        $MFSIZE = INIREAD ($tmp & "\gfxboot.cfg", "Config", "font_size" ,"")
                        if INT(($MFSIZE+4)*$b3)<INT($height-$start_y-100) then
                           IniWrite($tmp & "\gfxboot.cfg", "Config", "menu_max_entries", $b3)
                        GUICtrlSetData($Label, "")
                        GUICtrlSetBkColor($Label, $GUI_BKCOLOR_TRANSPARENT)
                                       _cfg()
                        else
                        MSGBOX (0 , "提示!" ,"目前已经容纳不下"& $b3&"条菜单,"&@LF& _
                                                "解决办法:"&@LF& _
                                                "1 、把菜单条起始位置向上移动,"&@LF& _
                                                "2 、把菜单条字体减小。")
                        endif
               Case $nMsg = $Combo4
                        $b4 = GUICtrlRead($Combo4)
                        IniWrite($tmp & "\gfxboot.cfg", "Config", "menu_bar_min_width", $b4)
                        GUICtrlSetData($Label, "")
                        GUICtrlSetBkColor($Label, $GUI_BKCOLOR_TRANSPARENT)
                                       _cfg()

   EndSelect
WEnd
Func _msg()
DIM $DIYMSG = @TempDir & "\tmp\Msgtmp"
FILEINSTALL ( "LOGO\cpio.exe" , $DIYMSG & "\cpio.exe" )
FILEINSTALL ( "LOGO\msg", $DIYMSG & "\msg", 1 )
FILEINSTALL ( "LOGO\mkblfont.exe" , $DIYMSG & "\mkblfont.exe", 1 )
FILEINSTALL ( "LOGO\chs.txt" , $DIYMSG & "\chs.txt", 1 )
FILEINSTALL ( "LOGO\libintl3.dll" , $DIYMSG & "\libintl3.dll", 1 )
FILEINSTALL ( "LOGO\libiconv2.dll" , $DIYMSG & "\libiconv2.dll", 1 )
RUNWAIT ( @COMSPEC & " /c cpio.exe -t <msg>list.txt&&cpio.exe -i <msg" , $DIYMSG , 0 )
FileCopy($tmp & "\gfxboot.cfg",$DIYMSG &'\gfxboot.cfg',1)
FileCopy($tmp & "\back.jpg",$DIYMSG &'\back.jpg',1)
$mfont = INIREAD ( $DIYMSG & "\gfxboot.cfg" , "Config" ,"menu_font","")
$MFSIZE = INIREAD ($DIYMSG & "\gfxboot.cfg", "Config", "font_size" ,"")
If $mfont <> "Arial" or $MFSIZE <> "16" Then
$csidl_fonts = "20"
local $fontslist = _filelisttoarray ( _winapi_shellgetspecialfolderpath ( $csidl_fonts ) , "*.*" , 1 )
if not @error then
      for $i = 1 to $fontslist [ 0 ]
                     local $fontsname = _winapi_getfontresourceinfo ( $fontslist [ $i ] , 1 ) , $fname
                     local $extension = stringright ( $fontslist [ $i ] , 4 )
               if $extension = ".ttc" then
                         local $array = stringsplit ( $fontsname , " & " , 1 )
                      for $j = 1 to $array [ 0 ]
                              if $array [ $j ] = $mfont then
                                  $fname = $fontslist [ $i ]
                                       exitloop
                              endif
                     next
               elseif $extension = ".ttf" or $extension = ".fon" then
                     if $fontsname = $mfont then $fname = $fontslist [ $i ]
               endif
      next
endif
LOCAL $OPT1 = "-a 0x20-0x7e,0xa0-0xbf,0xc1-0xcb,0xcd-0xce,0xd0-0xd1,0xd3-0xd8,0xda-0xff "
LOCAL $OPT2 = ":prop=2:space_width=4:size=" & INT ( $MFSIZE) & ":bold=1:nobitmap=1:autohint=1 "
RUNWAIT ( @COMSPEC & " /c mkblfont.exe -v -l 18 " & $OPT1 & "-t chs.txt -f " & $fname & $OPT2 & "16x16.fnt>nul" , $DIYMSG, 0 )
EndIf
RUNWAIT ( @COMSPEC & " /c cpio.exe -o <list.txt>..\msg.back", $DIYMSG , 0 )
FileCopy($tmp & "\msg.back",@ScriptDir &'\message')
DirRemove($DIYMSG, 1)
EndFunc

Func _cfg()
$start_x = INIREAD ( $tmp & "\gfxboot.cfg" , "Config" , "menu_start_x" , "" ) ;横向起始
$start_y = INIREAD ( $tmp & "\gfxboot.cfg" , "Config" , "menu_start_y" , "" ) ;纵向起始
$entries = INIREAD ( $tmp & "\gfxboot.cfg" , "Config" ,"menu_max_entries" , "" )   ;菜单条数
$mwidth = INIREAD ( $tmp & "\gfxboot.cfg" , "Config" ,"menu_bar_min_width" , "" )   ;菜单宽度
$normal = INIREAD ( $tmp & "\gfxboot.cfg" , "Config" , "menu_text_normal" , "" ) ;菜单色
$select = INIREAD ( $tmp & "\gfxboot.cfg" , "Config" , "menu_text_select" , "" ) ;选中色
$bar = INIREAD ( $tmp & "\gfxboot.cfg" , "Config" , "menu_bar_color" , "" )   ;选中背景色
$width = INIREAD ( $tmp & "\gfxboot.cfg" , "Config" , "custom_width" , "" )   ;宽
$height = INIREAD ( $tmp & "\gfxboot.cfg" , "Config" , "custom_height" , "" )   ;高
$font = INIREAD ( $tmp & "\gfxboot.cfg" , "Config" ,"menu_font","")
$MFSIZE = INIREAD ($tmp & "\gfxboot.cfg", "Config", "font_size" ,"")
GUICtrlSetImage($Pic,$tmp & "\back.jpg")
if $width = "1024" then
      $wh = "0.6"
      $z = "6"
else
      $wh = "0.78"
      $z = "6"
endif
$X = INT($start_x*$wh)
$Y = INT($start_y*$wh)
$w = INT($mwidth*$wh)
$F = INT($MFSIZE*$wh)
$M =$F+$z
$Label = GUICtrlCreateLabel("测试菜单起始位置及颜色效果",$x, $y, $w, $M)
GUICtrlSetColor($Label,$normal)
GUICtrlSetFont($Label, $F, 400, 0, $font)
GUICtrlSetBkColor($Label, $GUI_BKCOLOR_TRANSPARENT)
GUICtrlSetData($Labe0, "")
$Labe0 = GUICtrlCreateLabel("现在你看到的是"&$width&"x"&$height&"缩小到640x480时的效果",35, 490, 550, 40)
GUICtrlSetFont($Labe0, 18, 800, 0, "Arial")
EndFunc
Func _HoverEffect()
        $aInfo = GUIGetCursorInfo($Form1)
        Switch $aInfo

                Case $Label
                        If $S = True Then
                              GUICtrlSetColor($Label, $select)
                              GUICtrlSetBkColor($Label,$bar)
                              $S = False
                        EndIf
                Case Else
                        If $S = False Then
                              GUICtrlSetColor($Label, $normal)
                              GUICtrlSetBkColor($Label, $GUI_BKCOLOR_TRANSPARENT)
                              $S = True
                        EndIf

        EndSwitch
EndFunc
Func WM_COMMAND($hWnd, $iMsg, $iwParam, $ilParam)
      #forceref $hWnd, $iMsg
      Local $hWndFrom, $iCode, $Count, $sText
      $hWndFrom = $ilParam
      $iCode = BitShift($iwParam, 16)
      Switch $hWndFrom
                Case $hCombo1
                        Switch $iCode
                              Case $CBN_SELCHANGE
                                     $Count = _GUICtrlComboBoxEx_GetCurSel($hCombo1)
                                     _GUICtrlComboBoxEx_GetItemText ($hCombo1, $Count, $sText)
                                     IniWrite($tmp & "\gfxboot.cfg", "Config", "menu_text_normal", $sText)
                                       _cfg()
                         EndSwitch
                Case $hCombo2
                        Switch $iCode
                              Case $CBN_SELCHANGE
                                     $Count = _GUICtrlComboBoxEx_GetCurSel($hCombo2)
                                     _GUICtrlComboBoxEx_GetItemText ($hCombo2, $Count, $sText)
                                     IniWrite($tmp & "\gfxboot.cfg", "Config", "menu_text_select", $sText)
                                                 _cfg()
                        EndSwitch
                Case $hCombo3
                        Switch $iCode
                              Case $CBN_SELCHANGE
                                     $Count = _GUICtrlComboBoxEx_GetCurSel($hCombo3)
                                     _GUICtrlComboBoxEx_GetItemText ($hCombo3, $Count, $sText)
                                     IniWrite($tmp & "\gfxboot.cfg", "Config", "menu_bar_color", $sText)
                                             _cfg()
                        EndSwitch
      EndSwitch
      Return $GUI_RUNDEFMSG
EndFunc   ;==>WM_COMMAND
FUNC _PIC2JPG ( $SFILENAME , $OFILENAME , $IQUALITY = 100 )
_GDIPLUS_STARTUP ( )
LOCAL $HIMAGE = _GDIPLUS_IMAGELOADFROMFILE ( $SFILENAME )
LOCAL $GIQUALITY = $IQUALITY , $PPARAMS
LOCAL $TPARAMS = _GDIPLUS_PARAMINIT ( 1 )
LOCAL $TDATA = DLLSTRUCTCREATE ( "int Quality" )
DLLSTRUCTSETDATA ( $TDATA , "Quality" , $GIQUALITY )
_GDIPLUS_PARAMADD ( $TPARAMS , $GDIP_EPGQUALITY , 1 , $GDIP_EPTLONG , DLLSTRUCTGETPTR ( $TDATA ) )
IF ISDLLSTRUCT ( $TPARAMS ) THEN $PPARAMS = DLLSTRUCTGETPTR ( $TPARAMS )
LOCAL $CLSID = _GDIPLUS_ENCODERSGETCLSID ( "JPG" )
LOCAL $SAVE = _GDIPLUS_IMAGESAVETOFILEEX ( $HIMAGE , $OFILENAME , $CLSID , $PPARAMS )
_GDIPLUS_BITMAPDISPOSE ( $HIMAGE )
_GDIPLUS_SHUTDOWN ( )
IF $SAVE = FALSE THEN RETURN SETERROR ( 1 , 0 , FALSE )
RETURN TRUE
ENDFUNC
FUNC _Amvm()
if FileExists($tmp & "\msg.back") Then
   DirCreate ($tmp& "\boot")
   $boot = $tmp& "\boot"
   FileCopy($tmp & "\msg.back",@ScriptDir &'\message')
   FILEINSTALL ( "boot\qemu.dll" , $tmp & "\", 1 )
   FILEINSTALL ( "boot\mkisofs.dll" , $tmp & "\", 1 )
   FILEINSTALL ( "boot\grldr" , $boot & "\", 1 )
   FileCopy($tmp & "\msg.back",$boot &'\message', 1 )
RUN ( @COMSPEC & " /c mkisofs.dll -R -b grldr -no-emul-boot -boot-load-size 4 -oMsgPrvw.ISO boot ",$tmp,"")
RUN ( @COMSPEC & " /c qemu.dll -L . -m 16 -localtime -boot d -cdrom MsgPrvw.ISO ",$tmp,"")
Else
       MSGBOX (0 , "测试失败!" ,"你还没有制作个性message背景")
EndIf
ENDFUNC


成品:




au3源码及附件

**** Hidden Message *****

aimengyu 发表于 2016-2-18 14:54:44

333333333333333

2012duanyongli 发表于 2016-2-18 15:05:27

源代码的206行
$csidl_fonts = "20"
其中的 变量$csidl_fonts在不同的autoit版本可能会有冲突,建议修改一下。

freesoft00 发表于 2016-2-18 15:13:48

必须支持一下

kgenxp 发表于 2016-2-18 15:16:57

很方便制作message,收藏。

moran 发表于 2016-2-18 15:20:21

赞一个。。

xuehuwangwy 发表于 2016-2-18 15:24:58

好东西,下载看看,谢谢!

sh1688 发表于 2016-2-18 16:07:53

感謝分享~message制作工具---au3源码

ra25671123 发表于 2016-2-18 16:08:26

支持一下

wanghh 发表于 2016-2-18 16:09:51

非常好的东西!!收藏了
页: [1] 2 3 4 5 6 7 8 9 10
查看完整版本: message制作工具---au3源码