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

Ответить
 • Просмотры: 9
Аватара пользователя
gregaz

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

Сообщение gregaz »

gregaz

Потому, что функция _GUICtrlListView_Create() возвращает не ID элемента, а Handle. Навскидку 2 варианта: 1) Создавать элемент ListView стандартной функцией, 2)

Код:

Код: Выделить всё

ControlHide("Test", "", "SysListView321")

.
Аватара пользователя
Angelus

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

Сообщение Angelus »

Maza Faka, не подскажеш как ты решил проблему с проигрованием звука??...а то я пытаюсь запустить какой то файл через _SoundPlay, файл то проигрывается но звук отсутствует....





Код:

Код: Выделить всё

#include 
$s = _SoundOpen ( 'D:\cd\Dwarf.wma' )
$sound = _SoundPlay ( $s, 1 )
MsgBox ( 64, '', $s )
MsgBox ( 64, '', $sound )

Первый мсбокс выдает набор символо, что как я понимаю означет успешное выполнение, второй тоже выдает 1, вроде ошибок нет, но и звука тож нет....
Аватара пользователя
Maza Faka

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

Сообщение Maza Faka »

Angelus

Привет! Когда-то я начал писать аудио плеер, но потом забросил этот проект. Почему-то некоторые файлы не проигрывались, начал копать, обнаружил, что иногда, если в пути к файлу имеются пробелы, то файл не проигрывается, но, что самое странное, если я удалял папку и создавал её снова с тем же именем, то файл проигрывался без проблем. Просмотрел библиотеку Sound.au3 и как я понял проблемы возникают при получении короткого имени (8.3) файла функцией FileGetShortName(). Проблему так и не поборол Изображение. Но если ты найдёшь решение стукни мне. Изображение
Аватара пользователя
Senka11

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

Сообщение Senka11 »

PHP код:

Код: Выделить всё

#include 



GUICreate("Computer ID system;) created by Senka!;)", 320, 200)

GUICtrlCreateLabel("Input Computer ID", 110, 10)

$okbutton = GUICtrlCreateButton("Ready", 110, 120, 60)

GUISetState(@SW_SHOW)

$nEdit = GUICtrlCreateInput ("inventory no.", -1,3,175,20)

$nEdit = GUICtrlCreateInput ("Everest no.", -1,30,175,20)



While 1

  $msg = GUIGetMsg()

Select

Case $msg = $okbutton

          MsgBox(0, "11", "You pressed OK!")

    Case $msg = $GUI_EVENT_CLOSE

      MsgBox(0, "GUI Event", "You clicked CLOSE! Exiting...")

      ExitLoop

  EndSelect

WEnd 










Ребята выручайте кто знает!!!! мне нужно чтоб информация которая вбивается в ети два поля после нажатия на кнопку ОК сохранялась в /txt файлик!!!!!!!!!





Зараннеее оч признателен!!!!!!
Аватара пользователя
HORRIBLE

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

Сообщение HORRIBLE »

Котяра
Цитата Котяра:



Замена всяким платным Best Uninstaller'ам
[Архив - Часть 3] AutoIt скрипты .:[общие вопросы]:.




Попробуй InnoSetup, очень удобный и простой в освоении, бесплатен.
Аватара пользователя
Creat0R

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

Сообщение Creat0R »

HORRIBLE,


Цитата:



