Что нового

Как запустить nircmd

ZlojBoter

Новичок
Сообщения
55
Репутация
0
как запустить nircmd средствами автоит?
желательно с маленьким примерчиком хотя бы.
Пробовал на примере регулировки уровня громкости как-то так:
Код:
Run(@ComSpec & 'nircmd setsysvolume 0xFFFF', '', @SW_HIDE, $STDOUT_CHILD)


не выходит :(
 

AZJIO

Меценат
Меценат
Сообщения
2,879
Репутация
1,194
Код:
MsgBox(0, 'Вот это моя командная строка', @ComSpec & 'nircmd setsysvolume 0xFFFF')
 
Автор
Z

ZlojBoter

Новичок
Сообщения
55
Репутация
0
Намек понятен, извиняюсь за свою глупость ;D
правильно было так:
Код:
Run('C:\WINDOWS\nircmd.exe' & ' setsysvolume 0xFFFF', '', @SW_HIDE, $STDOUT_CHILD)


как ни странно заработало :shok:
 
Автор
Z

ZlojBoter

Новичок
Сообщения
55
Репутация
0
AZJIO в виндовс 7 функция SoundSetWaveVolume у меня не хочет работать(
пришлось искать обходные пути ;D
Код:
Run('nircmd.exe setsysvolume 0xFFFF', '', @SW_HIDE)

ага так и покрасивше, только не пойму почему оно работает, он ведь без указания пути должен лезть вроде в директорий откуда экзешник запускаешь :scratch:
 

AZJIO

Меценат
Меценат
Сообщения
2,879
Репутация
1,194
ZlojBoter [?]
он ведь без указания пути должен лезть вроде в директорий откуда экзешник запускаешь
Я бы сказал далеко не так.
1. Если запустить BAT-файл содержащий запуск au3-файла или скомпилированного, то будет искать в папке где находится BAT-файл, это первая ошибка при отсутствия указания пути, поэтому в скриптах рекомендуется всегда указывать @ScriptDir или FileChangeDir в начале скрипта.

2. Если путь не указан то файл ищется сначала в текущем каталоге, потом в каталогах перечисленых в переменной среде %Path%. Чтобы посмотреть этот список путей - "Мой компьютер" -> контекстное меню "Свойства системы" -> Вкладка "Дополнительно" -> кнопка "Переменные среды". В нижнем списке выбираешь Path и там можешь изменить каталоги которые будут просматриваться для файлов при отсутсвии указания пути к ним. Но изменять не рекомендуется.

3. Есть даже функций _WinAPI_PathFindOnPath, которая возвращает полный путь такого файла.
 

CreatoR

Must AutoIt!
Команда форума
Администратор
Сообщения
8,671
Репутация
2,481
ZlojBoter [?]
без указания пути должен лезть вроде в директорий откуда экзешник запускаешь
Сначала ищет в системной папке путях из %path%, и если не найдено, ищет в рабочей папке (@WorkingDir).
 

CreatoR

Must AutoIt!
Команда форума
Администратор
Сообщения
8,671
Репутация
2,481
AZJIO [?]
Если путь не указан то файл ищется сначала в текущем каталоге
Ты уверен?
По моим тестам как раз сначала ищет в path, а уже потом в текущем каталоге (точнее в рабочем).
 

AZJIO

Меценат
Меценат
Сообщения
2,879
Репутация
1,194
CreatoR
Положил два одиноимённых файла в каталог System32 и в текущем с таким кодом:
Код:
MsgBox(0, 'Сообщение', 'Система')

Код:
MsgBox(0, 'Сообщение', 'Текущий')


Потом выполняю:
Код:
Run('tect32.exe')
и он выдаёт "Текущий"


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

CreatoR
Сразу скажу, что запуск по F5 в SciTE выдаст "Система", потому что текущий каталог SciTE не содержит tect32.exe.
 

CreatoR

Must AutoIt!
Команда форума
Администратор
Сообщения
8,671
Репутация
2,481
AZJIO [?]
выдаёт "Текущий"
Да, странно это.
Я поместил в текущую папку notepad.exe с таким содержанием:
Код:
MsgBox(0, '', 'Текущий')

запустил:
Код:
Run('notepad')

и что ты думаешь, запустился блокнот из системы а не скрипт.
Как это объяснить?

запуск по F5 в SciTE выдаст "Система", потому что текущий каталог SciTE не содержит tect32.exe
Дело не в текущем каталоге, а в рабочем, и по F5 это каталог скрипта, т.ч дело не в этом (кстати у меня запускается как раз таки exe из папки скрипта).
 

AZJIO

Меценат
Меценат
Сообщения
2,879
Репутация
1,194
CreatoR
и что ты думаешь, запустился блокнот из системы а не скрипт.
Как это объяснить?
У меня запустился скомпилированный файл переименованный в notepad в текущем каталоге и выдал "Текущий".

Дело не в текущем каталоге, а в рабочем, и по F5 это каталог скрипта, т.ч дело не в этом (кстати у меня запускается как раз таки exe из папки скрипта).
Проверил SciTE, на удивление он текущим использует каталог скрипта. У меня Notepad++ при запуске текущим использует каталог Notepad++, ну и при запуске своих программ из BAT-файла текущий каталог был там где BAT-файл и часто это вызывало ошибку что программа не видит своих настроек и файлов лежащих рядом с пусковым, в итоге я переписал скрипты как я говорил выше.

Проверл BAT-файл, тоже выдал "Текущий". Система WinXP


http://www.lissyara.su/doc/programming/shell/
Поскольку текущий каталог обычно просматривается первым, пользователь может хранить в нем свою личную модификацию программы, которая не будет влиять на выполнение программ с таким же именем другими пользователями.

Может в Win7 изменили поведение?
 
Верх