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

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

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

(*.*)


Сообщения: 36568
Благодарности: 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

 

Старожил


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

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


Creat0R,
Цитата Creat0R:
Это конечно не то что требуется, >>>
Ну почему же, идея отличная, ведь мы будем знать нажатую клавишу! Кстати, в какой переменной она хранится?
Жаль только у меня код не работает. Монитор выключается и тут же включается. Я сделал следующим образом и это работает:
Код: Выделить весь код
Opt("WinTitleMatchMode", 4)

HotKeySet("{F11}", "Monitor_Off")
HotKeySet("{F10}", "Monitor_On")

$Monitor = 'On'

While 1
    Sleep(100)
	If $Monitor = 'On' Then
		Local $hwnd = WinGetHandle('classname=Progman')
		DllCall('user32.dll', 'int', 'SendMessage', 'hwnd', $hwnd, 'int', 274, 'int', 61808, 'int', -1)
	EndIf
	If $Monitor = 'Off' Then
		Local $hwnd = WinGetHandle('classname=Progman')
		Sleep(100)
		DllCall('user32.dll', 'int', 'SendMessage', 'hwnd', $hwnd, 'int', 274, 'int', 61808, 'int', 2)
	EndIf
WEnd

Func Quit()
    Monitor_On()
    Exit
EndFunc

Func Monitor_On()
	$Monitor = 'On'
EndFunc

Func Monitor_Off()
	$Monitor = 'Off'
EndFunc
но мне не нравится, что он постоянно в цикле мотает и выключает моник.

Отправлено: 09:50, 09-08-2007 | #271



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

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


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

Ветеран


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

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


Creat0R
Плз глянь скрипт, что не так?
Скрипт запускается из корня диска "C:\". Если открываю mp3-файл на диске "C:\", то файл проигрывается нормально, если открываю mp3-файл на диске "D:\", скажем "D:\Music\Taxi\TAXY-4.mp3", то тоже всё нормально, но если в пути или имени файла есть пробелы, то файл не проигрывается, причём такой глюк, только если файл на "D:\" диске, с "C:\" диском, всё нормально.

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

Dim $m3u_array, $sound, $sleep, $i = 1

$file = ""
GUICreate("Player", 300, 200, -1, -1, -1)
GUISetIcon(@ProgramFilesDir & "\Winamp\winamp.exe", 0)
GUISetBkColor(0xA6CAF0)
GUICtrlCreateLabel("Simple player", 100, 5, 100, 15, -1)

;Menu
$menu = GUICtrlCreateMenu("File", -1)
$playlist = GUICtrlCreateMenuItem("Open playlist", $menu)
GUICtrlCreateMenuItem("", $menu)
$quit = GUICtrlCreateMenuItem("Quit", $menu)

;Button
$play = GUICtrlCreateButton("Play", 10, 115, 60)
$open = GUICtrlCreateButton("Open", 10, 10, 60)
$stop = GUICtrlCreateButton("Stop", 210, 115, 60)
$pause = GUICtrlCreateButton("Pause", 210, 10, 60)

;Slider
$slider = GUICtrlCreateSlider(83, 115, 100, 30, -1)
GUICtrlSetLimit($slider, 100, 0)
GuiCtrlSetData($slider, 100)

GUISetState()

AdlibEnable("Check", 1000)

