Имя пользователя:
Пароль:  
Помощь | Регистрация | Забыли пароль?  | Правила  

Компьютерный форум OSzone.net » Программирование, базы данных и автоматизация действий » AutoIt » [архив - Часть 2] AutoIt скрипты

Закрытая тема
Настройки темы
[архив - Часть 2] AutoIt скрипты

(*.*)


Сообщения: 36567
Благодарности: 6698


Конфигурация

Профиль | Сайт | Отправить PM | Цитировать


Изменения
Автор: Vadikan
Дата: 27-01-2008
Внимание!
Тема переведена в архивное состояние







(настоятельно рекомендуется к прочтению/поиску)


Руководство к действию по работе c AutoIt.


Сайт программы
Русская справка
Коллекция AutoIt скриптов от Sanja Alone
Коллекция AutoIt скриптов от MSFN (могут быть устаревшие).
Справочник по командам rundll32 (команды запуска диалоговых окон и не только...)

AutoIt скрипты - введение и FAQ (статья содержит вводную информацию по AutoIt, а также ответы на ЧаВо).



Данная тема предназначена для общих вопросов по AutoIt. Вопросы по установке приложений при помощи AutoIt следует задавать в соответствии с правилами форума "Автоматическая установка приложений". Таким образом, если вы хотите узнать как установить Winamp 5.x при помощи AutoIt, то создайте тему [autoit] Winamp 5.х (если таковой еще нет на форуме). Проверить наличие тем можно при помощи поиска или фильтров.
Цитата Vadikan:
В теме уже свыше 500 сообщений и поиск нужной информации в ней усложняется. Есть предложение собрать все решения (скрипты) и разместить их на Wiki по принципу "один скрипт - одна статья wiki", добавляя статьи в категорию Autoit. Речь, в принципе, идет об общих решениях, а не о скриптах для установки конкретной программы. Название статьи, очевидно, должно отражать назначение скрипта. Затем можно в шапке просто разместить ссылки на статьи Wiki.

-------
Канал Windows 11, etc | Чат @winsiders

Это сообщение посчитали полезным следующие участники:

Отправлено: 00:02, 05-02-2006

 

Аватара для Maza Faka

Ветеран


Сообщения: 604
Благодарности: 133

Профиль | Отправить PM | Цитировать


DImaN!
По моему с таким вопросом тебе в другой топик.

-------
Сообщение помогло? Не забудьте нажать на Полезное сообщение


Отправлено: 07:48, 18-12-2007 | #891



Для отключения данного рекламного блока вам необходимо зарегистрироваться или войти с учетной записью социальной сети.

Если же вы забыли свой пароль на форуме, то воспользуйтесь данной ссылкой для восстановления пароля.


Аватара для Creat0R

Must AutoIt


Сообщения: 3054
Благодарности: 1009

Профиль | Сайт | Отправить PM | Цитировать


Эффект пристыковки GUI-окна к краям экрана или даже к краям других окон:

Код: Выделить весь код
#include <GUIConstants.au3>

Global Const $WM_WINDOWPOSCHANGING = 0x0046

Global $nRange = 20

$hGUI = GUICreate("GUI Stickable!", 280, 150)

$Stickable_CB = GUICtrlCreateCheckbox("Stickable?", 20, 30)
GUICtrlSetState(-1, $GUI_CHECKED)

$Range_Input = GUICtrlCreateInput($nRange, 20, 60, 40, 20, $ES_READONLY)
$UpDown = GUICtrlCreateUpdown(-1)
GUICtrlSetLimit(-1, 80, 5)

GUISetState()

GUICreate("Some extra window", 320, 180, 0, 0)
GUIRegisterMsg($WM_WINDOWPOSCHANGING, "WM_WINDOWPOSCHANGING")

GUISetState()

While 1
    Switch GUIGetMsg()
        Case $GUI_EVENT_CLOSE
            ExitLoop
        Case $Stickable_CB
            If GUICtrlRead($Stickable_CB) = $GUI_CHECKED Then
                GUIRegisterMsg($WM_WINDOWPOSCHANGING, "WM_WINDOWPOSCHANGING")
            Else
                GUIRegisterMsg($WM_WINDOWPOSCHANGING, "")
            EndIf
        Case $UpDown
            $nRange = GUICtrlRead($Range_Input)
    EndSwitch
WEnd

