Показать полную графическую версию : [архив - Часть 2] AutoIt скрипты
gregaz,
Func WM_NOTIFY должна определить какое окно послало вызов или нужна отдельная ф-я ?
В этой функции нужно проверять $wParam, оно будет ровняться идентиикатору ListView, BitAND($wParam, 0xFFFF) вернёт идентификатор конкретного элемента (ListViewItem).
А вот еще вопросец: А если в телепередаче более двух обозначений времени а то и вовсе все 10 как на канале РБК. То тут как быть? Например
05:05 Азбука инвестора.
05:10, 18:07 Афиша.
05:20, 03:07 Autonews.
05:35 Рынки. Глобальный взгляд. Российский рынок акций: уроки 2007 года.
06:05 Сфера интересов. Сериальная киноэкономика.
06:35, 10:35, 14:35 Зарубежный бизнес.
06:50, 07:05, 10:50, 13:20, 14:50, 15:07, 16:50 Отдых и Туризм.
07:00-06:30 Новости. Каждые 30 минут.
07:10, 15:10, 19:20 Азбука инвестора
07:20 В фокусе. Крупные ресторанные сети.
08:05 Капитал. Опцион для независимого директора.
08:35 Сфера интересов. Сетевые продажи.
09:05, 10:05, 11:05, 12:05, 13:05, 14:05, 15:05, 16:05, 17:05, 18:05, 19:05, 20:05, 21:05, 22:05, 23:05, 00:05, 01:05, 02:05, 03:05, 04:05 Рынки.
Timurko,
если в телепередаче более двух обозначений времени а то и вовсе все 10 как на канале РБК. То тут как быть?
Вот вариант по короче, работает для любых совпадении в строке:
#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 = StringRegExpReplace($aStrArray[$i], "((, |)\d\d:\d\d)", "")
$aTVShow_Time = StringRegExp($aStrArray[$i], "(\d\d:\d\d)", 3)
For $j = 0 To UBound($aTVShow_Time)-1
$aNewArray[0] += 1
ReDim $aNewArray[$aNewArray[0] + 1]
$aNewArray[$aNewArray[0]] = $aTVShow_Time[$j] & " " & $sTVShow_Name
Next
Next
_ArraySort($aNewArray, 0, 1)
_ArrayDisplay($aNewArray)
_FileWriteFromArray(@ScriptDir & "\dest1.txt", $aNewArray, 1)
Спасибо я еще немного подправил, так чтобы лишние пробелы уберались и время выглядило такого формата \d\d (передача)
#include <Array.au3>
#include <File.au3>
$file = "C:\titles\programma\source1.txt"
$String = FileRead($file)
Dim $aStrArray = StringSplit(StringStripCR($String), @LF)
Dim $aNewArray[1]
For $i = 1 To $aStrArray[0]
$sTVShow_Name = StringRegExpReplace($aStrArray[$i], "((, |)\d\d:\d\d)", "")
$aTVShow_Time = StringRegExp($aStrArray[$i], "(\d\d:\d\d)", 3)
For $j = 0 To UBound($aTVShow_Time)-1
$aNewArray[0] += 1
ReDim $aNewArray[$aNewArray[0] + 1]
$aNewArray[$aNewArray[0]] = $aTVShow_Time[$j] & " " & $sTVShow_Name
Next
Next
_ArraySort($aNewArray, 0, 1)
For $i = 1 To $aNewArray[0]
$aNewArray[$i] = StringRegExpReplace($aNewArray[$i], '\s(\s+)', ' ')
$aNewArray[$i] = StringRegExpReplace($aNewArray[$i], '(\d\d) - ', '\1 ')
Next
_FileWriteFromArray(@ScriptDir & "\dest1.txt", $aNewArray, 1)
хм... А вот если в файле с программой присутствуют названия каналов то они тут просто удаляются...
Я вроде сделал переменную RegExp которая определяет что в данной строке находится именно канал...
$chanels = '^TV1000$|^РБК$|^Дамский клуб$|^Детский мир$|^Школьник ТВ$|^Eurosport2$|^Eurosport$|^Explorer$|^Discovery$|^Animal Planet$|^Viasat History$|^365$|^КиноСоюз$|^Наше Новое Кино$|^Дом Кино$|^Авто плюс$|^Боец$|^Звезда$|^MTV-Россия$|^Муз ТВ$|^STYLE$|^Теленяня$'
Теперь получается уже надо юзать двумерный массив? Хм...
Вот пример текста программы
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 Рынки. Спецвыпуск. Итоги торгов в Америке.
kalikanzaros
21-01-2008, 09:58
кто подскажет почему скрипт, после удаления ярлыка из автозагрузки, перед самым ребутом, создает его снова???
;Определение буквы виртуального CDROM-а (67 - ASCII-код символа "C", 90 - "Z")
;(в качестве маркерного файла используем "wpi.hta")
$i = 67
While FileExists( Chr($i) & ':\WPI\WPI.hta' )=0 AND $i<=90
$i = $i + 1
WEnd
Sleep ( 500 )
Global $set_reg1=Chr($i) & ':\$OEM$\noanimate.reg', $set_reg2=Chr($i) & ':\$OEM$\sound.reg'
;если ярлык сущ-ет то, скрипт выполняет для чего он собственно и задумывался
If FileExists ( @StartupCommonDir & '\Lastep.lnk' ) Then
;предотвращение возможности множественного запуска скрипта
If WinExists(@ScriptName) Then Exit
AutoItWinSetTitle(@ScriptName)
;Отображать текущую строку сценария с помощью индикатора системной панели в режиме отладки.
AutoItSetOption("TrayIconDebug", 1)
AutoItSetOption("SendKeyDelay", 20)
Sleep ( 5000 )
;создаем ярлык на запуск wpi на рабочем столе
FileCreateShortcut ( Chr($i) & ':\WPI\WPI.hta', @DesktopCommonDir & '\wpi.lnk', Chr($i) & ':\WPI', '' ,'Windows Post Install', Chr($i) & ':\WPI\WPI.ICO')
Sleep ( 5000 )
;удаляем ярлык из автозагрузки
FileDelete ( @StartupCommonDir & '\Lastep.lnk' )
Sleep ( 20000 )
; переносим ярлыки в старт меню
FileMove ( @ProgramsDir & '\Internet Explorer.lnk', @ProgramsCommonDir & '\network\', 9 )
FileMove ( @ProgramsDir & '\Outlook Express.lnk', @ProgramsCommonDir & '\network\', 9 )
DirRemove( @ProgramsDir & '\Accessories\Entertainment' , 1 )
Sleep ( 10000 )
;загружаем "проблемные" ключи реестра
RunWait ('regedit /S ' & $set_reg1, '', @SW_HIDE )
RunWait ('regedit /S ' & $set_reg2, '', @SW_HIDE )
; перезагружаем компьютер
Sleep ( 10000 )
Shutdown(6)
EndIf
; если ярлык в автозапуске не сущ-ет - создаем его и выходим
FileCreateShortcut ( Chr($i) & ':\$OEM$\lastep.exe',@StartupCommonDir & '\Lastep.lnk', @StartupCommonDir & '\' )
Exit
© OSzone.net 2001-2012
vBulletin v3.6.4, Copyright ©2000-2025, Jelsoft Enterprises Ltd.