|
Компьютерный форум OSzone.net » Программирование, базы данных и автоматизация действий » AutoIt » [архив - Часть 2] AutoIt скрипты |
|
[архив - Часть 2] AutoIt скрипты
|
(*.*) Сообщения: 36548 |
Профиль | Сайт | Отправить PM | Цитировать
Внимание! Тема переведена в архивное состояние Текущая тема 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 |
Googler Сообщения: 3665
|
Профиль | Отправить PM | Цитировать Creat0R
Цитата:
Цитата:
|
||
Отправлено: 04:46, 15-10-2007 | #601 |
Для отключения данного рекламного блока вам необходимо зарегистрироваться или войти с учетной записью социальной сети. Если же вы забыли свой пароль на форуме, то воспользуйтесь данной ссылкой для восстановления пароля. |
Ветеран Сообщения: 604
|
Профиль | Отправить PM | Цитировать |
------- Отправлено: 11:16, 15-10-2007 | #602 |
Must AutoIt Сообщения: 3054
|
Профиль | Сайт | Отправить PM | Цитировать amel27,
Цитата:
Цитата:
И вот на основе этого примера (полагаю), мне подкинули идею (а точнее готовый пример с решением), ведь на момент растягивания/смещения окна, можно отключать режим “Отображать содержимое окна при перетаскивании”, а потом восстанавливать старое состояние (как я только сам до этого не додумался)... #include <GUIConstants.au3> Global Const $WM_EXITSIZEMOVE = 0x232 Global Const $WM_SYSCOMMAND = 0x0112 Global Const $SC_MOVE = 0xF010 Global Const $SC_SIZE = 0xF000 Global $Old_Param $Gui = GUICreate("GUI", 200, 400, -1, -1, $WS_SIZEBOX) GUIRegisterMsg($WM_EXITSIZEMOVE, "WM_EXITSIZEMOVE") GUIRegisterMsg($WM_SYSCOMMAND, "WM_SYSCOMMAND") $Button = GUICtrlCreateButton("Button", 50, 100, 100, 21) GUISetState(@SW_SHOW) While 1 Switch GUIGetMsg() Case -3 Exit EndSwitch WEnd Func WM_SYSCOMMAND($hWnd, $Msg, $wParam, $lParam) Switch BitAND($wParam, 0xFFF0) Case $SC_MOVE, $SC_SIZE ;Local Const $SPI_SETDRAGFULLWINDOWS = 37 ;Local Const $SPI_GETDRAGFULLWINDOWS = 38 ;Local Const $SPIF_SENDWININICHANGE = 2 Local $tBool = DllStructCreate("int") DllCall("user32.dll", "int", "SystemParametersInfo", "int", 38, "int", 0, "ptr", DllStructGetPtr($tBool), "int", 0) $Old_Param = DllStructGetData($tBool, 1) DllCall("user32.dll", "int", "SystemParametersInfo", "int", 37, "int", 0, "ptr", 0, "int", 2) EndSwitch EndFunc Func WM_EXITSIZEMOVE() DllCall("user32.dll", "int", "SystemParametersInfo", "int", 37, "int", $Old_Param, "ptr", 0, "int", 2) EndFunc Цитата:
Я так понял тут возвращается идентификатор контроля? мне просто нужно сравнивать с элементами моего ГУИ, а там как известно обычная нумерация элементов, я конечно использовал GuiCtrlGetHandle, а на возвращённое значение от функции _ControlGetHovered() использовал Hwnd, но вот хотелось бы узнать, возможно ли конвертировать этот самый идентификатор в то же число, как и возвращает элемент GUI? (чтобы можно было просто использовать стандартные функци для чтения данных от GUI, типа GuiCtrlRead()). |
|||
------- Отправлено: 21:26, 15-10-2007 | #603 |
Новый участник Сообщения: 15
|
Профиль | Отправить PM | Цитировать Всем привет. У меня такая задача. Нужно в одной папке просмотреть все вложенные подпапки (количество подкаталогов, количество уровней вложенности и иена подкаталогов заранее неизвестны). Как с помощью AutoIT получить список подкаталогов данного каталога?
|
Отправлено: 23:15, 15-10-2007 | #604 |
Must AutoIt Сообщения: 3054
|
Профиль | Сайт | Отправить PM | Цитировать -AAA-,
Цитата:
|
|
------- Отправлено: 00:01, 16-10-2007 | #605 |
Googler Сообщения: 3665
|
Профиль | Отправить PM | Цитировать Creat0R
Цитата:
|
|
Отправлено: 03:39, 16-10-2007 | #606 |
Ветеран Сообщения: 604
|
Профиль | Отправить PM | Цитировать Интересная штука WinAPI
Поначалу абсолютно не понимал, что к чему, но благодаря amel27, вроде начал понимать. Примеры того, что смог сделать сам: Создание файла (текстового): Global Const $lCreate_RW = 0x00000000 Func FileCreate() DllCall("kernel32.dll", "int", "_lcreat", "str", @ScriptDir & "\test.txt", "int", $lCreate_RW) If Not @error Then MsgBox(64, "Success", "File test.txt created in " & @ScriptDir) EndFunc #include <GUIConstants.au3> $gui = GuiCreate("Test", 200, 100) $button = GUICtrlCreateButton("Child", 10, 70, 50, 25) $child = GUICreate("Dummy", 300, 200) $ChildButton = GUICtrlCreateButton("Parent", 10, 70, 50, 25) GUISetState(@SW_HIDE, $child) GUISetState(@SW_SHOW, $gui) While 1 $msg = GUIGetMsg(1) Select Case $msg[0] = $GUI_EVENT_CLOSE And $msg[1] = $gui ExitLoop Case $msg[0] = $GUI_EVENT_CLOSE And $msg[1] = $child GUISetState(@SW_HIDE, $child) Case $msg[0] = $button If Not GetWinState() Then GUISetState(@SW_SHOW, $child) Else SetActive($child) EndIf Case $msg[0] = $ChildButton SetActive($gui) EndSelect WEnd Func SetActive($hwnd) DllCall("user32.dll", "hwnd", "SetActiveWindow", "hwnd", $hwnd) EndFunc Func GetWinState() Return BitAND(WinGetState($child), 2) EndFunc |
Отправлено: 12:15, 16-10-2007 | #607 |
Ветеран Сообщения: 604
|
Профиль | Отправить PM | Цитировать -AAA-
Цитата:
#include <File.au3> #include <Array.au3> Global $DirArray[1] Dim $sPath = "c:\windows" $GetDirs = DirList($sPath) _ArrayDisplay($DirArray) Func DirList($path) Local $sRet = "" Local $sDir = _FileListToArray($path, "*", 2) If IsArray($sDir) And $sDir[0] > 0 Then For $i = 1 To UBound($sDir) - 1 _ArrayAdd($DirArray, $sDir[$i]) $sRet = DirList($sPath &"\"& $sDir[$i]) Next EndIf EndFunc |
|
Отправлено: 16:05, 16-10-2007 | #608 |
Googler Сообщения: 3665
|
Профиль | Отправить PM | Цитировать Цитата Maza Faka:
- у тебя очепятка ($path vs $sPath); - имя каталога заносится в массив без пути; - проверка локального массива через IsArray() необязательна (особенность For); - проверка глобального массива IsArray() желательна (особенность _ArrayAdd()) - зачем $sRet ? - наконец, повторюсь: чтобы избежать путаницы при повторном использовании функций с глобальными переменными их нужно объявлять в параметрах через ByRef. #include <File.au3> #include <Array.au3> Global $DirArray[1] _ArrayDirListAdd($DirArray, "c:\windows") _ArrayDisplay($DirArray,'') Func _ArrayDirListAdd (ByRef $aGDir, $sPath = @ScriptDir) Local $aLDir = _FileListToArray($sPath, "*", 2) For $i = 1 To UBound($aLDir) - 1 If IsArray($aGDir) Then _ArrayAdd($aGDir, $sPath &"\"& $aLDir[$i]) _ArrayDirListAdd ($aGDir, $sPath &"\"& $aLDir[$i]) Next EndFunc |
|
Отправлено: 11:12, 17-10-2007 | #609 |
Ветеран Сообщения: 604
|
Профиль | Отправить PM | Цитировать amel27
Цитата:
Цитата:
Цитата:
Цитата:
Цитата:
MsgBox(64, "Done", _FindFile("icqlite.exe", @ProgramFilesDir)) Func _FindFile($sFile, $sPath) Local $sRetPath='', $sFullPath Local $hSearch = FileFindFirstFile($sPath & "\*.*"), $sName = FileFindNextFile($hSearch) While @error=0 And $sRetPath = '' $sFullPath = $sPath &'\'& $sName If $sName = $sFile Then $sRetPath = $sPath If StringInStr(FileGetAttrib($sFullPath), "D") Then $sRetPath = _FindFile($sFile, $sFullPath) $sName = FileFindNextFile($hSearch) WEnd FileClose($hSearch) Return $sRetPath EndFunc Цитата:
Цитата:
|
|||||||
Отправлено: 14:06, 17-10-2007 | #610 |
Участник сейчас на форуме | Участник вне форума | Автор темы | Сообщение прикреплено |
| |||||
Название темы | Автор | Информация о форуме | Ответов | Последнее сообщение | |
Открывая 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 |
|