Func WM_WINDOWPOSCHANGING($hWnd, $Msg, $wParam, $lParam)
    Local $IsSideWinStick   = True ;Set to True for sticking to all visible windows :) - but it's hangs up CPU :(

    Local $stWinPos         = DllStructCreate("uint;uint;int;int;int;int;uint", $lParam)
    Local $nLeft            = DllStructGetData($stWinPos, 3)
    Local $nTop             = DllStructGetData($stWinPos, 4)

    Local $aCurWinPos       = WinGetPos($hWnd)
    Local $aWorkArea        = _GetWorkingArea()

    ;Left
    If Abs($aWorkArea[0] - $nLeft) <= $nRange Then DllStructSetData($stWinPos, 3, $aWorkArea[0])
    ;Right
    If Abs($nLeft + $aCurWinPos[2] - $aWorkArea[2]) <= $nRange Then DllStructSetData($stWinPos, 3, $aWorkArea[2] - $aCurWinPos[2])
    ;Top
    If Abs($aWorkArea[1] - $nTop) <= $nRange Then DllStructSetData($stWinPos, 4, $aWorkArea[1])
    ;Bottom
    If Abs($nTop + $aCurWinPos[3] - $aWorkArea[3]) <= $nRange Then DllStructSetData($stWinPos, 4, $aWorkArea[3] - $aCurWinPos[3])

    If Not $IsSideWinStick Then Return 0

    Local $ahWnd = WinList()

    For $i = 1 To UBound($ahWnd) - 1
        If $ahWnd[$i][1] = $hWnd Or Not BitAND(WinGetState($ahWnd[$i][1]), 2) Or _
            BitAND(WinGetState($ahWnd[$i][1]), 32) Or BitAND(WinGetState($ahWnd[$i][1]), 16) Then ContinueLoop

        $aSideWinPos = WinGetPos($ahWnd[$i][1])

        If $aCurWinPos[1] + $aCurWinPos[3] >= $aSideWinPos[1] And $aCurWinPos[1] <= $aSideWinPos[1] + $aSideWinPos[3] Then
            ;Left
            If Abs(($aSideWinPos[0] + $aSideWinPos[2]) - $nLeft) <= $nRange Then _
                DllStructSetData($stWinPos, 3, $aSideWinPos[0] + $aSideWinPos[2])

            ;Right
            If Abs($nLeft + $aCurWinPos[2] - $aSideWinPos[0]) <= $nRange Then _
                DllStructSetData($stWinPos, 3, $aSideWinPos[0] - $aCurWinPos[2])
        EndIf

        If $aCurWinPos[0] + $aCurWinPos[2] >= $aSideWinPos[0] And $aCurWinPos[0] <= $aSideWinPos[0] + $aSideWinPos[2] Then
            ;Top
            If Abs(($aSideWinPos[1] + $aSideWinPos[3]) - $nTop) <= $nRange Then _
                DllStructSetData($stWinPos, 4, $aSideWinPos[1] + $aSideWinPos[3])

            ;Bottom
            If Abs($nTop + $aCurWinPos[3] - $aSideWinPos[1]) <= $nRange Then _
                DllStructSetData($stWinPos, 4, $aSideWinPos[1] - $aCurWinPos[3])
        EndIf
    Next

    Return 0
EndFunc

;===============================================================================
;
; Function Name:    _GetWorkingArea()
; Description:      Returns the coordinates of desktop working area rectangle
; Parameter(s):     None
; Return Value(s):  On Success - Array containing coordinates:
;                        $a[0] = left
;                        $a[1] = top
;                        $a[2] = right
;                        $a[3] = bottom
;                   On Failure - 0
;
;BOOL WINAPI SystemParametersInfo(UINT uiAction, UINT uiParam, PVOID pvParam, UINT fWinIni);
;uiAction SPI_GETWORKAREA = 48
;===============================================================================
Func _GetWorkingArea()
    Local Const $SPI_GETWORKAREA = 48
    Local $stRECT = DllStructCreate("long; long; long; long")
    Local $SPIRet = DllCall("User32.dll", "int", "SystemParametersInfo", _
                        "uint", $SPI_GETWORKAREA, "uint", 0, "ptr", DllStructGetPtr($stRECT), "uint", 0)
    If @error Then Return 0
    If $SPIRet[0] = 0 Then Return 0

    Local $sLeftArea = DllStructGetData($stRECT, 1)
    Local $sTopArea = DllStructGetData($stRECT, 2)
    Local $sRightArea = DllStructGetData($stRECT, 3)
    Local $sBottomArea = DllStructGetData($stRECT, 4)

    Local $aRet[4] = [$sLeftArea, $sTopArea, $sRightArea, $sBottomArea]
    Return $aRet
