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

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

Закрытая тема
Настройки темы
[Архив - Часть 3] AutoIt скрипты .:[общие вопросы]:.

(*.*)


Administrator


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


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

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


Изменения
Автор: Vadikan
Дата: 21-01-2009
Описание: архив
Внимание!


В связи с созданием отдельного форума по AutoIt, эта тема переводится в архивное состояние. Если у вас есть вопрос, создайте новую тему или поднимите существующую, если в ней обсуждается аналогичная проблема.

Пожалуйста, не создавайте тем с названием "Помогите!" или "Нужна помощь по AutoIt". Это и так понятно Заголовок темы должен быть осмысленным.



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


Справочник по командам rundll32 (команды запуска диалоговых окон и не только...)

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

Архивы старых тем по AutoIt или они же в 7z архиве (версии для печати) - 846 кб (настоятельно рекомендуется к прочтению/поиску)
(он же прикреплен в шапке)


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

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

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

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

 

Аватара для gregaz

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


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

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


Цитата Creat0R:
В этой функции нужно проверять $wParam, оно будет ровняться идентиикатору ListView, BitAND($wParam, 0xFFFF) вернёт идентификатор конкретного элемента (ListViewItem). »
Подскажи как выполнить .Моя попытка не увенчалась успехом :
Это чуть измененный пример от Maza Faka (пост 1969)
Код: Выделить весь код
#include <GuiConstants.au3>
#include <GuiListView.au3>

$Gui = GUICreate("Test", 800, 400)

$hListView1 = _GUICtrlListView_Create($GUI, "Items|SubItems", 2, 2, 296, 196, BitOR($LVS_EDITLABELS, $LVS_REPORT))
_GUICtrlListView_SetExtendedListViewStyle($hListView1, BitOR($LVS_EX_GRIDLINES, $LVS_EX_FULLROWSELECT, $LVS_EX_SUBITEMIMAGES))
$ListItem1 = _GUICtrlListView_AddItem($hListView1, "Item1")
$ListItem2 = _GUICtrlListView_AddItem($hListView1, "Item2")

$hListView2 = _GUICtrlListView_Create($GUI, "Items|SubItems", 402, 2, 296, 196, BitOR($LVS_EDITLABELS, $LVS_REPORT))
_GUICtrlListView_SetExtendedListViewStyle($hListView2, BitOR($LVS_EX_GRIDLINES, $LVS_EX_FULLROWSELECT, $LVS_EX_SUBITEMIMAGES))
$ListItem3 = _GUICtrlListView_AddItem($hListView2, "Item3")
$ListItem4 = _GUICtrlListView_AddItem($hListView2, "Item4")
GUIRegisterMsg($WM_NOTIFY, "WM_NOTIFY")

GUISetState()

While 1
    $msg = GUIGetMsg()
    Switch $msg
    Case $GUI_EVENT_CLOSE
        ExitLoop
    EndSwitch
WEnd

Func WM_NOTIFY($hWnd, $iMsg, $iwParam, $ilParam)
    Local $hWndFrom, $iIDFrom, $iCode, $tNMHDR, $hWndListView
$hListView= BitAND($iwParam, 0xFFFF);                   Попытка  идентификации ListView ??
    $hWndListView = $hListView
    If Not IsHWnd($hListView) Then $hWndListView = GUICtrlGetHandle($hListView)

    $tNMHDR = DllStructCreate($tagNMHDR, $ilParam)
    $hWndFrom = HWnd(DllStructGetData($tNMHDR, "hWndFrom"))
    $iIDFrom = DllStructGetData($tNMHDR, "IDFrom")
    $iCode = DllStructGetData($tNMHDR, "Code")

    Switch $hWndFrom
    Case $hWndListView
        Switch $iCode
        Case $LVN_BEGINLABELEDIT
            Local $tInfo = DllStructCreate($tagNMLVDISPINFO, $ilParam)
            Return False
        Case $LVN_ENDLABELEDIT
            Local $tInfo = DllStructCreate($tagNMLVDISPINFO, $ilParam)
            Local $tBuffer = DllStructCreate("char Text[" & DllStructGetData($tInfo, "TextMax") & "]", DllStructGetData($tInfo, "Text"))
            If StringLen(DllStructGetData($tBuffer, "Text")) Then Return True
            EndSwitch
        EndSwitch
        Return $GUI_RUNDEFMSG
    EndFunc