filewrite(FileOpen("Data.txt",1),....



Это не корректно... нужно потом закрывать хендл (FileClose(Handle)).




Цитата:



Можно ли как нить сделать так, что при добавлениии информации в файл, как допустим в filewrite(FileOpen("Data.txt",1),"Data from $nEdit: " & $nEdit &@CRLF& "Data from $aEdit: "& $NEdit & @CRLF), можно было бы увидить информацию которая записалась в файл не прибегая к закрытию всей программы, а только потом после закрытия открывать файл куда записалась информация?



Не удалось понять вопрос Изображение - отобразить данные можно не закрывая программу, просто выводим MsgBox(64, "", FileRead("Data.txt")).




Цитата:



в чем может быть проблема?



В том что 4 это флаг для чтения файла, не записи, читаем справку для этой функции Изображение




Цитата:



как сделать поиск по этому номеру



Если я правильно понял....





Код:

Код: Выделить всё

$Number = 4
$sRead_Doc = FileRead(@ScriptDir & "\My_File.doc")
$aRead_Doc = StringSplit($sRead_Doc, @CRLF)
For $i = 1 To UBound($aRead_Doc)-1
    If StringRegExp($aRead_Doc[$i], "\A(" & $Number & ").*$") Then
        MsgBox(64, "Found", _
            StringFormat("Numer  found at the line [%d], and the founded string line is:\n\n%s", $Number, $i, $aRead_Doc[$i]))
    EndIf
Next
Аватара пользователя
Angelus

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

Сообщение Angelus »

Creat0R


Цитата Creat0R:



Установленные секунды округляются до чётного числа
[Архив - Часть 3] AutoIt скрипты .:[общие вопросы]:.




нет, баг не в этом - для FAT четное число будет всегда, просто AutoIT округляет неправильно... вот цитата из
MSDN
:
Цитата:



Not all file systems can record creation and last access time and not all file systems record them in the same manner. For example, on NT FAT, create time has a resolution of 10 milliseconds, write time has a resolution of 2 seconds, and access time has a resolution of 1 day (really, the access date). On NTFS, access time has a resolution of 1 hour. Therefore, the GetFileTime function may not return the same file time information set using the SetFileTime function. Furthermore, FAT records times on disk in local time. However, NTFS records times on disk in UTC.



вот вариант UDF, который показывает заодно и причину округления:

Код:

Код: Выделить всё

$File = "s:\Test.txt"
$hOpenFile = FileOpen($File, 2)
FileWrite($hOpenFile, "Test")
FileClose($hOpenFile)
$SetTime = '20060322083528' ; - 2
_FileSetTime($File, $SetTime)
;FileSetTime($File, $SetTime)
$GetTime = FileGetTime($File, 0, 1)
MsgBox(0, "", StringFormat("Set Time: %s \nGet Time: %s", $SetTime, $GetTime))
FileDelete($File)
Func _FileSetTime($strFile, $strTime, $intType = 0)
    Local $iY=Number(StringLeft($strTime,4))
    Local $iM=Number(StringMid($strTime,5,2))
    Local $iD=Number(StringMid($strTime,7,2))
    Local $iH=Number(StringMid($strTime,9,2))
    Local $iN=Number(StringMid($strTime,11,2))
    Local $iS=Number(StringMid($strTime,13))
    ; DOS-формат для времени
    Local $iFatDate = BitShift($iY-1980,-9) + BitShift($iM,-5) + $iD
    Local $iFatTime = BitShift($iH,-11) + BitShift($iN,-5) + $iS/2 ; вот тут косячок в хранении секунд
    ; базовые структуры
    Local $FILETIME = DllStructCreate("dword;dword")
    Local $SYSTEMTIME = DllStructCreate("ushort;ushort;ushort;ushort;ushort;ushort;ushort;ushort")
    ; туда-сюда-обратно
    Local $ret = DllCall("kernel32.dll", "int", "DosDateTimeToFileTime", "ushort", $iFatDate, "ushort", $iFatTime, "ptr", DllStructGetPtr($FILETIME))
    If $ret[0] =0 Then Return SetError(1, 1, False)
    $ret = DllCall("kernel32.dll", "int", "FileTimeToSystemTime", "ptr", DllStructGetPtr($FILETIME), "ptr", DllStructGetPtr($SYSTEMTIME))
    If $ret[0] =0 Then Return SetError(1, 2, False)
    DllStructSetData($SYSTEMTIME,7,$iS) ; пытаемся откорректировать
    $ret = DllCall("kernel32.dll", "int", "SystemTimeToFileTime", "ptr", DllStructGetPtr($SYSTEMTIME), "ptr", DllStructGetPtr($FILETIME))
    If $ret[0] =0 Then Return SetError(1, 3, False)
    ; открываем файл
    $ret = DllCall("kernel32.dll", "int", "CreateFile", _
        "str", $strFile, "dword", 0x100, "dword", 0, "ptr", 0, "dword", 3, "dword", 0, "ptr", 0 )
    If $ret[0] =0 Then Return SetError(2, 1, False)
    ; правим время и закрываем файл
    Local $hFile=$ret[0], $aSysTime[3] = [0,0,0]
    $aSysTime[$intType]=DllStructGetPtr($FILETIME)
    $ret = DllCall("kernel32.dll", "int", "SetFileTime", "int", $hFile, "ptr", $aSysTime[1], "ptr", $aSysTime[2], "ptr", $aSysTime[0])
    DllCall("kernel32.dll", "int", "CloseHandle", "int", $hFile)
    If $ret[0] =0 Then Return SetError(2, 2, False)
    Return True
EndFunc


Цитата Creat0R:



А на счёт печяти никто так и не знает решения? amel27, не подскажешь?
[Архив - Часть 3] AutoIt скрипты .:[общие вопросы]:.




может невнимательно читал, но ты про что? Изображение
Аватара пользователя
Creat0R

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

Сообщение Creat0R »

Angelus,


Цитата:



вообщем как я понял с этим пока лучше не связовать...мож в следующих версиях каданить исправят....



У меня всё отлично работает, это видимо что то в системе/файле...

И кстати, они не исправят (если и вправду есть проблема) если им об этом не
сообщить
Изображение



P.S

Можешь залить проблемный файл, попробую у себя запустить.

И какую кстати версию AutoIt'а юзаешь?
Аватара пользователя
Maza Faka

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

Сообщение Maza Faka »

amel27,
Цитата:



для FAT четное число будет всегда



Действительно, даже NirCmd не справляется.

Тогда у меня проблема намного серъёзнее чем я думал...



Дело в том, что мне нужно получать дату последнего изменения у файла в сети, и сравнивать её с датой изменения у файла на диске, если есть разница, то пытаться скачать файл (точнее юзер будет качать через диалог). После удачной закачки, я устанавливаю дату изменения файла на диске, чтобы при последующей проверки даты совпали. И получается что если дата файла в сети имеет не чётные секунды, то у меня всегда будет разница в данных Изображение




Цитата:



вот вариант UDF, который показывает заодно и причину округления:



Спасибо, для NTFS пригодится Изображение






Цитата:



ты про что?



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




Но кажется я нашёл решение:





Код:

Код: Выделить всё

Run('Rundll32.exe "' & @SystemDir & '\mshtml.dll",PrintHTML "c:\image.png"', @SystemDir)

Правда пока негде потестить, дома у меня принтер не работает. Диалог то выводится, но печатает ли, вот это и нужно проверить.



DNK_Inc,
Цитата:



как запустить из скрипта консольную команду control userpasswords2 ?





Код:

Код: Выделить всё

Run(@ComSpec & ' /c control userpasswords2', '', @SW_HIDE)

Dump,
Цитата:



Если в папке C:\123 появились файлы, то нужно отправить сообщение пользователю через netsend





Код:

Код: Выделить всё

If FileExists("C:\123\*.*") Then Run(@ComSpec & ' /c net send {имя | * | /DOMAIN[:имя] | /USERS} сообщение', '', @SW_HIDE)


Цитата:



А в идеале было бы, чтобы по почте отправлялись сообщения.



Есть неплохой UDF:
_INetSmtpMailCom
.
Аватара пользователя
Maza Faka

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

Сообщение Maza Faka »

Creat0R


Цитата:



если дата файла в сети имеет не чётные секунды, то у меня всегда будет разница в данных
[Архив - Часть 3] AutoIt скрипты .:[общие вопросы]:.




не понял в чем проблема?.. просто округляй секунды перед сравнением до четного числа


Цитата:



Нужно напечатать файл-изображение, но при печати должен быть выведен диалог Мастера печати...



можно и через Shell.Application:

Код:

Код: Выделить всё

_FileOpenPrint("D:\BUF\P1010376.JPG")
While 1
    Sleep (100)
WEnd
Func _FileOpenPrint ($sFilePath)
    Local $oShellApp = ObjCreate('shell.application')
    Local $sPath = StringRegExpReplace($sFilePath, "\\[^\\]+$", "")
    If @extended =0 Then $sPath = @WorkingDir
    Local $oPath = $oShellApp.Namespace ($sPath), $oItem
    For $oItem In $oPath.items
        If $oItem.Path = $sFilePath Then
            ConsoleWrite($oItem.Path &@CRLF)
            $oItem.InvokeVerb('&Печать')
        EndIf
    Next
EndFunc ; => _FileOpenPrint
; Эта UDF может быть полезна для просмотра поддерживаемых Verbs
Func _FileListVerbs($sFilePath)
    Local $oShellApp = ObjCreate('shell.application')
    Local $sPath = StringRegExpReplace($sFilePath, "\\[^\\]+$", "")
    If @extended =0 Then $sPath = @WorkingDir
    Local $oPath = $oShellApp.Namespace ($sPath), $oItem
    For $oItem In $oPath.items
        If $oItem.path = $sFilePath Then
            Local $oVerbs = $oItem.Verbs
            For $oVerb In $oVerbs
                ConsoleWrite($oVerb.Name &@CRLF)
            Next
        EndIf
    Next
EndFunc ; => _FileListVerbs
Ответить

Вернуться в «AutoIt»