Ru-Board.club
← Вернуться в раздел «Программы»

» AutoIT

Автор: iglezz
Дата сообщения: 08.10.2007 12:10
alur2005
можно попробовать Run("x:\install.exe", "", @SW_HIDE)
тож самое с RunWait
Автор: alur2005
Дата сообщения: 08.10.2007 12:12
iglezz

хорошо попробую
Автор: iglezz
Дата сообщения: 08.10.2007 12:15
wicked_boy

Цитата:
По какой-то причине запись вида: RunWait(@ComSpec&"/c identify"&$file&" >c:\temp.txt",) выдает ошибку что невозможно найти указанную программу,

оно не знает где искать identify, нужно прописать полный путь.
Автор: wicked_boy
Дата сообщения: 08.10.2007 12:17
с полным путем тоже не работает, а идентифи прописана в path
Автор: alur2005
Дата сообщения: 08.10.2007 12:22
iglezz


Цитата:
можно попробовать Run("x:\install.exe", "", @SW_HIDE)



не прокатило окно всеравно видно
Автор: wicked_boy
Дата сообщения: 08.10.2007 12:22
Поиск в Program Files папки imagemagik с возмложными вариациями
RunWait(@ComSpec & " /c "&"dir /B imagemagi* >"&$temp&"\temp.txt",@ProgramFilesDir,@SW_HIDE)
If Not _FileReadToArray($temp&"\temp.txt",$imagemagik) Then
MsgBox(4096,"Error", "Невозможно прочитать временный файл")
Exit
EndIf
$imagemagick=$imagemagik[1]
FileDelete($temp&"\temp.txt")

команда вида RunWite(@ComSpec&"/c "&$imagemakick"\identidy "&$file&"> c:\temp,txt" )

Тоже не работает хотя путь прописан
Автор: Madness
Дата сообщения: 08.10.2007 13:39
wicked_boy

Цитата:
команда вида RunWite(@ComSpec&"/c "&$imagemakick"\identidy "&$file&"> c:\temp,txt" )

Тоже не работает хотя путь прописан

$imagemakgick&"\identidfy
Автор: wicked_boy
Дата сообщения: 08.10.2007 14:54
В скрипте эти пути правильно указаны, это я при наборе сообщения очепятался
Автор: iglezz
Дата сообщения: 08.10.2007 20:38
wicked_boy
хотя путь и прописан, его еще в кавычки надо обернуть, т.к. в пути присутствуют пробелы.

alur2005
если видно, значит ехе всего лишь обертка над инсталлером, типа sfx-архива
тогда надо отслеживать окно и при появлении приятать
но лучше если у дистрибутива сего есть параметры для тихой установки.... что за прога, если не секрет?
Автор: wicked_boy
Дата сообщения: 08.10.2007 21:02
а поподробней можно? вродь все что с пробелами в кавычках
Автор: iglezz
Дата сообщения: 08.10.2007 21:31
wicked_boy
при выполнении
RunWait(@comspec & " /c " & $imagemagick & "\identify " & $file & "> c:\temp.txt" )
реально имеем (к примеру)
C:\Program Files\imagemagick\identify c:\1.jpg > c:\temp.txt
в результате будет выполнена команда C:\Program с параметрами Files\imagemagick\identify c:\1.jpg > c:\temp.txt

теперь сделаем правильно, с кавычками
RunWait(@comspec & " /c """ & $imagemagick & "\identify"" " & $file & "> c:\temp.txt" )
в результате будет выполнена команда C:\Program Files\imagemagick\identify с параметрами c:\1.jpg > c:\temp.txt
Автор: NIKZZZZ
Дата сообщения: 09.10.2007 09:07

Цитата:
RunWait(@comspec & " /c """ & $imagemagick & "\identify"" " & $file & "> c:\temp.txt" )

Удобнее использовать одиночные кавычки:
RunWait(@comspec & ' /c "' & $imagemagick & '\identify" ' & $file & '> c:\temp.txt' )


Автор: alur2005
Дата сообщения: 09.10.2007 10:25
iglezz

Программа DRWeb 4.44
Автор: euheny
Дата сообщения: 09.10.2007 13:02
Maza Faka

Цитата:
А AutoIt не предназначен для этого.

Я так не думаю - всё зависит от знаний, эрудиции ну и конечно желания разработчика



несколько вопросиков :

как получают из имени файла путь к нему ?

как узнать какое окно породил процесс ?