Отправлено: 17:19, 15-01-2008 | #2



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

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


Аватара для Creat0R

Must AutoIt


Moderator


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

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


Timurko,
Цитата:
немного подправил, так чтобы лишние пробелы уберались и время выглядило такого формата \d\d (передача)
Ещё один цикл для этого вроде не нужен...

Цитата:
если в файле с программой присутствуют названия каналов то они тут просто удаляются
Можно проверять наличие формата времени:

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

$String = FileRead(@ScriptDir & "\source1.txt")

Dim $aStrArray = StringSplit(StringStripCR($String), @LF)
Dim $aNewArray[1]

For $i = 1 To $aStrArray[0]
    $sTVShow_Name = StringStripWS(StringRegExpReplace($aStrArray[$i], "((, |)\d\d:\d\d)", ""), 3)
    $aTVShow_Time = StringRegExp($aStrArray[$i], "(\d\d:\d\d)", 3)
    $iUbound = UBound($aTVShow_Time)-1

    If $iUbound < 0 Then
        $aNewArray[0] += 1
        ReDim $aNewArray[$aNewArray[0] + 1]
        $aNewArray[$aNewArray[0]] = $aStrArray[$i]
        ContinueLoop
    EndIf

    For $j = 0 To $iUbound
        $aNewArray[0] += 1
        ReDim $aNewArray[$aNewArray[0] + 1]

        $sSeperater = " - "
        If StringLeft($sTVShow_Name, 1) = "-" Then $sSeperater = " "
        $aNewArray[$aNewArray[0]] = StringStripWS($aTVShow_Time[$j], 3) & $sSeperater & $sTVShow_Name
    Next
Next

_ArraySort($aNewArray, 0, 1)
_ArrayDisplay($aNewArray)
_FileWriteFromArray(@ScriptDir & "\dest1.txt", $aNewArray, 1)
gregaz,
Цитата:
Подскажи как выполнить
Код: Выделить весь код
Func WM_NOTIFY($hWnd, $iMsg, $iwParam, $ilParam)
    Local $hWndFrom, $iIDFrom, $iCode, $tNMHDR, $hWndListView1, $hWndListView2

    $hWndListView1 = $hListView1
    $hWndListView2 = $hListView2

    If Not IsHWnd($hListView1) Then $hWndListView1 = GUICtrlGetHandle($hListView1)
    If Not IsHWnd($hListView2) Then $hWndListView2 = GUICtrlGetHandle($hListView2)

    $tNMHDR = DllStructCreate($tagNMHDR, $ilParam)
    $hWndFrom = HWnd(DllStructGetData($tNMHDR, "hWndFrom"))
    $iIDFrom = DllStructGetData($tNMHDR, "IDFrom")
    $iCode = DllStructGetData($tNMHDR, "Code")

    Switch $hWndFrom
        Case $hWndListView1 ;распознан первый список
            ConsoleWrite("--> ListView 1 events here" & @LF)
;~          Switch $iCode
;~              Case ;;;
;~          EndSwitch
        Case $hWndListView2 ;распознан второй список
            ConsoleWrite("--> ListView 2 events here" & @LF)
;~          Switch $iCode
;~              Case ;;;
;~          EndSwitch
    EndSwitch
    Return $GUI_RUNDEFMSG
EndFunc   ;==>WM_NOTIFY

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

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

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

Русское сообщество AutoIt | CreatoR's Lab | Opera AC Community


Отправлено: 17:23, 15-01-2008 | #3


Аватара для gregaz

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


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

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


Creat0R, Спасибо , так работает
Вопрос : Где можно почитать про Dll-библиотеки ?

Отправлено: 18:01, 15-01-2008 | #4


Аватара для unikum111

Старожил


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

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