EndFunc
Возможно уже приводил(и) тут нечто подобное, но этот вариант самый лучше из всех предыдущих!

-------
“Сделай так просто, как возможно, но не проще этого.”... “Ты никогда не решишь проблему, если будешь думать так же, как те, кто её создал.”

Альберт Эйнштейн

P.S «Не оказываю техподдержку через ПМ/ICQ, и по email - для этого есть форум. ©»

http://creator-lab.ucoz.ru/Images/Icons/autoit_icon.png Русское сообщество AutoIt | http://creator-lab.ucoz.ru/Images/Ic...eator_icon.png CreatoR's Lab | http://creator-lab.ucoz.ru/Images/Icons/oac_icon.png Opera AC Community

Это сообщение посчитали полезным следующие участники:

Отправлено: 09:14, 18-12-2007 | #892


Новый участник


Сообщения: 1
Благодарности: 0

Профиль | Отправить PM | Цитировать


Добрый день!

Нужно вставить строку из autoit'овского Input'a в EditBox стороннего приложения.
Собственно при выполнении скрипта перемещаю курсор в нужный EditBox и отправляю:
Код: Выделить весь код
Send(GUICtrlRead($testinput))
При вставке русскоязычные символы вставляются крокозяблами. Как это побороть?

Отправлено: 10:45, 18-12-2007 | #893


Аватара для Maza Faka

Ветеран


Сообщения: 604
Благодарности: 133

Профиль | Отправить PM | Цитировать


SashaShveik

Пример:
Код: Выделить весь код
#include <GuiConstants.au3>

$hGui = GUICreate("Test", 200, 100)

$hInput = GUICtrlCreateInput("", 50, 50, 100, 17)
$Send_Btn = GUICtrlCreateButton("Send", 145, 75, 50, 20)

GUISetState()

While 1
    $msg = GUIGetMsg()
    Switch $msg
    Case $GUI_EVENT_CLOSE
        ExitLoop
    Case $Send_Btn
        Run("notepad.exe")
        WinWaitActive("Безымянный")
        ControlSetText("Безымянный", "", "Edit1", GUICtrlRead($hInput))
    EndSwitch
WEnd
P.S.
Поищи в топике, было много решений этой проблемы.

Отправлено: 12:39, 18-12-2007 | #894


Аватара для Creat0R

Must AutoIt


Сообщения: 3054
Благодарности: 1009

Профиль | Сайт | Отправить PM | Цитировать


Вопрос (касается моего примера пристыковки гиу окна) - как можно определить только те окна, которые видно пользователю? BitAND(WinGetState($Title), 2) определяет скрыто ли окно, а как определить не спрятанно ли оно за другими окнами, ведь в моём примере, если окно не скрыто/не свёрнуто, но находится за каким то другим окном, то GUI пристыковывается к краям этого окна, хотя краев не видно.

В идеале хотелось бы конечно опрелделять не просто видимость (a.k.a доступность) окна, а именно его видимые края, чтобы можно было пристыковывать только к тем краям, которые видимы для глаза .

-------
“Сделай так просто, как возможно, но не проще этого.”... “Ты никогда не решишь проблему, если будешь думать так же, как те, кто её создал.”

Альберт Эйнштейн

P.S «Не оказываю техподдержку через ПМ/ICQ, и по email - для этого есть форум. ©»

http://creator-lab.ucoz.ru/Images/Icons/autoit_icon.png Русское сообщество AutoIt | http://creator-lab.ucoz.ru/Images/Ic...eator_icon.png CreatoR's Lab | http://creator-lab.ucoz.ru/Images/Icons/oac_icon.png Opera AC Community


Отправлено: 17:03, 18-12-2007 | #895


Аватара для Creat0R

Must AutoIt


Сообщения: 3054
Благодарности: 1009

Профиль | Сайт | Отправить PM | Цитировать


Проблему вроде решил (осталась только проблема с высокой загрузкой ЦП в момент перетаскивания окна).




