|
Компьютерный форум OSzone.net » Программирование, базы данных и автоматизация действий » AutoIt » [архив - Часть 2] AutoIt скрипты |
|
[архив - Часть 2] AutoIt скрипты
|
(*.*) Сообщения: 36567 |
Внимание! Тема переведена в архивное состояние Текущая тема http://forum.oszone.net/thread-98914.html (настоятельно рекомендуется к прочтению/поиску) Руководство к действию по работе c AutoIt. ![]() Сайт программы Русская справка Коллекция AutoIt скриптов от Sanja Alone Коллекция AutoIt скриптов от MSFN (могут быть устаревшие). Справочник по командам rundll32 (команды запуска диалоговых окон и не только...) AutoIt скрипты - введение и FAQ (статья содержит вводную информацию по AutoIt, а также ответы на ЧаВо). Данная тема предназначена для общих вопросов по AutoIt. Вопросы по установке приложений при помощи AutoIt следует задавать в соответствии с правилами форума "Автоматическая установка приложений". Таким образом, если вы хотите узнать как установить Winamp 5.x при помощи AutoIt, то создайте тему [autoit] Winamp 5.х (если таковой еще нет на форуме). Проверить наличие тем можно при помощи поиска или фильтров. Цитата Vadikan:
|
||
------- Отправлено: 00:02, 05-02-2006 |
Пользователь Сообщения: 135
|
Профиль | Отправить PM | Цитировать Creat0R
Цитата:
А зачем Sleep() добавлена дважды? И ещё, постоянно происходит открытие/закрытие dll'ки, имхо лучше использовать один раз DllOpen(), а затем обращатся только к хэндлу (я поправил, и у меня CPU уменьшилось в полтора раза) - Хотя, на самом деле, всё это мелочи, ![]() ![]() |
|
Отправлено: 17:20, 10-08-2007 | #281 |
Для отключения данного рекламного блока вам необходимо зарегистрироваться или войти с учетной записью социальной сети. Если же вы забыли свой пароль на форуме, то воспользуйтесь данной ссылкой для восстановления пароля. |
Пользователь Сообщения: 135
|
Профиль | Отправить PM | Цитировать Реестровый способ установки обоев рабочего стола.
;~ Этот метод только для BMP-файлов, (!проверено только на Windows XP!) ;~ $BMP - Путь к BMP-файлу ;~ $STYLE - Расположение: ;~ 0 - По центру; 1 - Замостить; 2 - Растянуть Func SetWallpaper($BMP,$STYLE=0) Local $Tile=0 If $STYLE=1 Then $Tile=1 RegWrite("HKCU\Control Panel\Desktop","Wallpaper","REG_SZ",$BMP) RegWrite("HKCU\Control Panel\Desktop","WallpaperStyle","REG_SZ",$STYLE) RegWrite("HKCU\Control Panel\Desktop","TileWallpaper","REG_SZ",$Tile) RegWrite("HKCU\Software\Microsoft\Internet Explorer\Desktop\General","Wallpaper","REG_SZ",$BMP) RegWrite("HKCU\Software\Microsoft\Internet Explorer\Desktop\General","WallpaperStyle","REG_SZ",$STYLE) RegWrite("HKCU\Software\Microsoft\Internet Explorer\Desktop\General","TileWallpaper","REG_SZ",$Tile) DllCall("user32.dll","int","UpdatePerUserSystemParameters","int",0,"int",0) EndFunc К сожалению этот способ работает только с BMP-файлами, поэтому для конвертации из *.jpg во временный *.bmp я пользуюсь консольной утилитой P.P.S. Хотелось бы конечно решить проблему конвертации средствами AutoIt. Думаю это возможно, поскольку при ручной установке обоев через апплет(desk.cpl) система сама конвертирует их в bmp, но как она это делает - для меня пока загадка. |
Последний раз редактировалось Diamond, 12-08-2007 в 17:36. Причина: Обнаружил ошибку Отправлено: 11:56, 11-08-2007 | #282 |
Пользователь Сообщения: 135
|
Профиль | Отправить PM | Цитировать 1. Как создать MDI-окно($WS_EX_MDICHILD) внутри родительского и как переключаться между ними? Наподобие того, как это делает программа установки... (типа страничного перелистывания: NextPage - PreviewPage).
2. Зачем нужен стиль $WS_GROUP? Я читал справку но так ничего и не понял... |
Отправлено: 14:38, 11-08-2007 | #283 |
Must AutoIt Сообщения: 3054
|
Профиль | Сайт | Отправить PM | Цитировать Diamond,
Цитата:
![]() Цитата:
Хотя в принципе для MDI-окон (почти) можно попробовать типа такого: #include <GuiConstants.au3> $Gui = GuiCreate("MDI Demo", 400, 300) $Back = GUICtrlCreateButton("<<Back", 240, 270, 60) $Next = GUICtrlCreateButton("Next>>", 320, 270, 60) $ChildGui_1 = GuiCreate("Child window 1", 400, 260, 5, 5, $WS_POPUP) $LabelGui1 = GUICtrlCreateLabel("Test 1", 20, 60) $ChildGui_2 = GuiCreate("Child window 2", 400, 260, 5, 5, $WS_POPUP) $LabelGui2 = GUICtrlCreateLabel("Test 2", 20, 60) DllCall("user32.dll", "int", "SetParent", "hwnd", $ChildGui_1, "hwnd", $GUI) DllCall("user32.dll", "int", "SetParent", "hwnd", $ChildGui_2, "hwnd", $GUI) GUISetState(@SW_SHOW, $Gui) GUISetState(@SW_SHOW, $ChildGui_1) While 1 $Msg = GUIGetMsg(1) Select Case $Msg[1] = $Gui And $Msg[0] = -3 Exit Case $Msg[0] = $Next GUISetState(@SW_HIDE, $ChildGui_1) GUISetState(@SW_SHOW, $ChildGui_2) Case $Msg[0] = $Back GUISetState(@SW_HIDE, $ChildGui_2) GUISetState(@SW_SHOW, $ChildGui_1) EndSelect WEnd Цитата:
|
|||
------- Отправлено: 18:41, 11-08-2007 | #284 |
Пользователь Сообщения: 135
|
Профиль | Отправить PM | Цитировать Creat0R
Цитата:
Цитата:
Цитата:
|
|||
Отправлено: 21:36, 11-08-2007 | #285 |
Must AutoIt Сообщения: 3054
|
Профиль | Сайт | Отправить PM | Цитировать Diamond,
Цитата:
#include <GuiConstants.au3> Global $gui[100000] $x = 1 $Mother_GUI = GUICreate("Thinking box",-1,-1,-1,-1,BitOR($WS_OVERLAPPEDWINDOW, $WS_CLIPSIBLINGS)) $Button_1 = GUICtrlCreateButton("New Box", 5, 5, 70, 20) GUICtrlSetResizing(-1,$GUI_DOCKALL) $Button_2 = GUICtrlCreateButton("Delete Box",5,30,70,20) GUICtrlSetResizing(-1,$GUI_DOCKALL) $Input_1 = GUICtrlCreateInput("1",5,60,70,20) GUICtrlSetResizing(-1,$GUI_DOCKALL) GUISetState(@SW_SHOW, $Mother_GUI) $Main_GUI = GUICreate("",220,300,80,5,$WS_POPUPWINDOW) GUISetBkColor(0xCCCCCC) DllCall("user32.dll", "int", "SetParent", "hwnd", WinGetHandle($Main_GUI), "hwnd", WinGetHandle($Mother_GUI)) $LeftCounter = 0 $TopPlus = 20 Makebox() GUISetState(@SW_SHOW,$Main_GUI) While 1 setsize() $msg = GUIGetMsg() if $msg = $GUI_EVENT_CLOSE then Exit if $msg = $Button_1 then Makebox() if $msg = $Button_2 then GUIDelete($Gui[GUICtrlRead($Input_1)]) sleep(10) WEnd Func Makebox() if $x < 100000 then $Mother_GUI_Pos_Arr = WinGetPos($Mother_GUI) $LeftCounter += 1 If 250+$LeftCounter*5 > $Mother_GUI_Pos_Arr[2] Then $LeftCounter = 1 $TopPlus -= 20 If $TopPlus < 0 Then $TopPlus = 60 EndIf $Left = 40+$LeftCounter*5 $Top = $TopPlus+$LeftCounter*5 $gui[$x] = GUICreate("", 200, 90, $Left, $Top, $WS_POPUPWINDOW, $WS_EX_TOOLWINDOW) $label = GUICtrlCreateLabel(" Box number: " & $x,0,0,200,20,-1,$GUI_WS_EX_PARENTDRAG) GUICtrlSetFont(-1,12,14,0,"Comic Sans MS") settopbarcolor() GUICtrlCreateEdit("",0,20,200,70,$WS_VSCROLL) DllCall("user32.dll", "int", "SetParent", "hwnd", WinGetHandle($Gui[$x]), "hwnd", WinGetHandle($Main_GUI)) GUISetState(@SW_SHOW,$gui[$x]) $x += 1 EndIf EndFunc Func settopbarcolor($s_control=-1) $Random = Random(1,6,1) if $Random = 1 Then GUICtrlSetBkColor($s_control,0x0000FF) elseif $Random = 2 Then GUICtrlSetBkColor($s_control,0x00FF00) elseif $Random = 3 then GUICtrlSetBkColor($s_control,0xFF0000) elseif $Random = 4 then GUICtrlSetBkColor($s_control,0x00FFFF) elseif $Random = 5 then GUICtrlSetBkColor($s_control,0xFF00FF) elseif $Random = 6 Then GUICtrlSetBkColor($s_control,0xFFFF00) EndIf EndFunc Func setsize() $Motherpos = WinGetPos($Mother_GUI) $Mainpos = WinGetPos($Main_GUI) if $Mainpos[2] <> $Motherpos[2]-98 or $Mainpos[3] <> $Motherpos[3]-40 then WinMove($Main_GUI,"",85,5,$Motherpos[2]-98,$Motherpos[3]-45) EndFunc Func SpecialEvents() Select Case @GUI_CTRLID = $GUI_EVENT_CLOSE Exit EndSelect EndFunc И стиль $WS_EX_MDICHILD не совсем делает нужный “эффект”: Цитата Справка по AutoIT:
#include <GuiConstants.au3> $MainGui = GuiCreate("Main", 485, 280) $Child_1_Gui = GuiCreate("Child 1", 150, 100, 5, 5) $Child_2_Gui = GuiCreate("Child 2", 150, 100, 165, 5) $Child_3_Gui = GuiCreate("Child 3", 150, 100, 325, 5) $Child_4_Gui = GuiCreate("Child 4", 150, 100, 5, 135) $Child_5_Gui = GuiCreate("Child 5", 150, 100, 165, 135) $Child_6_Gui = GuiCreate("Child 6", 150, 100, 325, 135) GUISetState(@SW_SHOW, $MainGui) DllCall("user32.dll", "int", "SetParent", "hwnd", $Child_1_Gui, "hwnd", $MainGui) GUISetState(@SW_SHOW, $Child_1_Gui) DllCall("user32.dll", "int", "SetParent", "hwnd", $Child_2_Gui, "hwnd", $MainGui) GUISetState(@SW_SHOW, $Child_2_Gui) DllCall("user32.dll", "int", "SetParent", "hwnd", $Child_3_Gui, "hwnd", $MainGui) GUISetState(@SW_SHOW, $Child_3_Gui) DllCall("user32.dll", "int", "SetParent", "hwnd", $Child_4_Gui, "hwnd", $MainGui) GUISetState(@SW_SHOW, $Child_4_Gui) DllCall("user32.dll", "int", "SetParent", "hwnd", $Child_5_Gui, "hwnd", $MainGui) GUISetState(@SW_SHOW, $Child_5_Gui) DllCall("user32.dll", "int", "SetParent", "hwnd", $Child_6_Gui, "hwnd", $MainGui) GUISetState(@SW_SHOW, $Child_6_Gui) While 1 $Msg = GUIGetMsg() Switch $Msg Case -3 Exit Case Else EndSwitch WEnd Цитата:
![]() ![]() |
|||
------- Отправлено: 23:50, 11-08-2007 | #286 |
Must AutoIt Сообщения: 3054
|
Профиль | Сайт | Отправить PM | Цитировать |
------- Отправлено: 00:40, 12-08-2007 | #287 |
Must AutoIt Сообщения: 3054
|
Профиль | Сайт | Отправить PM | Цитировать Пытаюсь сделать функцию для массовой замены по тексту используя флаг “Whole word only” (только слово целиком) - Но всё что у меня получилось, так это замена нужного текста + тех символов которые считаются как разделителями между словами (Таб, пробел, перевод строки, возврат каретки, начало строки, и конец строки):
$Ret = _StringReplace_WholeWord(@TAB & "test" & @CRLF & "_test_" & @CRLF, "test", "000", 0) ConsoleWrite($Ret) ;@TAB'а уже нету :( Func _StringReplace_WholeWord($String, $WhatToFind, $Replace, $MatchCaseParam=0) Local $CaseSenceStr = '(?i)' If $MatchCaseParam = 1 Then $CaseSenceStr = '' Local $RetVal = StringRegExpReplace($String, $CaseSenceStr & GetRegExpPattern($WhatToFind), $Replace) Return SetExtended(@extended, $RetVal) EndFunc Func GetRegExpPattern($Var) Return '\t' & $Var & '\z|\A' & _ $Var & '\t|\t' & $Var & '\t|\t' & $Var & '\s|\s' & _ $Var & '\t|\A' & $Var & '\s|\s' & $Var & '\z|\s' & _ $Var & '\s|\n' & $Var & '\s|\n' & $Var & '\t|\n' & _ $Var & '\r|\n' & $Var & '\z|\A' & $Var & '\n|\A' & _ $Var & '\r|\t' & $Var & '\n|\t' & $Var & '\r|\r' & _ $Var & '\s|\r' & $Var & '\t|\r' & $Var & '\n|\r' & _ $Var & '\z|\n' & $Var & '\r|\A' & $Var & '\z' EndFunc ![]() |
------- Отправлено: 10:40, 12-08-2007 | #288 |
Googler Сообщения: 3665
|
Профиль | Отправить PM | Цитировать Creat0R
Цитата:
Цитата:
$s = @TAB & "test" & @CRLF & "_test_" & @CRLF ConsoleWrite('---'&@CRLF&$s&@CRLF&'---'&@CRLF) $r = _StringReplace_WholeWord($s, "test", "000", 0) ConsoleWrite('---'&@CRLF&$r&@CRLF&'---'&@CRLF) Func _StringReplace_WholeWord($String, $WhatToFind, $Replace, $MatchCaseParam=0) Local $CaseSenceStr = '(?i)' If $MatchCaseParam = 1 Then $CaseSenceStr = '' Local $RetVal = StringRegExpReplace($String, $CaseSenceStr & '\b'& $WhatToFind &'\b', $Replace) Return SetExtended(@extended, $RetVal) EndFunc |
||
Отправлено: 12:49, 12-08-2007 | #289 |
Пользователь Сообщения: 135
|
Профиль | Отправить PM | Цитировать Creat0R
Спасибо за примеры. Получил полное моральное удовлетворение. ![]() Цитата:
![]() ![]() Цитата:
![]() Цитата:
Нашёл!!! ![]() Вот эта функция: #include <.\AutoItLib.au3> Func _ChangeDesktopBackground($sFile, $iPosition=3) Local $sCLSID, $tBuffer, $hImage, $sTemp ; Convert JPG image to BMP image _GDI_Startup() $hImage = _GDI_LoadFromFile($sFile) $sCLSID = _GDI_GetEncoderCLSID("BMP") $sTemp = _Str_ChangeFileExt($sFile, ".bmp") _GDI_SaveToFile($hImage, $sTemp, $sCLSID) _GDI_DisposeImage($hImage) _GDI_Shutdown() ; Set wallpaper position Switch $iPosition Case 1 ; Tile RegWrite('HKCU\Control Panel\Desktop', 'TileWallpaper' , 'reg_sz', '1') RegWrite('HKCU\Control Panel\Desktop', 'WallpaperStyle', 'reg_sz', '0') RegWrite("HKCU\Software\Microsoft\Internet Explorer\Desktop\General","TileWallpaper", "REG_SZ",'1') RegWrite("HKCU\Software\Microsoft\Internet Explorer\Desktop\General","WallpaperStyle","REG_SZ",'0') Case 2 ; Center RegWrite('HKCU\Control Panel\Desktop', 'TileWallpaper' , 'reg_sz', '0') RegWrite('HKCU\Control Panel\Desktop', 'WallpaperStyle', 'reg_sz', '0') RegWrite("HKCU\Software\Microsoft\Internet Explorer\Desktop\General","TileWallpaper", "REG_SZ",'0') RegWrite("HKCU\Software\Microsoft\Internet Explorer\Desktop\General","WallpaperStyle","REG_SZ",'0') Case 3 ; Stretch RegWrite('HKCU\Control Panel\Desktop', 'TileWallpaper' , 'reg_sz', '0') RegWrite('HKCU\Control Panel\Desktop', 'WallpaperStyle', 'reg_sz', '2') RegWrite("HKCU\Software\Microsoft\Internet Explorer\Desktop\General","TileWallpaper", "REG_SZ",'0') RegWrite("HKCU\Software\Microsoft\Internet Explorer\Desktop\General","WallpaperStyle","REG_SZ",'2') EndSwitch ; Set wallpaper $tBuffer = DllStructCreate("char Text[" & StringLen($sTemp) + 1 & "]") DllStructSetData($tBuffer, "Text", $sTemp) _API_SystemParametersInfo($SPI_SETDESKWALLPAPER, 0, DllStructGetPtr($tBuffer), BitOR($SPIF_UPDATEINIFILE, $SPIF_SENDCHANGE)) EndFunc |
|||
Последний раз редактировалось Diamond, 12-08-2007 в 17:53. Причина: Добавил ссылку на библиотеку и поправил код Отправлено: 14:05, 12-08-2007 | #290 |
![]() |
Участник сейчас на форуме |
![]() |
Участник вне форума |
![]() |
Автор темы |
![]() |
Сообщение прикреплено |
| |||||
Название темы | Автор | Информация о форуме | Ответов | Последнее сообщение | |
Открывая 7z архив пишет не удаётся открыть как архив. Можно ли его восстановить? | DreDo | Хочу все знать | 4 | 01-12-2009 18:54 | |
[Архив - Часть 3] AutoIt скрипты .:[общие вопросы]:. | Vadikan | AutoIt | 1543 | 18-01-2009 10:46 | |
[Архив - Часть 1.3] AutoIt скрипты | biork | AutoIt | 503 | 09-06-2007 11:27 | |
[Архив - Часть 1.2] AutoIt скрипты | Dirk Diggler | AutoIt | 505 | 02-12-2006 11:00 | |
[Архив - Часть 1.1] AutoIt скрипты | EgOrus | AutoIt | 335 | 04-02-2006 16:58 |
|