While 1
    $msg = GUIGetMsg()

        Select
    Case $msg = $open
        _SoundClose($sound)
        $file = FileOpenDialog("Open music file", @MyDocumentsDir & "\Моя музыка", "Music files(*.mp3;*.wav)", 3)

                        Case $msg = $play
            If (Not $file = "") And (Not _SoundStatus($sound) = "played") Then
                $sound = _SoundOpen($file)
                _SoundPlay($sound)
            EndIf

                    Case $msg = $slider
            $Read_slider = GUICtrlRead($slider)
            SoundSetWaveVolume($Read_slider)

                    Case $msg = $Gui_Event_Close Or $msg = $quit
            Exit

                    Case $msg = $playlist
            $m3u = FileOpenDialog("Add playlist", "", "Playlist (*.m3u)", 1)
            If @error Then ContinueLoop
                _FileReadToArray($m3u, $m3u_array)
                $sound = _SoundOpen($m3u_array[$i])
                _SoundPlay($sound)

                        Case $msg = $stop
            _SoundStop($sound)
            _SoundClose($sound)
            ContinueLoop

                    Case $msg = $pause
            If Not $sound = "" Then
                If $sleep = 1 Then
                    _SoundResume($sound)
                    $sleep = 0
                Else
                    $sleep = _SoundPause($sound)
                EndIf
            EndIf
        EndSelect
    WEnd

    Func Check()
    $stat = _SoundStatus($sound)
    If $stat = "stopped" Then
        If IsArray($m3u_array) Then
            _SoundClose($sound)
            $i += 1
            $sound = _SoundOpen($m3u_array[$i])
            If @error Then Return
            _SoundPlay($sound)
        EndIf
    EndIf
EndFunc

Отправлено: 11:58, 09-08-2007 | #272


Аватара для Creat0R

Must AutoIt


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

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


VelDmi,
Цитата:
ведь мы будем знать нажатую клавишу
Хм, не уверен что понял для чего? все клавиши (кроме заданных) работают как обычно.

Цитата:
в какой переменной она хранится?
Что хранится? нажатая клавиша? нигде вроде - кстати для этого тоже есть функция, возвращает значение вызванной клавиши/нажатой кнопки мышки, если нужно могу выложить (с оф. форума стащил ).

Цитата:
мне не нравится, что он постоянно в цикле мотает и выключает моник.
И при этом нагружает систему... именно поэтому я и подумал использовать проверку ввода, не могу понять почему у тебя не работает, я запускаю скрипт, жму F11, монитор выключается, пока не нажать F10 или Esc он выключается при любом другом вводе...

Ради проверки, попробуй поставь Beep() после функции _IdleWaitCommit(0) (в цикле где она вызывается), по идее звук должен прозвучать только после первого выключения, и каждый раз при вводе с клавиатуры или мышки.


Maza Faka,
Цитата:
Плз глянь скрипт, что не так?
Ок, чуть позже гляну...

Maza Faka,
Для начала я бы проверил тот же путь который "не работает" напрямую - т.е возьми укажи сразу этот путь (в отдельном скрипте), и просто сделай так:

Код: Выделить весь код
$OpSound = _SoundOpen("D:\полный путь к файлу")
_SoundPlay($OpSound)
если он играет, значит путь неверно передаётся в момент обработки в теле цикла, если не играет, значит возможно попадаются нестандартные символы в имени файла.. покажи проблематичный путь.

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

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

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


Отправлено: 13:17, 09-08-2007 | #273


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

Ветеран


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

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


Creat0R
Не понимаю, вот с таким путём проигрывается:

Код: Выделить весь код
#include <Sound.au3>
$OpSound = _SoundOpen("D:\Music\Taxi\TAXY-4.mp3")
_SoundPlay($OpSound)
While 1
	Sleep(1000)
WEnd
А с таким нет:
Код: Выделить весь код
#include <Sound.au3>
$OpSound = _SoundOpen("D:\Music\Steve Vai\01 - Bad Horse.mp3")
_SoundPlay($OpSound)
While 1
	Sleep(1000)
WEnd
Глючная какая-то библиотека

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


Отправлено: 15:39, 09-08-2007 | #274


Аватара для Creat0R

Must AutoIt


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

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


Maza Faka,
Цитата:
А с таким нет:
Во-первых проверь что возвращает функция _SoundOpen() (проверь переменную $OpSound).
Во-вторых, чтобы окончательно "отсеять вину" самого пути/файла, попробуй проиграть этот же файл используя встроенную функцию SoundPlay().

Я создал у себя точно такой путь, поместил туда файл с точно таким именем, всё нормально играет..

