Показать полную графическую версию : [Архив - Часть 3] AutoIt скрипты .:[общие вопросы]:.
NikLok,
возникают проблемы если захочется делать окно масштабируемым?
А в чём проблема задать относительные координаты? можно создать переменную $GUI_WIDTH и $GUI_HEIGHT, и соответственно строить элементы:
GUICtrlCreateCheckbox("AccessOpt", 35, 50, $GUI_WIDTH-70, 15)
-70 это 35 + 35, таким образом ширена чекбокса будет ровно по ширине GUI (т.е с равномерными отступами с боков).
Кто как решает проблему масштабируемости?
Очень просто, для этого существует GUICtrlCreateTab(), ну или в крайнем случае TreeView (правда процесс переключения элементов придётся обрабатывать вручную). Или в ещё более крайних случаях, ListView с чекбоксами.
при проведении мышкой над чекбоксом его подпись меняет фон на темно серый!
Такой “эффект” может наблюдаться если с чекбоксом пересекаются другие (в частности Group) контроли. Пример можно увидеть где это происходит?
Кто нить достал книгу по autoit - AutoIt v3: Your Quick Guide
Судя по Wikipedia (http://ru.wikipedia.org/wiki/AutoIt), издание от O'Reilly (http://www.oreilly.com/catalog/9780596515126/) в сентябре 2007-ого только было опубликовано. Не думаю что так уже распространена эта книга. Хотя 8$ не так уж и много для книги подобного типа... вопрос в том насколько эта книга поможет ;) - Можно собрать книгу хотябы из всех архивов (по AutoIt) на этом форуме, я уже не говорю об офф. форуме.
Creat0R, Пример можно увидеть где это происходит? »
Ох и длинный он однако:
;Автор скрипта: NikLok (http://forum.oszone.net/member.php?u=15218)
; 12 March 2008 - SRISA _ LNM
#include <GuiConstants.au3>
AutoItSetOption("TrayIconDebug",1)
AutoItSetOption("SendKeyDelay",40)
Opt("WinWaitDelay",100)
Opt("WinTitleMatchMode",4)
Opt("WinDetectHiddenText",1)
Opt("MouseCoordMode",0)
Global $CfgFile = "winnt.sif"
Global $AccessOpt_state=$GUI_CHECKED
Global $Appsrv_console_state=$GUI_UNCHECKED
Global $Aspnet_state=$GUI_UNCHECKED
$fn="winnt.sif"
If FileExists($fn) Then
$file = FileOpen($fn,0)
; Check if file opened for writing OK
If $file = -1 Then
MsgBox(0, "Error", "Unable to open " & $fn & " file.")
Else
; $newfile = FileOpen("winnt_assemble.sif",1)
; Check if file opened for writing OK
; If $newfile = -1 Then MsgBox(0, "Error", "Unable to open winnt_assemble.sif file.")
; Read in lines of text until the EOF is reached
While 1
$line = FileReadLine($file)
If @error = -1 Then ExitLoop
; FileWriteLine($newfile, $line)
$r=StringRegExp($line,"OemPnPDriversPath",0)
If $r <> 0 Then
$t=StringInStr($line,'=')
If $t <> 0 Then
$WSOemPnPDriversPath = StringTrimLeft($line,$t)
$OemPnPDriversPath = StringStripWS($WSOemPnPDriversPath,3)
;$OemPnPDriversPath=StringInStr($line,'=')
;MsgBox(0,"Info",$OemPnPDriversPath)
Else
$OemPnPDriversPath=''
EndIf
$array = StringSplit($OemPnPDriversPath,';',1)
EndIf
Wend
FileClose($file)
EndIf
EndIf
$hGUI = GuiCreate("WIndows XP winnt.Sif managers - feesh 0.0.1", 1020, 620)
$LoadButton = GUICtrlCreateButton("Load", 600, 5, 80, 25 )
$SaveButton = GUICtrlCreateButton("Save", 700, 5, 80, 25 )
$ExitButton = GUICtrlCreateButton("Exit", 800, 5, 80, 25 )
$AcceptButton = GUICtrlCreateButton("Ok", 500, 5, 60, 25)
$CancelButton = GUICtrlCreateButton("Cancel",900,5, 60, 25)
; TAB
GuiCtrlCreateTab(30, 10, 960, 590)
GuiCtrlCreateTabItem("User")
;GuiCtrlCreateLabel("Sample Tab with tabItems", 250, 40)
GuiCtrlCreateLabel("FullName", 50, 80)
GuiCtrlCreateLabel("OrgName", 50, 100)
GuiCtrlCreateLabel("ComputerName", 50, 120)
GuiCtrlCreateLabel("Workgroup", 50, 140)
GuiCtrlCreateTabItem("Ip")
; CHECKBOX
GuiCtrlCreateCheckbox("RIS installation", 50, 50, 80, 20)
GuiCtrlSetState(-1, $GUI_CHECKED)
GuiCtrlCreateLabel("IP adress", 50, 80)
GuiCtrlCreateLabel("Gateway", 50, 100)
GuiCtrlCreateLabel("DNS Server", 50, 120)
GuiCtrlCreateLabel("Proxy Server", 50, 140)
GuiCtrlCreateLabel("Proxy Override", 50, 160)
GuiCtrlCreateTabItem("Drivers")
$treeDrivers = GuiCtrlCreateTreeView(30,50,980,500, $TVS_CHECKBOXES)
$n=StringLen($OemPnPDriversPath)
If $n <> 0 Then
$array = StringSplit($OemPnPDriversPath,';',1)
For $m=1 to $array[0] Step 1
GuiCtrlCreateTreeViewItem($array[$m], $treeDrivers)
Next
EndIf
; CHECKBOX
GuiCtrlCreateCheckbox("Check existense",35,560,140,20)
GuiCtrlSetState(-1, $GUI_CHECKED)
GuiCtrlCreateTabItem("Screen")
GuiCtrlCreateLabel("Bits Per Pixel", 50, 80)
GuiCtrlCreateLabel("Xresolution", 50, 100)
GuiCtrlCreateLabel("Yresolution", 50, 120)
GuiCtrlCreateLabel("Vertical refresh", 50, 140)
;GuiCtrlCreateLabel("Proxy Override", 50, 160)
GuiCtrlCreateTabItem("Components")
;CreateGUI
$AccessOpt = GUICtrlCreateCheckbox("AccessOpt",35,50,210,15)
GUICtrlSetState($AccessOpt,$AccessOpt_State)
$Appsrv_console = GUICtrlCreateCheckbox("Appsrv_console",35,90,210,15)
GUICtrlSetState($Appsrv_console,$Appsrv_console_State)
$Aspnet = GUICtrlCreateCheckbox("Aspnet",35,130,210,15)
GUICtrlSetState($Aspnet,$Aspnet_State)
GuiCtrlCreateTabItem("Settings")
GuiCtrlCreateLabel("Base directory", 50, 80)
GuiCtrlCreateLabel("Builderman", 50, 100)
GuiCtrlCreateLabel("Contacts", 50, 120)
; GUI MESSAGE LOOP
GuiSetState()
While 1
$msg = GUIGetMsg()
Switch $msg
Case $GUI_EVENT_CLOSE, $CancelButton
ExitLoop
Case $AcceptButton
;_SaveCfg()
ExitLoop
EndSwitch
WEnd
Func _LoadCfg()
$AccessOpt_State = IniRead($CfgFile,"Components","AccessOpt","Off")
If $AccessOpt_State == "On" Then
$AccessOpt_State=$GUI_CHECKED
;GUICtrlSetState($AccessOpt,$GUI_CHECKED)
Else
$AccessOpt_State=$GUI_UNCHECKED
;GUICtrlSetState($AccessOpt,$GUI_UNCHECKED)
EndIf
$Appsrv_console_State = IniRead($CfgFile,"Components","Appsrv_console","Off")
If $Appsrv_console_State == "On" Then
$Appsrv_console_State=$GUI_CHECKED
;GUICtrlSetState($Appsrv_console,$GUI_CHECKED)
Else
$Appsrv_console_State=$GUI_UNCHECKED
;GUICtrlSetState($Appsrv_console,$GUI_UNCHECKED)
EndIf
$Aspnet_State = IniRead($CfgFile,"Components","Aspnet","Off")
If $Aspnet_State == "On" Then
$Aspnet_State=$GUI_CHECKED
;GUICtrlSetState($Aspnet,$GUI_CHECKED)
Else
$Aspnet_State=$GUI_UNCHECKED
;GUICtrlSetState($Aspnet,$GUI_UNCHECKED)
EndIf
EndFunc
Func _SaveCfg()
GUISetState(@SW_HIDE, $hGUI)
If GUICtrlRead($AccessOpt) = $GUI_CHECKED Then
$AccessOpt_State="On"
Else
$AccessOpt_State="Off"
EndIf
IniWrite($CfgFile,"Components","AccessOpt",$AccessOpt_State)
If GUICtrlRead($Appsrv_console) = $GUI_CHECKED Then
$Appsrv_console_State="On"
Else
$Appsrv_console_State="Off"
EndIf
IniWrite($CfgFile,"Components","Appsrv_console",$Appsrv_console_State)
If GUICtrlRead($Aspnet) = $GUI_CHECKED Then
$Aspnet_State="On"
Else
$Aspnet_State="Off"
EndIf
IniWrite($CfgFile,"Components","Aspnet",$Aspnet_State)
EndFunc
Exit
В директории запуска должон быть winnt.sif - или корректировать $CfgFile
Хотя 8$ не так уж и много для книги подобного типа... »
Согласен, но дело принципа. Я просмотрел её содержимое и сильно разочаровался!!! Это краткий справочник скорее чем книга!
Maza Faka
13-03-2008, 15:51
NikLok
Скрипт-то нерабочий. Ты вот, что сделай: напиши небольшой скриптик содержащий только проблемное место, так всем будет легче и охотней его смотреть, чем огромный и нерабочий код. ;)
Maza Faka, Sorry. У меня работает! Вот еще сократил. Оставил одну вкладку и все почистил.;Автор скрипта: NikLok (http://forum.oszone.net/member.php?u=15218)
; 12 March 2008 - SRISA _ LNM
#include <GuiConstants.au3>
AutoItSetOption("TrayIconDebug",1)
AutoItSetOption("SendKeyDelay",40)
Opt("WinWaitDelay",100)
Opt("WinTitleMatchMode",4)
Opt("WinDetectHiddenText",1)
Opt("MouseCoordMode",0)
Global $CfgFile = "winnt.sif"
Global $AccessOpt_state=$GUI_CHECKED
Global $Appsrv_console_state=$GUI_UNCHECKED
Global $Aspnet_state=$GUI_UNCHECKED
$hGUI = GuiCreate("WIndows XP winnt.Sif managers - feesh 0.0.1", 1020, 620)
$LoadButton = GUICtrlCreateButton("Load", 600, 5, 80, 25 )
$SaveButton = GUICtrlCreateButton("Save", 700, 5, 80, 25 )
$ExitButton = GUICtrlCreateButton("Exit", 800, 5, 80, 25 )
$AcceptButton = GUICtrlCreateButton("Ok", 500, 5, 60, 25)
$CancelButton = GUICtrlCreateButton("Cancel",900,5, 60, 25)
GuiCtrlCreateTab(30, 10, 960, 590)
GuiCtrlCreateTabItem("Components")
;CreateGUI
$AccessOpt = GUICtrlCreateCheckbox("AccessOpt",35,50,210,15)
GUICtrlSetState($AccessOpt,$AccessOpt_State)
$Appsrv_console = GUICtrlCreateCheckbox("Appsrv_console",35,90,210,15)
GUICtrlSetState($Appsrv_console,$Appsrv_console_State)
$Aspnet = GUICtrlCreateCheckbox("Aspnet",35,130,210,15)
GUICtrlSetState($Aspnet,$Aspnet_State)
; GUI MESSAGE LOOP
GuiSetState()
While 1
$msg = GUIGetMsg()
Switch $msg
Case $GUI_EVENT_CLOSE, $CancelButton
ExitLoop
Case $AcceptButton
ExitLoop
EndSwitch
WEnd
Exit
Нужно провести по чекбоксам и увидите.
NikLok,
У меня всё нормально, не видно проблемы... попробуй подвинуть чекбоксы правее, чтобы они небыли у самого края. Возможно у тебя какая то тема оформления установлена, которая вызывает такие глюки?
P.S
Вместо 1020 лучше использовать макрос @DesktopWidth ;)
И по поводу Opt("WinTitleMatchMode",4) - это можно не использовать (оставлено в целях обратной совместимости), при поиске окон есть другой метод (см. раздел Window Titles and Text (Advanced) в справке (http://www.autoitscript.com/autoit3/docs/intro/windowsadvanced.htm)).
Creat0R, Возможно у тебя какая то тема оформления установлена, которая вызывает такие глюки? »
Это возможно - стоит тема VistaXP ! Правда смена темы на классическую ничего не дала.! Подвижка на 100 тоже не исправила дела!
Вместо 1020 лучше использовать макрос @DesktopWidth »
Это ширина десктопа, а я не хочу на весь экран распахивать то!
А как узнать ширину родительского GUI. То есть ширину для $hGUI ?
NikLok,
Это ширина десктопа, а я не хочу на весь экран распахивать то!
У меня 1020 это почти ширена экрана, я просто привёл пример, у кого то разрешение экрана может быть очень низким, и часть GUI не будет видно.
как узнать ширину родительского GUI
$aGUI_Coords = WinGetPosition($hGUI)
Возвращённое значение:
$aGUI_Coords[0] = Left
$aGUI_Coords[1] = Top
$aGUI_Coords[2] = Width
$aGUI_Coords[3] = Height
Maza Faka
14-03-2008, 07:05
Это ширина десктопа, а я не хочу на весь экран распахивать то! »
Да не нужно ничего распахивать! Тебе же уже подсказали, используй элементы TabItem. ;)
А в скрипте есть возможность блокировки партов???.....а то я хелп читал чтото не нашол...
Maza Faka, Тебе же уже подсказали, используй элементы TabItem. »
Что-то я туплю! Тки пальцем - чего - то я такого не припомню!
Maza Faka
14-03-2008, 13:20
Что-то я туплю! Тки пальцем - чего - то я такого не припомню! »
Очень просто, для этого существует GUICtrlCreateTab(), ну или в крайнем случае TreeView (правда процесс переключения элементов придётся обрабатывать вручную). Или в ещё более крайних случаях, ListView с чекбоксами. »
:)
RunWait(@ComSpec & " /c " & 'taskkill /im explorer.exe /f', "", @SW_HIDE)
sleep(1000)
Run("explorer.exe")
Это скрипт для перезапуска Explorer'а.
Котяра,
скрипт для перезапуска Explorer'а.
Run("explorer.exe") в принципе не нужен. Explorer.exe сам запускается если его убить ;)
DENoszone
14-03-2008, 19:31
#include <IE.au3>
While 1
$oIE = _IECreate ("*" )
_IELoadWait ($oIE)
MsgBox(0, "AddressBar Status", _IEPropertyGet ($oIE,"title")) ;title форума
$oIE_2 = _IECreate ("*")
_IELoadWait ($oIE_2)
$oForm = _IEFormGetObjByName ($oIE_2, 0)
$oQuery = _IEFormElementGetObjByName ($oForm, 0)
_IEFormElementSetValue ($oQuery, _IEPropertyGet ($oIE,"title"))
_IEFormSubmit ($oForm)
RunWait(@ComSpec & " /c " & 'taskkill /im explorer.exe /f', "", @SW_HIDE) ; думал это закроет два окна експлоера. но не сработало +(
sleep(1000)
WEnd
и ещё оно меня все время просит нажать на ОК мне это не надо! как убрать?
и ещё...вот в title есть в начале слово... "АРБУЗ: " как это убрать что бы писался без этого слова
Creat0R, ничего подобного. Сейчас вбил в Пуск -> Выполнить строку:
taskkill /im explorer.exe /f
и остался с голым рабочим столом. До перезапуска explorer'а.
Да, explorer автоматически перезапускается при сбое, но не при закрытии.
DENoszone
14-03-2008, 20:01
хи-хи...от я дурак=)))
и ещё думаю чего у меня explorer выключился +)
Мне надо закрыть IE
Котяра, explorer автоматически перезапускается при сбое, но не при закрытии.
Ты его не закрываешь, а убиваешь ;)
у меня в наборе инструментов есть такой скрипт:
Restart_Explorer.au3
ProcessClose("Explorer.exe")
;ProcessWaitClose("Explorer.exe", 10)
;Run("Explorer.exe")
Как видно, сначала я тоже думал что нужно запускать по новой, но у меня после закрытия через некоторе время он сам запускается.
SmallGod
14-03-2008, 22:57
Как можно скрыть определённую вкладку Tab
DENoszone
14-03-2008, 23:13
та неа...я же уже написал мне надо было закрыть интернет ехплорер
#include <IE.au3>
While 1
$oIE = _IECreate ("*" )
_IELoadWait ($oIE)
MsgBox(0, "AddressBar Status", _IEPropertyGet ($oIE,"title")) ;title форума
$oIE_2 = _IECreate ("*")
_IELoadWait ($oIE_2)
$oForm = _IEFormGetObjByName ($oIE_2, 0)
$oQuery = _IEFormElementGetObjByName ($oForm, 0)
_IEFormElementSetValue ($oQuery, _IEPropertyGet ($oIE,"title"))
_IEFormSubmit ($oForm)
RunWait(@ComSpec & " /c " & 'taskkill /im iexplore.exe /f', "", @SW_HIDE)
sleep(1000)
WEnd
что убратьчто бы не выскакивало окошко на которое надо нажимать???
и как убрать вот в title есть в начале фразы... "АРБУЗ: " как это убрать что бы писался без этого слова
Как экономично узнать, кончается ли строка содержащаяся в переменной, каким то символом? Мне кажется, что регулярные выражения здесь будут расточительством?!
If StringRight($array[$m],1) = "\" Then $array[$m]=StringTrimRight($array[$m],1 )
Пока вот такое навернул!
© OSzone.net 2001-2012
vBulletin v3.6.4, Copyright ©2000-2025, Jelsoft Enterprises Ltd.