Подскажите пожалуйста, как в скрипте команды командной строки прописывать, например, "copy /y" и т.д.? Не охота дополнительный файл cmd делать.

Отправлено: 18:50, 15-01-2008 | #5


Аватара для Creat0R

Must AutoIt


Moderator


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

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


gregaz,
Цитата:
Где можно почитать про Dll-библиотеки ?
Смотря что требуется, но вообще должна быть документаця к той или инной библиотеке

unikum111,
Цитата:
как в скрипте команды командной строки прописывать
Код: Выделить весь код
Run(@ComSpec & ' /c copy /y "source" "dest"', '', @SW_HIDE)
А не проще на AutoIt сделать то, что планируется с использованием Cmd?

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

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

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

Русское сообщество AutoIt | CreatoR's Lab | Opera AC Community


Отправлено: 22:43, 15-01-2008 | #6


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


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

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


Цитата Creat0R:
Цитата:
если в файле с программой присутствуют названия каналов то они тут просто удаляются
Можно проверять наличие формата времени: »
Хм... Вот в этом то и проблема. В таком случае получается он сортирует все подряд и из такого:
Цитата:
TV1000
05:00, 23:00 Я и ты, и все, кого мы знаем
07:00 Грязные делишки
09:00 Суперзвезда
11:00 Девушка на мосту
13:00 Сердце и души
15:00 Звездная ночь
17:00 Сердцеедки
19:00 Осиное гнездо
21:00 Ирландский Квартал
01:00 Белокурые бестии
03:00 Голубой воротничок
РБК
07:00-15:00 Профилактика на канале РБК.
15:00-06:30 Новости. Каждые 30 минут.
15:10, 16:10, 17:10, 18:15, 20:10, 21:10, 00:15, 03:10, 04:10 Рынки.
15:35, 19:35 Новости компаний.
15:50, 18:50, 04:20 Звездная пыль.
16:20 В фокусе. Рынок мясопереработки.
17:20, 23:50, 01:20 Отдых и Туризм.
17:35 Капитал. Банковские вклады: перспективы роста?
18:35 Рынки. Спецвыпуск. Открытие торгов в Америке.
19:10 Рынки. Спецвыпуск. Итоги торгов в России.
19:50, 03:20 Азбука инвестора.
20:35 Рекламная пауза.
21:35, 03:35 Диалог. "Конвертная" борьба.
22:10, 02:10 Интрига дня.
23:00, 01:30 Мир сегодня.
23:35 Зарубежный бизнес.
00:35, 04:35 Сфера интересов. Ювелирные торговые сети.
01:10 Рынки. Спецвыпуск. Итоги торгов в Америке.
Получается такой текст:
Цитата:
00:15 - Рынки.
00:35 - Сфера интересов. Ювелирные торговые сети.
01:00 - Белокурые бестии
01:10 - Рынки. Спецвыпуск. Итоги торгов в Америке.
01:20 - Отдых и Туризм.
01:30 - Мир сегодня.
02:10 - Интрига дня.
03:00 - Голубой воротничок
03:10 - Рынки.
03:20 - Азбука инвестора.
03:35 - Диалог. "Конвертная" борьба.
04:10 - Рынки.
04:20 - Звездная пыль.
04:35 - Сфера интересов. Ювелирные торговые сети.
05:00 - Я и ты, и все, кого мы знаем
06:30 - Новости. Каждые 30 минут.
07:00 - Грязные делишки
07:00 - Профилактика на канале РБК.
09:00 - Суперзвезда
11:00 - Девушка на мосту
13:00 - Сердце и души
15:00 - Звездная ночь
15:00 - Новости. Каждые 30 минут.
15:00 - Профилактика на канале РБК.
15:10 - Рынки.
15:35 - Новости компаний.
15:50 - Звездная пыль.
16:10 - Рынки.
16:20 - В фокусе. Рынок мясопереработки.
17:00 - Сердцеедки
17:10 - Рынки.
17:20 - Отдых и Туризм.
17:35 - Капитал. Банковские вклады: перспективы роста?
18:15 - Рынки.
18:35 - Рынки. Спецвыпуск. Открытие торгов в Америке.
18:50 - Звездная пыль.
19:00 - Осиное гнездо
19:10 - Рынки. Спецвыпуск. Итоги торгов в России.
19:35 - Новости компаний.
19:50 - Азбука инвестора.
20:10 - Рынки.
20:35 - Рекламная пауза.
21:00 - Ирландский Квартал
21:10 - Рынки.
21:35 - Диалог. "Конвертная" борьба.
22:10 - Интрига дня.
23:00 - Мир сегодня.
23:00 - Я и ты, и все, кого мы знаем
23:35 - Зарубежный бизнес.
23:50 - Отдых и Туризм.
TV1000
РБК