Проблема видимо в самом файле.
Если хочешь залей файл, я проверю у себя.

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

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

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


Отправлено: 16:25, 09-08-2007 | #275


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

Ветеран


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

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


Creat0R
Мистика какая-то. Запускаю скрипт:
Код: Выделить весь код
#include <Sound.au3>
$open = _SoundOpen("D:\Music\Steve Vai\01 - Bad Horse.mp3")
$play = _SoundPlay($open)
MsgBox(0, "", $play)

While 1
	Sleep(1000)
WEnd
Музыка не играет, хотя _SoundPlay возвращает 1, что означает успех. Создал каталог "D:\Super Dance Lolli pop\", скопировал туда этот же "проблемный" файл ("01 - Bad Horse.mp3"), файл проигрывается. Ничего не понимаю

Похоже глюк Винды, из каталога "D:\Music\Steve Vai" скопировал все файлы в другой каталог, удалил каталог "D:\Music\Steve Vai", создал его же заново, скопировал туда все mp3-файлы, которые там раньше находились, и о чудо! музыка заиграла! Что за хрень такая?

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


Отправлено: 17:22, 09-08-2007 | #276


Аватара для Creat0R

Must AutoIt


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

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


Maza Faka,
Цитата:
Музыка не играет, хотя _SoundPlay возвращает 1
а что возвращает _SoundOpen()?
Вообще можно проверять ошибки используя пример из справки:

Код: Выделить весь код
#include <Sound.au3>
;open sound file
$sound = _SoundOpen("D:\Music\Steve Vai\01 - Bad Horse.mp3")
If @error = 2 Then
    MsgBox(0, "Error", "The file does not exist")
    Exit
ElseIf @error = 3 Then
    MsgBox(0, "Error", "The alias was invalid")
    Exit
ElseIf @extended <> 0 Then
    $extended = @extended ;assign because @extended will be set after DllCall
    $errorstring = DllCall("winmm.dll","int","mciGetErrorStringA","str",$extended,"str","","int",65534) ;,"hwnd",0) - Это лишнее, у меня с этим скрипт вылетает
    MsgBox(0, "Error", "The open failed." & @CRLF & "Error Number: " & $extended & @CRLF & "Error Description: " & $errorstring[2] & @CRLF & "Please Note: The sound may still play correctly.")
Else
    MsgBox(0, "Success", "The file opened successfully")
EndIf
_SoundPlay($sound, 1)

_SoundClose($sound)
Цитата:
удалил каталог "D:\Music\Steve Vai", создал его же заново
Возможно в пути попались русские буквы, а когда пересоздал путь, писал строго латинскими.
Как получал путь к файлу? ручной ввод? или копирование с адресной строки? (или ещё другими методами).

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

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

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


Отправлено: 23:20, 09-08-2007 | #277


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

Ветеран


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

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


Creat0R

Цитата Creat0R:
а что возвращает _SoundOpen()?
Набор символов, типа "pvprlccwfo", причём каждый раз разный, хотя открывается один и тот же файл.

Цитата Creat0R:
Возможно в пути попались русские буквы, а когда пересоздал путь, писал строго латинскими.
Нет, в пути не могло быть кириллицы, в этом я уверен, так, как лично создавал каталоги.

Цитата:
Как получал путь к файлу? ручной ввод? или копирование с адресной строки? (или ещё другими методами)
Да без разницы, и вручную вводил и из буфера обмена.

Ладно, прекратим этот оффтоп, думаю это частный случай, связанный с моим компом.

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


Отправлено: 10:15, 10-08-2007 | #278


Пользователь


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

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


Creat0R
Цитата:
кстати для этого тоже есть функция, возвращает значение вызванной клавиши/нажатой кнопки мышки, если нужно могу выложить >>>
Заинтригован. Выложи пожалуйста.

Отправлено: 15:16, 10-08-2007 | #279


Аватара для Creat0R

Must AutoIt


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

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


