|
Компьютерный форум OSzone.net » Программирование, базы данных и автоматизация действий » AutoIt » [Архив - Часть 3] AutoIt скрипты .:[общие вопросы]:. |
|
[Архив - Часть 3] AutoIt скрипты .:[общие вопросы]:.
|
(*.*) Сообщения: 36493 |
Профиль | Сайт | Отправить PM | Цитировать
Внимание! В связи с созданием отдельного форума по 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:
|
||
------- Последний раз редактировалось 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 |
|