Войти

Показать полную графическую версию : [Архив - Часть 3] AutoIt скрипты .:[общие вопросы]:.


Страниц : 1 2 3 4 5 6 7 8 9 10 11 [12] 13 14 15 16 17 18 19 20 21 22 23 24 25 26 27 28 29 30 31 32 33 34 35 36 37 38 39 40 41 42 43 44 45 46 47 48 49 50 51 52 53 54 55 56 57 58 59 60 61 62 63 64 65 66 67 68 69 70 71 72 73 74 75 76 77 78

Creat0R
13-03-2008, 13:46
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) на этом форуме, я уже не говорю об офф. форуме.

NikLok
13-03-2008, 15:13
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
Скрипт-то нерабочий. Ты вот, что сделай: напиши небольшой скриптик содержащий только проблемное место, так всем будет легче и охотней его смотреть, чем огромный и нерабочий код. ;)

NikLok
13-03-2008, 16:35
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

Нужно провести по чекбоксам и увидите.

Creat0R
13-03-2008, 16:56
NikLok,
У меня всё нормально, не видно проблемы... попробуй подвинуть чекбоксы правее, чтобы они небыли у самого края. Возможно у тебя какая то тема оформления установлена, которая вызывает такие глюки?

P.S
Вместо 1020 лучше использовать макрос @DesktopWidth ;)
И по поводу Opt("WinTitleMatchMode",4) - это можно не использовать (оставлено в целях обратной совместимости), при поиске окон есть другой метод (см. раздел Window Titles and Text (Advanced) в справке (http://www.autoitscript.com/autoit3/docs/intro/windowsadvanced.htm)).

NikLok
13-03-2008, 17:29
Creat0R, Возможно у тебя какая то тема оформления установлена, которая вызывает такие глюки? »
Это возможно - стоит тема VistaXP ! Правда смена темы на классическую ничего не дала.! Подвижка на 100 тоже не исправила дела!
Вместо 1020 лучше использовать макрос @DesktopWidth »
Это ширина десктопа, а я не хочу на весь экран распахивать то!
А как узнать ширину родительского GUI. То есть ширину для $hGUI ?

Creat0R
13-03-2008, 23:43
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. ;)

Angelus
14-03-2008, 11:07
А в скрипте есть возможность блокировки партов???.....а то я хелп читал чтото не нашол...

NikLok
14-03-2008, 13:17
Maza Faka, Тебе же уже подсказали, используй элементы TabItem. »
Что-то я туплю! Тки пальцем - чего - то я такого не припомню!

Maza Faka
14-03-2008, 13:20
Что-то я туплю! Тки пальцем - чего - то я такого не припомню! »
Очень просто, для этого существует GUICtrlCreateTab(), ну или в крайнем случае TreeView (правда процесс переключения элементов придётся обрабатывать вручную). Или в ещё более крайних случаях, ListView с чекбоксами. »
:)

Котяра
14-03-2008, 15:19
RunWait(@ComSpec & " /c " & 'taskkill /im explorer.exe /f', "", @SW_HIDE)
sleep(1000)
Run("explorer.exe")

Это скрипт для перезапуска Explorer'а.

Creat0R
14-03-2008, 18:04
Котяра,
скрипт для перезапуска 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 есть в начале слово... "АРБУЗ: " как это убрать что бы писался без этого слова

Котяра
14-03-2008, 19:56
Creat0R, ничего подобного. Сейчас вбил в Пуск -> Выполнить строку:

taskkill /im explorer.exe /f

и остался с голым рабочим столом. До перезапуска explorer'а.
Да, explorer автоматически перезапускается при сбое, но не при закрытии.

DENoszone
14-03-2008, 20:01
хи-хи...от я дурак=)))
и ещё думаю чего у меня explorer выключился +)
Мне надо закрыть IE

Creat0R
14-03-2008, 20:05
Котяра, 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 есть в начале фразы... "АРБУЗ: " как это убрать что бы писался без этого слова

NikLok
14-03-2008, 23:13
Как экономично узнать, кончается ли строка содержащаяся в переменной, каким то символом? Мне кажется, что регулярные выражения здесь будут расточительством?!
If StringRight($array[$m],1) = "\" Then $array[$m]=StringTrimRight($array[$m],1 )
Пока вот такое навернул!




© OSzone.net 2001-2012