Функция для корректировки ссылки (вида hттp://, _http://, хттп:// и т.п.):

Код: Выделить весь код
ConsoleWrite(_CorrectURL('_hттp://creator-lab.ucoz.ru/load/0-0-1-35-20'))

Func _CorrectURL($sURL)
    $sURL = StringRegExpReplace($sURL, '(?i)\A[^a-z\d]+|[^a-z\d]+$', "")

    Local $sURL_Hold = StringRegExpReplace($sURL, "(?i)(\A.*?(/|\\|:)+[^a-z\d]+|[^a-z\d]+$)", "")
    $sURL_Hold = StringReplace(StringReplace($sURL_Hold, " ", "%20"), "\", "/")

    If StringLeft($sURL, 4) = "ftp." Then Return "ftp://" & $sURL_Hold

    Local $sProtocol = StringRegExpReplace($sURL, "\A.*?(.{1,5}:/).*", "\1/")
    If StringLen($sProtocol) <= 5 Then Return "http://" & $sURL_Hold

    $sProtocol = StringRegExpReplace($sProtocol, "(?i)\A(h..p|h..р|h.tp|ht..|..tp|.ttp|[а-я]{1,4})://+", "http://", 1)
    If @extended > 0 Then Return $sProtocol & $sURL_Hold

    $sProtocol = StringRegExpReplace($sProtocol, "(?i)\A(f.p|f.р|f..|.tp|[а-я]{1,3})://+", "ftp://", 1)
    If @extended > 0 Then Return $sProtocol & $sURL_Hold

    $sProtocol = StringRegExpReplace($sProtocol, "(?i)\A(ms.|.ms|m.s|[а-я]{1,3})://+", "mms://")
    If @extended > 0 Then Return $sProtocol & $sURL_Hold

    $sProtocol = StringRegExpReplace($sProtocol, "(?i)\A(r.ps|.tps|rt.p|[а-я]{1,4})://+", "rtsp://")
    If @extended > 0 Then Return $sProtocol & $sURL_Hold

    $sProtocol = StringRegExpReplace($sProtocol, "(?i)\A(h..ps|..tps|.t.ps|[а-я]{1,5})://+", "https://")
    If @extended > 0 Then Return $sProtocol & $sURL_Hold

    If Not StringRegExp($sProtocol, "(?i)\A(http|https|ftp|mms|rtsp|news|irc)://+") Then $sProtocol = "http://"

    Return $sProtocol & $sURL_Hold
EndFunc
По этому поводу вопрос: Встречал ли кто то ссылку, хостинг в которой начинается не с латинской буквы или цифры? а также есть ли ссылки (рабочие) которые завершаются с любым другим символов а не латинской буквой или числом?




Поскольку есть "много заинтересованных" в «AutoIt Menu для Opera», я не забыл напомнить об обновлении плагина.

Список изменении...

[v1.01 - 20.12.2007]

* Добавлен BBCode Модуль - позволяет использовать BBCode теги в текстовых формах (см. в Readme подробнее).

* Улучшены опции "Run/Open Selected Code".

* Обновлен "AutoUpdateIt" до самой последней версии (1.41).
* Обновлен "Icon_File_Scanner.au3" - теперь разделитель между списками иконок может менять позицию.

* Теперь если AutoIt не найден (при интеграции), даётся возможность выбора, чтобы указать путь к AutoIt директории.
* Теперь можно установить путь к AutoIt (в диалоге настроек) без необходимости закрывать браузер Opera постоянно.
* Теперь при настройке AutoIt Menu, уведомление о закрытии Opera будет показано только при необходимости (таким образом позволяя делать настройки не касающиеся Opera без перезапуска браузера).
* Теперь почти все надоедливые сообщения могут быть отключены (установив соответствующую галочку в появившемся сообщении, или используя диалог настроек).
* Теперь интеграция инструментов (AutoIt Tools) опциональна - вы можете выбирать какой инструмент следует интегрировать - доступно только при интеграции.
* Теперь сообщение, уведомляющее о том что настройка AutoIt Menu прошла успешна, будет показано только если были сделаны изменения касающиеся Opera.

* Исправлена ошибка при интеграции - > файл конфигурации не был создан в назначенной директории (должен создаваться рядом с главным модулем "AutoIt Menu").
* Исправлена ссылка для пункта "Today's Active Topics".


[v1.0 - 13.12.2007]
Первый релиз.

-------
“Сделай так просто, как возможно, но не проще этого.”... “Ты никогда не решишь проблему, если будешь думать так же, как те, кто её создал.”

Альберт Эйнштейн

P.S «Не оказываю техподдержку через ПМ/ICQ, и по email - для этого есть форум. ©»

http://creator-lab.ucoz.ru/Images/Icons/autoit_icon.png Русское сообщество AutoIt | http://creator-lab.ucoz.ru/Images/Ic...eator_icon.png CreatoR's Lab | http://creator-lab.ucoz.ru/Images/Icons/oac_icon.png Opera AC Community


Последний раз редактировалось Creat0R, 22-12-2007 в 07:23.


Отправлено: 06:57, 22-12-2007 | #896


Новый участник


Сообщения: 9
Благодарности: 0

Профиль | Отправить PM | Цитировать


Подскажите как мне отправить письмо на почтовый яшик например мойадрес@mail.ru спомошью функции _INetSmtpMail ,если можно то готовый скрипт с подробным описанием, буду рад помощи

Отправлено: 13:46, 23-12-2007 | #897


Новый участник


Сообщения: 14
Благодарности: 1

Профиль | Отправить PM | Цитировать


Вложения
Тип файла: rar Mail.rar
(860 байт, 30 просмотров)

rimm

Код: Выделить весь код
$s_SmtpServer = "smtp.rambler.ru"
$s_FromName = "User"; омя отправляющего
$s_FromAddress = "1a9s@rambler.ru" от кого шлем(email должен быть правильным, иначе не отправит!!)
$s_ToAddress = "gates@microsoft.com"; кому отправляем
$s_Subject = "TEMA" ;тема письма
$as_Body = ;Текст письма
$s_UserName = "" ;логин  для smtp сервера
$s_Password = ""; пароль для smtp сервера
$s_CcAddress = ""
$s_BccAddress = ""
$s_AttachFiles = "" ;путь к файлу для отправки (опционально)
$IPPort=25; порт smtp сервера
$ssl=0

_INetSmtpMailCom($s_SmtpServer, $s_FromName, $s_FromAddress, $s_ToAddress, $s_Subject, $as_Body, $s_AttachFiles, $s_CcAddress, $s_BccAddress, $s_Username, $s_Password,$IPPort, $ssl)
Чтобы работала данная функция подключи Mail.au3

Последний раз редактировалось fak1r, 23-12-2007 в 17:58.

Это сообщение посчитали полезным следующие участники:

Отправлено: 17:44, 23-12-2007 | #898


Новый участник


Сообщения: 14
Благодарности: 1

Профиль | Отправить PM | Цитировать


Вот на руборде дали мне сылку вот на этот скрипт

Код: Выделить весь код
Func _UploadImage($sFilepath)
$oXMLHTTP = ObjCreate("MSXML2.XMLHTTP")
$oXMLDOC = ObjCreate("MSXML.DOMDocument") ; for later reading the XML data from the upload
$oAdoStream = ObjCreate("ADODB.Stream") ; for streaming the image in the post message
$oAdoStream.Mode = 3  ; Set read/write
$oAdoStream.Type = 1 ; Type Binary
$oAdoStream.Open()
$oAdoStream.LoadFromFile($sFilePath)
$oXMLHTTP.Open("POST", 'http://www.imageshack.us/index.php', "false") ; Set http verb to post, url, and asynchronous mode to false
$oXMLHTTP.setRequestHeader("Content-Type", "multipart/form-data;")
;$oXMLHTTP.setRequestHeader("Content-Length", $oAdoStream.Size)
$oXMLHTTP.Send('fileupload="'&$oAdoStream.Read($oAdoStream.Size)&'"&xml="yes"') ; Pretty sure this is how I should stream the data of the image, but am I'm not passing the variables right.
ConsoleWrite("Response Text: "&$oXMLHTTP.responseText)
$sData = $oXMLDoc.load($oXMLHTTP.responseXML.xml)
If Not $sData Then
    MsgBox(0, "Error", "Error Loading XML from HTTP")
EndIf
EndFunc
Но у меня это не работает, выдает код страници без ссылки и ошибку Error Loading XML from HTTP
Так и не получается залить картинку

Отправлено: 17:56, 23-12-2007 | #899


Новый участник


Сообщения: 15
Благодарности: 0

Профиль | Отправить PM | Цитировать


Как в Excel-е узнать есть ли текст в ячеике или нет ? Например в ячейке A1 есть а в A2 нет ?

Отправлено: 08:01, 24-12-2007 | #900



Компьютерный форум OSzone.net » Программирование, базы данных и автоматизация действий » AutoIt » [архив - Часть 2] AutoIt скрипты

Участник сейчас на форуме Участник сейчас на форуме Участник вне форума Участник вне форума Автор темы Автор темы Шапка темы Сообщение прикреплено

Похожие темы
Название темы Автор Информация о форуме Ответов Последнее сообщение
Открывая 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




 
Переход