есть ли способ корректного завершения процесса ?
Автор: Kauffman
Дата сообщения: 09.10.2007 15:02
В Input'е событие измения текста в нем происходит только после того, как объект теряет фокус ( может чё-то ещё).
А как сделать, чтобы событие обрабатывалось после ввода каждого символа?
Ещё дайте кто-нить ссылку где найти справочник по WinAPI для AutoIt с описаниями функций и сообщений
Автор: ViSiToR
Дата сообщения: 09.10.2007 15:08
euheny

Цитата:
Я так не думаю - всё зависит от знаний, эрудиции ну и конечно желания разработчика

Это правда! - Но имелось в виду изначальная цель AutoIt'а - «Автоматизирование рутинных действии».

Я на AutoIt делал(ю) такие вещи, о которых и не мечтал ранее (познакомившись с AutoIt).
Всё конечно благодаря некоторым умным людям



Цитата:
как получают из имени файла путь к нему ?



Код: StringRegExpReplace($sPath, '\\[^\\]*$', '')
Автор: Kauffman
Дата сообщения: 09.10.2007 15:39
Спасибо!
Автор: ViSiToR
Дата сообщения: 09.10.2007 16:04
Kauffman

Цитата:
где найти справочник по WinAPI для AutoIt с описаниями функций и сообщений

В шапке

Добавлено:
А вот похожий скрипт для предотвращения ввода не цифр в Input-поле:


Код: #include <GuiConstants.au3>

Global Const $WM_COMMAND = 0x0111
Global $GUIOldPos[2]

$GUI = GUICreate("<Only Numbers> in Input Demo GUI", 300, 100)

$Input = GUICtrlCreateInput("", 20, 40, 260, 20)
$Exit = GUICtrlCreateButton("Exit", 20, 70, 60, 20)

GUISetState()
GUIRegisterMsg($WM_COMMAND, "MY_WM_COMMAND")

While 1
Switch GUIGetMsg()
Case $GUI_EVENT_CLOSE, $Exit
ExitLoop
Case Else

CheckToolTip()
EndSwitch
WEnd

Func
CheckToolTip()
Local $GetCurInfo = GUIGetCursorInfo($GUI)
Local $GuiGetPos = WinGetPos($GUI)
If $GetCurInfo[2] = 1 Or $GUIOldPos[0] <> $GuiGetPos[0] Or $GUIOldPos[1] <> $GuiGetPos[1] Then
ToolTip("")
$GUIOldPos = $GuiGetPos
EndIf
EndFunc

Func
_Input_Changed()
ToolTip("")
Local $ReadInput = GUICtrlRead($Input)
If StringRegExp($ReadInput, '[^0-9]') Then
GUICtrlSetData($Input, StringRegExpReplace($ReadInput, '[^0-9]', ''))

Local $GuiGetPos = WinGetPos($GUI)
Local $XPos = $GuiGetPos[0] + 280
Local $YPos = $GuiGetPos[1] + 80

ToolTip("Here only numbers are allowed", $XPos, $YPos, "Not allowed symbol", 3, 1)
DllCall("user32.dll", "int", "MessageBeep", "int", 0x0)
EndIf
EndFunc
;==>_Input_Changed

Func MY_WM_COMMAND($hWnd, $msg, $wParam, $lParam)
Local $nNotifyCode = BitShift($wParam, 16)
Local $nID = BitAND($wParam, 0xFFFF)
Local Const $EN_CHANGE = 0x300
Local Const $EN_SETFOCUS = 0x100

Switch $nID
Case $Input
Switch $nNotifyCode
Case $EN_CHANGE
_Input_Changed()
Case $EN_SETFOCUS
ToolTip("")
EndSwitch
EndSwitch
Return $GUI_RUNDEFMSG
EndFunc ;==>MY_WM_COMMAND
Автор: euheny
Дата сообщения: 09.10.2007 20:09
ViSiToR
а мог бы ты расжевать это - \\[^\\]*$

Цитата:
если приложение не имеет окон, тогда ProcessClose().

так вот я про то что taskkill предоставляет два варианта

и по-поводу доступа к дискам
видимо надо сделать что-то типа

FileOpenShare ( "filename", mode ) - совместный доступ
где "filename" может принимать вид типа \\?\Device\Harddisk1\Partition0

FileRead(Write) ( filehandle или "filename" [, count] [,seek] [,block]) т.е. определить место



Автор: euheny
Дата сообщения: 10.10.2007 00:13

Цитата:
а мог бы ты расжевать это - \\[^\\]*$


уже не надо - просто в справке $ не нашел
Автор: Kauffman
Дата сообщения: 10.10.2007 16:34
ViSiToR
Код работает только для первой формы, а если использовать контрол со спрятанной формы вываливается еррор типа "Была использована переменная без её декларации".
Что делать?

