Я заметил, что определенная программа работает особым образом при отправке аргумента.
Единственный способ отправить аргумент — нажать «Пуск -> Выполнить...» и ввести:
[programname]:[argument]
например (что все равно не работает)
notepad:textfile.txt
Если я попытаюсь сделать то же самое из окна командной строки, это не сработает. Также не сработает и "programname argument". Я должен иметь возможность открыть программу с аргументом с веб-сайта (с помощью оболочки Wscript, что уже другая история), но это, вероятно, не сработает.
Кто-нибудь знает, как работает этот странный синтаксис с двоеточием?
ОБНОВЛЕНИЕ: Как и просили, вот реальный пример:
AGS:pref.serv01.com(ARG1:ARG2)
Это точный синтаксис, который приводит к тому, что программа открывает конкретную информацию для ARG1 и ARG2. AGS — это просто название программы, которая является обычной программой Windows.
решение1
TheБегать...диалог не ограничивается локальными файлами – он также принимает все схемы URI 1 зарегистрированв системе Например, вы можете открыть http:
или ftp:
адреса в нем. Возможно, что какая-то программа просто зарегистрировала AGS:
схему URI для этой цели. (Весь URI передается без изменений в программу, которая может применять собственные правила синтаксического анализа.)
Взгляните на HKEY_CLASSES_ROOT\AGS
раздел в редакторе реестра и посмотрите, говорит ли он что-нибудь о вашей программе, есть ли в нем параметр с именем « URL Protocol
» и shell\open\command
на что указывает этот подраздел.
1 Windows называет их «URL-протоколами», что не совсем верно.
решение2
Символ двоеточия используется для обозначенияАльтернативные потоки данныхв NTFS. Возможно, ваша программа имеет скрытые потоки данных с исполняемыми файлами.
Я думаю, что это невозможно сделать из аргумента командной строки, потому что парсер оболочки запутается. Однако диалог "запустить" гораздо более либерален.
Если это так, вы можете попробовать извлечь его просто:
c:> type program:argument > output