Что нового

Открыть фаил в консольной программе

maxd2007

Новичок
Сообщения
89
Репутация
0
Столкнулся с такой проблемой, пишу скрипт
Код:
#include <Array.au3>
#include <IE.au3>
#include <MsgBoxConstants.au3>
#include <GuiConstantsEx.au3>

$sPath = RegRead("HKEY_LOCAL_MACHINE\SOFTWARE\Wow6432Node\Garmin\Express", "InstallLocation") ; найти путь к GarminExpress
if @error <> 0 then; проверяем установлен ли GarminExpress
MsgBox(0, "Предупреждение", "У Вас не установлен GarminExpress. Установите GarminExpress и продолжите обновление")
ShellExecute('http://software.garmin.com/ru-RU/express.html')
Exit
EndIf
Local $aArray = DriveGetDrive("REMOVABLE") ; ищет все съемные диски и записывает в массив
Local $iRows = UBound($aArray, 1) ; считает сколько элементов в массиве
If $iRows - 1 = -1 Then ; Если неподключен ни один съемный диск то выдавать сообщение и выходит из программы
MsgBox($MB_SYSTEMMODAL, "Внимание!!!", "Невставлена карта памяти! Вставте карту памяти!")
Exit
EndIf
_Main()
Func _Main()
Local $idLabel_1, $idCombo_2, $idButton1, $iMsg, $sData
GUICreate("Garmin", 191, 157, (@DesktopWidth - 191) / 2, (@DesktopHeight - 157) / 2) ; основное окно
GUICtrlCreateLabel("Выберети диск:", 30, 40, 131, 21, 0x1000) ; нередактируемая строка
$idCombo_2 = GUICtrlCreateCombo("", 30, 60, 130, 21) ; выпадающее окно с элементами выбора
GUICtrlSetData($idCombo_2, _ArrayToString($aArray, "|", 1, $iRows - 1) ) ; прописывает в выпадающее окно необходимые элементы : _ArrayToString (переводит массив в строку),  $aArray - массив который будем переводить, "|" - какой знак будет разделять каждый элемент массива, 1 - с какого индекса начинать, $iRows - 1 - до какого индекса идти
$idButton1 = GUICtrlCreateButton("Подтвердить", 30, 90, 130, 20) ; активная кнопка "Подтвердить"
GUISetState()
While 1
$iMsg = GUIGetMsg()
Select
Case $iMsg = $GUI_EVENT_CLOSE
ExitLoop
Case $iMsg = $idButton1
$sData = GUICtrlRead($idCombo_2) ; в $sData записывается то что мы выбрали в выпадающем окне
DirCreate ( $sData & "Garmin" ) ; содается папка по пути который мы выбрали в выпадающем окне
RunWait ($sData & "\Garmin\gmt.exe \Garmin\gmapsupp.IMG")
Exit
EndSelect
WEnd
Exit
EndFunc   ;==>_Main

И вот в этой строке
Код:
RunWait ($sData & "\Garmin\gmt.exe \Garmin\gmapsupp.IMG")

У меня затык, мне нужно что бы gmapsupp.IMG открывался в gmt.exe, если я делаю так
Код:
RunWait ("\Garmin\gmt.exe \Garmin\gmapsupp.IMG")

То все работает, но скрипт должен лежать рядом с папкой Garmin, что мне не подходит т.к. путь будет постоянно меняться, в справке ответа не нашел, подскажите что я неправильно делаю?
 
Автор
M

maxd2007

Новичок
Сообщения
89
Репутация
0
Все разобрался, надо было так:
Код:
RunWait ($sData & "./Garmin/gmt.exe ./Garmin/gmapsupp.IMG")



Добавлено:
Сообщение автоматически объединено:

Проблема так решилась на Windows 8, а на windows 10 она осталась =( есть решение данной проблемы?
 

inververs

AutoIT Гуру
Сообщения
2,135
Репутация
465
Может все таки \ разделитель правильнее?
Покажите что показывает
Код:
MsgBox(0,'',$sData & './Garmin/gmt.exe ./Garmin/gmapsupp.IMG')
, а то мне не понятно. Вы здесь создаете папку
Код:
DirCreate ( $sData & "Garmin" ) ; содается папка по пути который мы выбрали в выпадающем окне
а затем запускаете оттуда программу?
 
Автор
M

maxd2007

Новичок
Сообщения
89
Репутация
0
Вы наверное правы, сработало у меня случайно потому что я скрипт опять запустил с карточки, если запускаю с компа то все та же ошибка =(
строка:
Код:
MsgBox(0,'',$sData & './Garmin/gmt.exe ./Garmin/gmapsupp.IMG')

выдает: j:./Garmin/gmt.exe ./Garmin/gmapsupp.IMG
C папкой это я лоханулся, там между ними закоменчены:
Код:
FileMove (".\RUS.xml", $sData & "Garmin\GarminDevice.xml",1 ) ; перемещаем фаил с переименованием
FileMove (".\gimgunlock.exe", $sData & "Garmin\gmt.exe",1 ) ; перемещаем фаил

Но на карте памяти папка garmin есть и эти фаилы там лежат, просто процесc копирования долгий поэтому я их закоментил, и когда сюда копировал убрал закоменченые строки =)
 
A

Alofa

Гость
Код:
RunWait ($sData & '\Garmin\gmt.exe ' & $sData & '\Garmin\gmapsupp.IMG')
 
Автор
M

maxd2007

Новичок
Сообщения
89
Репутация
0
Так пробовал, но в таком случае даже черное окно с надписью "Analyzing file. Can't open \Garmin\gmapsupp.img" не вылезает


Добавлено:
Сообщение автоматически объединено:

Всем огромное СПАСИБО! Особенно "Alofa", Ваш вариант был верный просто при копировании пропал пробел после ".exe" фаила и я этого не заметил, но благодаря "inververs" c его предложением MsgBox до меня дошло где ошибка. ВСЕМ ОГРОМНОЕ СПАСИБО!!! :laugh:
 
A

Alofa

Гость
Судя по этому
maxd2007 сказал(а):
Код:
FileMove (".\RUS.xml", $sData & "Garmin\GarminDevice.xml",1 ) ; перемещаем фаил с переименованием
FileMove (".\gimgunlock.exe", $sData & "Garmin\gmt.exe",1 ) ; перемещаем фаил
Вам нужно писать так:
Код:
RunWait($sData & 'Garmin\gmt.exe ' & $sData & 'Garmin\gmapsupp.IMG')
; Или может даже так:
RunWait($sData & 'Garmin\gmt.exe gmapsupp.IMG')
 
Автор
M

maxd2007

Новичок
Сообщения
89
Репутация
0
Первый вариант работает.
Второй вариант у меня не работал, может я опять, что то упустил =(.
 
A

Alofa

Гость
Skif_off сказал(а):
Так разве не нужно добавить рабочий каталог? Или FileChangeDir()?
Да, скорее всего. Но тогда логичнее использовать первый вариант.
Честно говоря не знаю синтаксис ключей данной программы, но некоторые из подобных способны принимать относительные пути, поэтому и написал на шару.
 
Верх