#Region ;**** Directives created by AutoIt3Wrapper_GUI **** #AutoIt3Wrapper_OutFile=Launcher.exe #AutoIt3Wrapper_icon=Launcher.ico #AutoIt3Wrapper_Compression=4 #AutoIt3Wrapper_UseAnsi=y #AutoIt3Wrapper_Res_Comment=- #AutoIt3Wrapper_Res_Description=Launcher.exe #AutoIt3Wrapper_Res_Fileversion=0.1.0.0 #AutoIt3Wrapper_Res_Fileversion_AutoIncrement=n #AutoIt3Wrapper_Res_LegalCopyright=AZJIO #AutoIt3Wrapper_Res_Language=1049 #AutoIt3Wrapper_Run_AU3Check=n #EndRegion ;**** Directives created by AutoIt3Wrapper_GUI **** ; @AZJIO 1.10.2010 (AutoIt3_v3.2.12.1+) #NoTrayIcon Opt('ExpandEnvStrings', 1) $Ini=@ScriptDir&'\Launcher.ini' If Not FileExists($Ini) Then $otvet=MsgBox(4, 'Выгодное предложение', 'Хотите создать необходимый Launcher.ini'&@CRLF&'в качестве примера? Иначе выход.') If $otvet=6 Then $file = FileOpen($Ini,2) FileWrite($file, '[gui]' & @CRLF & _ 'name=Launcher' & @CRLF & _ 'width=180' & @CRLF & _ 'height=90' & @CRLF & _ 'margin=5' & @CRLF & _ 'row=2' & @CRLF & _ 'fontsize=' & @CRLF & _ 'icon=' & @CRLF & _ 'ButMinW=' & @CRLF & _ 'ButMinH=' & @CRLF & _ @CRLF & _ '[1]' & @CRLF & _ 'name=Notepad' & @CRLF & _ 'hint=Открыть блокнот' & @CRLF & _ 'exe=notepad.exe' & @CRLF & _ @CRLF & _ '[2]' & @CRLF & _ 'name=Calc' & @CRLF & _ 'hint=Открыть калькулятор' & @CRLF & _ 'exe=calc.exe' & @CRLF & _ @CRLF & _ '[3]' & @CRLF & _ 'name=Paint' & @CRLF & _ 'hint=Открыть графический редактор' & @CRLF & _ 'exe=mspaint.exe' & @CRLF & _ @CRLF & _ '[4]' & @CRLF & _ 'name=Экспорт' & @CRLF & _ 'hint=Пример с ком-строкой, экспорт из реестра' & @CRLF & _ 'exe=regedit.exe' & @CRLF & _ 'arg=/e myfile.reg "HKEY_CURRENT_USER\Keyboard Layout\Preload"' & @CRLF & _ @CRLF & _ '[5]' & @CRLF & _ 'name=Launcher.ini' & @CRLF & _ 'hint=Открыть файл' & @CRLF & _ 'exe=Launcher.ini') FileClose($file) If Not FileExists($Ini) Then MsgBox(0, 'Ошибка', 'Отсутствует Launcher.ini.') Exit EndIf Else Exit EndIf EndIf Global $aIniSec=IniReadSectionNames($Ini) _test_Ini() $minW = IniRead ($Ini, 'gui', 'ButMinW', 15) $minH = IniRead ($Ini, 'gui', 'ButMinH', 19) If $minW < 15 Then $minW=15 If $minH < 19 Then $minH=19 $font = IniRead ($Ini, 'gui', 'fontsize', '') $icon = IniRead ($Ini, 'gui', 'icon', '') $row=IniRead($Ini, 'gui', 'row', '1') $col=Ceiling(($aIniSec[0]-1)/$row) $row=Ceiling(($aIniSec[0]-1)/$col) $GuiName=IniRead($Ini, 'gui', 'name', 'Launcher') $GuiW=IniRead($Ini, 'gui', 'width', '100') $GuiH=IniRead($Ini, 'gui', 'height', ($aIniSec[0]-1)*25) $mrgn=IniRead($Ini, 'gui', 'margin', '2') If $GuiW < 30 Then $GuiW=30 If $GuiW/($aIniSec[0]-1)*$col-$mrgn < $minW Then $GuiW=($aIniSec[0]-1)/$col*($minW+$mrgn) If $GuiH/($aIniSec[0]-1)*$row-$mrgn < $minH Then $GuiH=($aIniSec[0]-1)/$row*($minH+$mrgn) Global $aEXE[$aIniSec[0]-1][3] $Bw=Int(($GuiW-$mrgn)/$row) $Bh=Int(($GuiH-$mrgn)/($aIniSec[0]-1)*$row) While $Bw-$mrgn < $minW $mrgn-=1 $Bw=Int(($GuiW-$mrgn)/$row) $Bh=Int(($GuiH-$mrgn)/($aIniSec[0]-1)*$row) If $mrgn = 0 Then ExitLoop WEnd While $Bh-$mrgn < $minH $mrgn-=1 $Bw=Int(($GuiW-$mrgn)/$row) $Bh=Int(($GuiH-$mrgn)/($aIniSec[0]-1)*$row) If $mrgn = 0 Then ExitLoop WEnd $GuiW=$Bw*$row+$mrgn $GuiH=$Bh*$col+$mrgn GUICreate($GuiName, $GuiW, $GuiH) If $icon<>"" And FileExists($icon) Then GUISetIcon($icon) If $font<>"" Then GUISetFont($font) $Nrow=0 $d=0 For $i = 1 To $aIniSec[0] If $aIniSec[$i] = 'gui' Then ContinueLoop $aEXE[$d][0]=GUICtrlCreateButton(IniRead($Ini, $aIniSec[$i], 'name', '-'), $mrgn+$Bw*$Nrow, $mrgn+($d-$Nrow*$col)*$Bh, $Bw-$mrgn, $Bh-$mrgn) $GuiTmp=IniRead($Ini, $aIniSec[$i], 'hint', '') If $GuiTmp<>'' Then GUICtrlSetTip($aEXE[$d][0], $GuiTmp) $aEXE[$d][1]=IniRead($Ini, $aIniSec[$i], 'exe', '') $aEXE[$d][2]=IniRead($Ini, $aIniSec[$i], 'arg', '') If IsInt(($d+1)/$col) Then $Nrow=($d+1)/$col $d+=1 Next GUISetState() While 1 Sleep(10) $msg = GUIGetMsg() For $i = 0 To $aIniSec[0]-2 If $msg = $aEXE[$i][0] Then ShellExecute($aEXE[$i][1], $aEXE[$i][2]) Next If $msg = -3 Then Exit WEnd Func _test_Ini() For $i = 1 To $aIniSec[0] Assign($aIniSec[$i]&'_3j5d2f8k_', Eval($aIniSec[$i]&'_3j5d2f8k_')+1, 1) If Eval($aIniSec[$i]&'_3j5d2f8k_') = 2 Then MsgBox(0, 'Ошибка', 'Повторилось имя секции "'& $aIniSec[$i]&'"'&@CRLF&'Необходимо исправить Launcher.ini') Exit EndIf Next EndFunc |