Maza Faka,
Цитата:
Набор символов, типа "pvprlccwfo", причём каждый раз разный, хотя открывается один и тот же файл.
Он разный потому что гинерируется используя Random - это типа самопального идентификатора - Загляни в саму библиотеку, поймёшь как оно вообще сделано

Diamond,
Цитата:
Выложи пожалуйста
Нет проблем...
Немного(?) переделал под свои нужды:

Код: Выделить весь код
While 1
    $KeyIsPressed = _KeyIsPressed()
    If $KeyIsPressed Then MsgBox(64, "Pressed/Clicked:", $KeyIsPressed)
    Sleep(10)
WEnd

Func _KeyIsPressed()
    Local $KeyBoardLayoutArr = StringSplit("{LMouse}|{RMouse}|{}|(MMouse}|{}|{}|{}|{BACKSPACE}|{TAB}|{}|{}|{}|{ENTER}|{}|{}|{SHIFT}|{CTRL}|{ALT}|{PAUSE}|{CAPSLOCK}|{}|{}|{}|{}|{}|{}|{ESC}|{}|{}|{}|{]|{SPACE}|{PGUP}|{PGDN}|{END}|{HOME}|{LEFT}|{UP}|{RIGHT}|{DOWN}|{SELECT}|{PRINTSCREEN}|{}|{PRINTSCREEN}|{INSERT}|{DEL}|{}|0|1|2|3|4|5|6|7|8|9|{}|{}|{}|{}|{}|{}|{}|a|b|c|d|e|f|g|h|i|j|k|l|m|n|o|p|q|r|s|t|u|v|w|x|y|z|{LWIN}|{RWIN}|{APPSKEY}|{}|{SLEEP}|{numpad0}|{numpad1}|{numpad2}|{numpad3}|{numpad4}|{numpad5}|{numpad6}|{numpad7}|{numpad8}|{numpad9}|{NUMPADMULT}|{NUMPADADD}|{}|{NUMPADSUB}|{NUMPADDOT}|{NUMPADDIV}|{F1}|{F2}|{F3}|{F4}|{F5}|{F6}|{F7}|{F8}|{F9}|{F10}|{F11}|{F12}|{F13}|{F14}|{F15}|{F16}|{F17}|{F18}|{F19}|{F20}|{F21}|{F22}|{F23}|{F24}|{}|{}|{}|{}|{}|{}|{}|{}|{NUMLOCK}|{}|{}|{}|{}|{}|{}|{}|{}|{}|{}|{}|{}|{}|{}|{}|{SHIFT}|{SHIFT}|{CTRL}|{CTRL}|{ALT}|{ALT}|{BROWSER_BACK}|{BROWSER_FORWARD}|{BROWSER_REFRESH}|{BROWSER_STOP}|{BROWSER_SEARCH}|{BROWSER_FAVORITES}|{BROWSER_HOME}|{VOLUME_MUTE}|{VOLUME_DOWN}|{VOLUME_UP}|{MEDIA_NEXT}|{MEDIA_PREV}|{MEDIA_STOP}|{MEDIA_PLAY_PAUSE}|{LAUNCH_MAIL}|{LAUNCH_MEDIA}|{LAUNCH_APP1}|{LAUNCH_APP2}|{}|{}|;|{+}|,|{-}|.|/|`|{}|{}|{}|{}|{}|{}|{}|{}|{}|{}|{}|{}|{}|{}|{}|{}|{}|{}|{}|{}|{}|{}|{}|{}|{}|{}|[|\|]|'", "|")
    Local $a_R
    For $i = 0 To 165
        $a_R = DllCall("user32.dll", "int", "GetAsyncKeyState", "int", '0x' & Hex($i,2))
        If Not @error And BitAND($a_R[0], 0x8000) = 0x8000 Then Return $KeyBoardLayoutArr[$i]
    Next
    Sleep(40)
    Return 0
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

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

Отправлено: 16:08, 10-08-2007 | #280



Компьютерный форум 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




 
Переход