Отправлено: 10:26, 16-01-2008 | #7


Аватара для Creat0R

Must AutoIt


Moderator


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

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


Timurko,
Цитата:
В таком случае получается он сортирует все подряд
Знаю, хотел подметить это, но забыл

идеалов в жизни не бывает

Попробую подправить...

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

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

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

Русское сообщество AutoIt | CreatoR's Lab | Opera AC Community


Отправлено: 00:06, 17-01-2008 | #8


Аватара для Creat0R

Must AutoIt


Moderator


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

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


Цитата:
Попробую подправить...
Подправил, пришлось добавить ещё массив и цикл, а также по понятным причинам, строки не могут оставаться на своих местах, они смещаются в зависимости от сортировки и наличия разных значении времени...

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

$String = FileRead(@ScriptDir & "\source1.txt")

Dim $aStrArray = StringSplit(StringStripCR($String), @LF)
Dim $aNewArray[1], $aChanelsArray[1][1]

For $i = 1 To $aStrArray[0]
    $sTVShow_Name = StringStripWS(StringRegExpReplace($aStrArray[$i], "((, |)\d\d:\d\d)", ""), 3)
    $aTVShow_Time = StringRegExp($aStrArray[$i], "(\d\d:\d\d)", 3)
    $iUbound = UBound($aTVShow_Time)-1

    If $iUbound < 0 Then
        $aChanelsArray[0][0] += 1
        ReDim $aChanelsArray[$aChanelsArray[0][0] + 1][2]
        $aChanelsArray[$aChanelsArray[0][0]][0] = $i
        $aChanelsArray[$aChanelsArray[0][0]][1] = $aStrArray[$i]
        ContinueLoop
    EndIf

    For $j = 0 To $iUbound
        $aNewArray[0] += 1
        ReDim $aNewArray[$aNewArray[0] + 1]

        $sSeperater = " - "
        If StringLeft($sTVShow_Name, 1) = "-" Then $sSeperater = " "
        $aNewArray[$aNewArray[0]] = StringStripWS($aTVShow_Time[$j], 3) & $sSeperater & $sTVShow_Name
    Next
Next

_ArraySort($aNewArray, 0, 1)

For $i = 1 To UBound($aChanelsArray)-1
    $aNewArray[0] += 1
    _ArrayInsert($aNewArray, $aChanelsArray[$i][0], $aChanelsArray[$i][1])
Next

_ArrayDisplay($aNewArray)
_FileWriteFromArray(@ScriptDir & "\dest1.txt", $aNewArray, 1)

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

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

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

Русское сообщество AutoIt | CreatoR's Lab | Opera AC Community

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

Отправлено: 00:38, 17-01-2008 | #9


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

Ветеран


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

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


Creat0R
Привет! Подскажи пожалуйста: есть строка вида ". 51% 4.89 KB/s", нужно получить массив со значениями 51% и 4.89 KB/s. Так же нужно учесть, что в конце исходной строки может быть любой символ после 4.89 KB/s, который нужно опустить.
Мои потуги:
Код: Выделить весь код
#include <Array.au3>

$string = ".  51%    4.89 KB/s"

$aString = StringRegExp($string, "(\d+%)(.*s)", 3)

_ArrayDisplay($aString)
Как видишь не совсем то, что нужно.

Отправлено: 10:09, 18-01-2008 | #10



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

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

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




 
Переход