|
Компьютерный форум OSzone.net » Программирование, базы данных и автоматизация действий » AutoIt » [Архив - Часть 3] AutoIt скрипты .:[общие вопросы]:. |
|
[Архив - Часть 3] AutoIt скрипты .:[общие вопросы]:.
|
(*.*) Сообщения: 36561 |
Внимание! В связи с созданием отдельного форума по AutoIt, эта тема переводится в архивное состояние. Если у вас есть вопрос, создайте новую тему или поднимите существующую, если в ней обсуждается аналогичная проблема. Пожалуйста, не создавайте тем с названием "Помогите!" или "Нужна помощь по AutoIt". Это и так понятно ![]() ![]() Сайт программы Русская справка Коллекция AutoIt скриптов от Sanja Alone Коллекция AutoIt скриптов от MSFN (могут быть устаревшие). Справочник по командам rundll32 (команды запуска диалоговых окон и не только...) AutoIt скрипты - введение и FAQ (статья содержит вводную информацию по AutoIt, а также ответы на ЧаВо). Архивы старых тем по AutoIt или они же в 7z архиве (версии для печати) - 846 кб (настоятельно рекомендуется к прочтению/поиску) (он же прикреплен в шапке) Данная тема предназначена для общих вопросов по AutoIt. Вопросы по установке приложений при помощи AutoIt следует задавать в соответствии с правилами форума "Автоматическая установка приложений". Таким образом, если вы хотите узнать как установить Winamp 5.x при помощи AutoIt, то создайте тему [autoit] Winamp 5.х (если таковой еще нет на форуме). Проверить наличие тем можно при помощи поиска или фильтров. Цитата Vadikan:
|
||
------- Отправлено: 00:02, 05-02-2006 |
Googler Сообщения: 3665
|
Профиль | Отправить PM | Цитировать Creat0R
Цитата:
$sSource = FileRead("test.txt") $avArray = StringRegExp($sSource, '(?i)(?s)<div class="vldesc">\s*(?:<span id="BeginvidDesc[^">]*">)?\s*(.*?)\s*(?:</span>|</div>)', 3) For $i=0 To UBound($avArray)-1 ConsoleWrite($avArray[$i]&@CRLF) Next Цитата:
|
||
Отправлено: 09:42, 05-07-2008 | #701 |
Для отключения данного рекламного блока вам необходимо зарегистрироваться или войти с учетной записью социальной сети. Если же вы забыли свой пароль на форуме, то воспользуйтесь данной ссылкой для восстановления пароля. |
Must AutoIt Сообщения: 3054
|
Профиль | Сайт | Отправить PM | Цитировать amel27,
Цитата:
![]() Цитата:
![]() Ответ на последеий мой вопрос предоставляет объяснение и на первый вопрос ![]() Цитата:
|
|||
------- Отправлено: 15:40, 05-07-2008 | #702 |
Пользователь Сообщения: 67
|
Профиль | Отправить PM | Цитировать В windowinfo есть инструмент finder tool: наводим его на объект и получаем информацию о нем. Хочу написать что-то подобное для получения только некоторой необходимой информации и сбрасывать ее в файл, осталось только разобраться как получать инфо об объекте под курсором...
|
Отправлено: 16:19, 06-07-2008 | #703 |
Старожил Сообщения: 307
|
Профиль | Отправить PM | Цитировать Привет всем. У меня вопрос по autoit. Вопрос вроде легкий, а решить уже 2 дня не могу. И в связи что легкий нигде нет ответа, а по совету из справки у меня получается каламбур. Подскажите знающие. Мне нужен скрипт, который бы проверял дату на компе с моей введенной (например 08/08/2008) и если совпадает, то запуск "моей программы", а если нет то выход. Спасибо. :help
|
------- Отправлено: 19:31, 06-07-2008 | #704 |
Must AutoIt Сообщения: 3054
|
Профиль | Сайт | Отправить PM | Цитировать 266903582,
Цитата 266903582:
![]() #include <GuiConstants.au3> #include <EditConstants.au3> #include <WindowsConstants.au3> #include <WinAPI.au3> #include <Misc.au3> ; Opt("GuiOnEventMode", 1) HotKeySet("{ESC}", "QuitApp") Global $hSquare_GUI = -1 Global $hCtrl = -1 Global $Last_hControl = -1 Global $Frame_Color = 0xFF0000 Global $Frame_Width = 3 $Main_GUI = GUICreate("Highlight Controls Demo") WinSetOnTop($Main_GUI, "", 1) GUISetOnEvent($GUI_EVENT_CLOSE, "QuitApp") GUIRegisterMsg($WM_WINDOWPOSCHANGED, "WM_WINDOWPOSCHANGED") GUICtrlCreateButton("Button", 20, 20) GUICtrlCreateCheckbox("CheckBox", 20, 60) GUICtrlCreateLabel("Info: ", 20, 150) GUICtrlSetFont(-1, 9, 800) $Info_Edit = GUICtrlCreateEdit("", 80, 150, 300, 220, $GUI_SS_DEFAULT_EDIT + $ES_READONLY) GUISetState() While 1 Sleep(10) ;So the CPU will not increes "badly" while we play with the mouse cursor :) _IdleWait() If _IsPressed(1) Then GUIDeleteSquare($hSquare_GUI) While _IsPressed(1) Sleep(10) Check_Highlight_Controls_Proc() WEnd $Last_hControl = -1 EndIf Check_Highlight_Controls_Proc() WEnd Func Check_Highlight_Controls_Proc() Local $hCtrl = _ControlGetHovered() If $hCtrl <> 0 And $Last_hControl <> $hCtrl And $hSquare_GUI <> $hCtrl Then $Last_hControl = $hCtrl Local $aCtrlPos = WinGetPos($hCtrl) GUICtrlSetData($Info_Edit, _ "X = " & $aCtrlPos[0] & @CRLF & _ "Y = " & $aCtrlPos[1] & @CRLF & _ "W = " & $aCtrlPos[2] & @CRLF & _ "H = " & $aCtrlPos[3] & @CRLF & @CRLF & _ "Control/Win Class Name: " & _WinGetClassNameNN($hCtrl) & @CRLF & _ "Control/Win Handle: " & $hCtrl & @CRLF & _ "Control ID: " & _HwndToID($hCtrl) & @CRLF & @CRLF & _ "Control Data:" & @CRLF & ControlGetText($hCtrl, "", "")) GUIDeleteSquare($hSquare_GUI) $hSquare_GUI = GUICreateSquare($aCtrlPos[0], $aCtrlPos[1], $aCtrlPos[2], $aCtrlPos[3]) EndIf EndFunc Func GUICreateSquare($i_X = -1, $i_Y = -1, $i_W = -1, $i_H = -1) Local $hSquare_GUI = GUICreate("", $i_W, $i_H, $i_X, $i_Y, $WS_POPUP, $WS_EX_TOOLWINDOW + $WS_EX_TOPMOST) GUISetBkColor($Frame_Color) _GUISetHole($hSquare_GUI, $Frame_Width, $Frame_Width, $i_W - ($Frame_Width * 2), $i_H - ($Frame_Width * 2)) GUISetState(@SW_SHOWNOACTIVATE, $hSquare_GUI) Return $hSquare_GUI EndFunc Func GUIDeleteSquare($hSquare_GUI) If IsHWnd($hSquare_GUI) And $hSquare_GUI <> $Main_GUI Then GUIDelete($hSquare_GUI) EndFunc Func _ControlGetHovered() Local $aRet = DllCall("user32.dll", "int", "WindowFromPoint", "long", MouseGetPos(0), "long", MouseGetPos(1)) If @error Or Not IsArray($aRet) Then Return SetError(1, 0, 0) Return HWnd($aRet[0]) EndFunc Func _HwndToID($hWnd) If Not IsHWnd($hWnd) Then Return SetError(1, 0, "") Local $aRet = DllCall("user32.dll", "int", "GetDlgCtrlID", "hwnd", $hWnd) If Not IsArray($aRet) Then Return SetError(2, 0, "") Return $aRet[0] EndFunc Func _WinGetClassName($hWnd) $aClassName = DllCall("user32.dll", "int", "GetClassName", "hWnd", $hWnd, "str", "", "int", 64) If Not @error And $aClassName[0] <> 0 Then Return $aClassName[2] Return "" EndFunc Func _WinGetClassNameNN($hCtrlWnd) $hParent = _WinAPI_GetAncestor($hCtrlWnd, $GA_ROOTOWNER) $hCtrlWnd = ControlGetHandle($hParent, "", $hCtrlWnd) $sClassList = StringSplit(StringStripCR(_WinGetNumeratedClassList($hParent)), @LF) For $i = $sClassList[0] To 1 Step -1 If $sClassList[$i] = "" Then ContinueLoop If ControlGetHandle($hParent, "", $sClassList[$i]) = $hCtrlWnd Then Return $sClassList[$i] Next Return _WinGetClassName($hCtrlWnd) EndFunc Func _WinGetNumeratedClassList($sTitle, $sText = "") Local $sClassList = WinGetClassList($sTitle, $sText) Local $aClassList = StringSplit($sClassList, @CRLF) Local $sRetClassList = "", $sHold_List = "|" Local $aiInHold, $iInHold For $i = 1 To UBound($aClassList) - 1 If $aClassList[$i] = "" Then ContinueLoop If StringRegExp($sHold_List, "\|" & $aClassList[$i] & "~(\d+)\|") Then $aiInHold = StringRegExp($sHold_List, ".*\|" & $aClassList[$i] & "~(\d+)\|.*", 1) $iInHold = Number($aiInHold[UBound($aiInHold) - 1]) If $iInHold = 0 Then $iInHold += 1 $aClassList[$i] &= "~" & $iInHold + 1 $sHold_List &= $aClassList[$i] & "|" $sRetClassList &= $aClassList[$i] & @CRLF Else $aClassList[$i] &= "~1" $sHold_List &= $aClassList[$i] & "|" $sRetClassList &= $aClassList[$i] & @CRLF EndIf Next Return StringReplace(StringStripWS($sRetClassList, 3), "~", "") EndFunc Func _GUISetHole($hWin, $i_X, $i_Y, $i_SizeW, $i_SizeH) Local $aWinPos, $Outer_Rgn, $Inner_Rgn, $Wh, $Combined_Rgn Local Const $RGN_DIFF = 4 $aWinPos = WinGetPos($hWin) $Outer_Rgn = DllCall("gdi32.dll", "long", "CreateRectRgn", "long", 0, "long", 0, "long", $aWinPos[2], "long", $aWinPos[3]) $Inner_Rgn = DllCall("gdi32.dll", "long", "CreateRectRgn", "long", $i_Y, "long", $i_Y, "long", $i_Y + $i_SizeW, _ "long", $i_Y + $i_SizeH) $Combined_Rgn = DllCall("gdi32.dll", "long", "CreateRectRgn", "long", 0, "long", 0, "long", 0, "long", 0) DllCall("gdi32.dll", "long", "CombineRgn", "long", $Combined_Rgn[0], "long", $Outer_Rgn[0], "long", $Inner_Rgn[0], _ "int", $RGN_DIFF) DllCall("user32.dll", "long", "SetWindowRgn", "hwnd", $hWin, "long", $Combined_Rgn[0], "int", 1) EndFunc Func _IdleWait($IdleSec = 0) Local $iSave, $stLastInput = DllStructCreate("uint;dword") DllStructSetData($stLastInput, 1, DllStructGetSize($stLastInput)) DllCall("user32.dll", "int", "GetLastInputInfo", "ptr", DllStructGetPtr($stLastInput)) Do $iSave = DllStructGetData($stLastInput, 2) Sleep(20) DllCall("user32.dll", "int", "GetLastInputInfo", "ptr", DllStructGetPtr($stLastInput)) Until (DllStructGetData($stLastInput, 2) - $iSave) > $IdleSec Return DllStructGetData($stLastInput, 2) - $iSave EndFunc Func WM_WINDOWPOSCHANGED($hWndGUI, $MsgID, $WParam, $LParam) If $hWndGUI <> $Main_GUI Then Return $GUI_RUNDEFMSG GUIDeleteSquare($hSquare_GUI) Check_Highlight_Controls_Proc() $Last_hControl = -1 EndFunc Func QuitApp() Exit EndFunc Цитата beve:
$sSystemDate = @MDAY & "/" & @MON & "/" & @YEAR If $sSystemDate = "08/08/2008" Then Run("Моя программа.exe") Else Exit EndIf ![]() |
||
------- Последний раз редактировалось Creat0R, 04-09-2009 в 01:01. Причина: Адаптировал пример для более новой версии AutoIt Отправлено: 19:37, 06-07-2008 | #705 |
Старожил Сообщения: 307
|
Профиль | Отправить PM | Цитировать Спасибо, Creat0R за ответ. Мой вопрос решен.
|
------- Отправлено: 20:00, 06-07-2008 | #706 |
Пользователь Сообщения: 67
|
Профиль | Отправить PM | Цитировать Creat0R, спасибо.
Я тоже без дела не сидел ![]() #include <Misc.au3> FileDelete("file.txt") $dll = DllOpen("user32.dll") $file = FileOpen("file.txt", 1) $ffi="" While 1 if _IsPressed("11", $dll) Then ;ctrl ctrltext & classn wr(ControlGetText("","",ControlGetFocus(""))&@lf&ControlGetFocus("")) EndIf if _IsPressed("12", $dll) Then ;alt title & alltext wr(WinGetTitle("")&@lf&"-------"&@lf&WinGetText("")) EndIf if _IsPressed("1b", $dll) Then Exit ;esc sleep(50) WEnd DllClose($dll) FileClose($file) Func wr($ff) if $ffi<>$ff then ;исключаем попадание многократных копий захваченного текста в файл FileWrite($file,$ff&@LF&"-------"&@lf) ;пишем форматированный текст $ffi=$ff ToolTip($ffi) EndIf EndFunc |
Отправлено: 23:28, 06-07-2008 | #707 |
Googler Сообщения: 3665
|
Профиль | Отправить PM | Цитировать Maza Faka
Цитата:
Цитата:
![]() _WinNet_OpenEnum() _WinNet_CloseEnum() _WinNet_EnumResource() но мне они показались неудобными в применении, посуди сам: - значения флагов не совпадают со значениями системных констант; - нет функций по обработке структур NETRESOURCE; - излишняя (ИМХО) перегруженность функций параметрами ByRef поэтому, поскольку уже зацепился на днях выложу свой вариант UDF ALL может кто еще выскажется по функциям из группы _WinNet_* ? |
||
Отправлено: 15:01, 08-07-2008 | #708 |
Ветеран Сообщения: 604
|
Профиль | Отправить PM | Цитировать amel27
Цитата:
![]() Цитата:
![]() |
||
------- Отправлено: 16:54, 08-07-2008 | #709 |
Ветеран Сообщения: 825
|
Профиль | Отправить PM | Цитировать Тут у меня спросили скрипт определения пути, куда установилась программа. У кого нибудь уже есть решение?!
|
Отправлено: 17:45, 08-07-2008 | #710 |
![]() |
Участник сейчас на форуме |
![]() |
Участник вне форума |
![]() |
Автор темы |
![]() |
Сообщение прикреплено |
| |||||
Название темы | Автор | Информация о форуме | Ответов | Последнее сообщение | |
[архив - Часть 2] AutoIt скрипты | Vadikan | AutoIt | 985 | 21-01-2008 09:58 | |
Вопрос - [Архив] Антивирусные программы - ОБЩИЕ ВОПРОСЫ | FOX RED | Защита компьютерных систем | 67 | 21-11-2007 15:05 | |
[Архив - Часть 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 |
|