Добавлено:
Всё, понял!
Надо было прописывать GUIRegisterMsg($WM_COMMAND, "MY_WM_COMMAND") после создания формы, а не до
Автор: elchupakabra
Дата сообщения: 12.10.2007 11:49
Помогите пожалуйста, если не затруднит с таким вопросом:
Надо получить собственный ip и вставить его в xml-файл в фиксированный участок текста. Ну со 2й частью я наверное справлюсь (хотя хотелось бы послушать спецов), а вот ip в буфер - никак.
Заранее большое спасибо.
Автор: ViSiToR
Дата сообщения: 12.10.2007 13:28
elchupakabra

Цитата:
получить собственный ip и вставить его в xml-файл в фиксированный участок текста


Код:
;Получаем IP
$My_IP = @IPAddress1

;Содержание файла (можно вместо строки подставить FileRead("File.xml") )
$Xml_Content = "<ip address></ip address>"

;Вставляем IP после между значениями <ip address></ip address>
$Xml_Content = StringReplace($Xml_Content, "<ip address>", "<ip address>" & $My_IP)

MsgBox(64, "Результат", "Новое содержание XML файла:" & @LF & @LF & $Xml_Content)
Автор: NIKZZZZ
Дата сообщения: 12.10.2007 13:32
elchupakabra

Цитата:
Надо получить собственный ip


Код: InetGet("http://www.netikus.net/show_ip.html", "C:\ip.txt")
$f=FileOpen("C:\ip.txt",0)
$ip=FileRead($f)
FileClose($f)
MsgBox(4096,"My IP",$ip)
Автор: ViSiToR
Дата сообщения: 12.10.2007 13:50
NIKZZZZ
Тоже самое можно получить по @IPAddress2
Автор: elchupakabra
Дата сообщения: 12.10.2007 13:55
ViSiToR
NIKZZZZ
Спасибо большое
Автор: NIKZZZZ
Дата сообщения: 12.10.2007 14:13
ViSiToR

Цитата:
Тоже самое можно получить по @IPAddress2

Не всегда. Зависит от того, как организован выход в инет.
Если в сетке стоит маршрутизатор, внешний ip увидеть можно только подобным методом.


Автор: elchupakabra
Дата сообщения: 12.10.2007 15:01
ViSiToR
гм... наверное не совсем то что ожидал...
скорее всего я плохо объяснил...
ну в буфер ip - это уже потнятно...
потом задача в некий файл (Favorites.xml) в одну из его строк ( кусок строки RawOne="" RawTwo="" RawThree="" RawFour="" RawFive="" Mode="1" IP=""/> ) в самую концовку между кавычками (IP=""/>) поместить этот самый IP из буфера и сохранить изменённый xml-файл...
Автор: ViSiToR
Дата сообщения: 12.10.2007 15:38
NIKZZZZ

Цитата:
Зависит от того, как организован выход в инет

От этого также зависит команда InetGet (с прокси к примеру не справится без дополнительных примочек).

elchupakabra

Цитата:
в самую концовку между кавычками (IP=""/>) поместить этот самый IP из буфера и сохранить изменённый xml-файл...


Пример (буфер тут не нужен):


Код: ;Получаем IP
$My_IP = @IPAddress2

;Определяем путь к XML-файл
$XML_FilePath = @ScriptDir & "\Favorites.xml"

;Получаем содержание файла
$Xml_Content = FileRead($XML_FilePath)

;Вставляем IP между значениями <IP=" и "/>
$Xml_Content = StringRegExpReplace($Xml_Content, 'Mode="(.*)" IP=".*"', 'Mode="\1" IP="' & $My_IP & '"')

;Пишем файл поновой (с замененой строкой)...
$hFile = FileOpen($XML_FilePath, 2)
FileWrite($hFile, $Xml_Content)
FileClose($hFile)
Автор: euheny
Дата сообщения: 12.10.2007 21:19
ViSiToR
а что ты думаеш по моим предложениям по поводу процессов и дисковых операций ?
Или разработчикам AutoIt не до наших проблем

Страницы: 1234567891011121314151617181920212223242526272829303132333435363738394041424344454647484950515253545556575859606162636465666768697071727374757677787980818283848586878889909192

Предыдущая тема: Quintura Search


Форум Ru-Board.club — поднят 15-09-2016 числа. Цель - сохранить наследие старого Ru-Board, истории становления российского интернета. Сделано для людей.