Имеется редактор MQ5 файлов. При открытии файла с расширением .mq5 средствами ОС, редактор запускается с параметрами /dde и ОС передаёт ему по DDE комадну на открытие файла. Команда выглядит так [open("%1")]. Вместо %1 подставляется путь к файлу. Проблема в том, что редактор успешно открывает файл, когда он открывается средствами ОС. А вот когда редактор получает аналогичную команду из программы (см. схему), файл в редактор не загружается. Может кто уже сталкивался с такой ситуацией? Как решить проблему?
Схема которая посылает команду редактору.
code_22310.txt
Программа, которой пользовался для перехвата команд, посылаемых операционной системой при открытии файла. Просто надо заменить metaeditor.exe скомпилированным файлом.
code_22311.txt
Сам редактор прикрепил к сообщению
Этот топик читают: Гость
Ответов: 176
Рейтинг: 12
|
|||
карма: 0 |
| ||
файлы: 3 | metaeditor.zip [997.7KB] [419], code_22310.txt [1KB] [461], code_22311.txt [776B] [469] |
Разработчик
Ответов: 26113
Рейтинг: 2126
|
|||
А где взять файл Project1.mq5 Желательно бы его иметь для чистоты эксперимента
|
|||
карма: 22 |
|
Ответов: 176
Рейтинг: 12
|
|||
nesco, это обычный текстовый файл. Прикрепил его здесь.
Хочу ещё заметить, что редактор запоминает, какие файлы были в нём открыты, и автоматически открывает их при повторном запуске. Так, что нужно закрывать сначала внутреннее окошко редактора с открытым файлом, а потом сам редактор, во время экспериментов, перед посылкой команд по dde. |
|||
карма: 0 |
| ||
файлы: 1 | mq5.zip [346B] [300] |
Разработчик
Ответов: 26113
Рейтинг: 2126
|
|||
Откуда взято, что имя сервиса должно быть именно METAED~1 и подавать надо именно команду, а не что-либо еще
------------ Дoбавленo в 03.00: Разобрался, проверил, получил тоже toropchin писал(а): файл в редактор не загружаетсяпри эмуляции передачи команды. С чем это связано, я пока так и не понял. К тому же, в результате экспериментов, угробил у себя расширение, теперь не могу прописать его по новой, откликаться не хочет больше на DDE при запуске расширения А другого способа нет их открывать |
|||
карма: 22 |
|
Ответов: 176
Рейтинг: 12
|
|||
nesco писал(а): Откуда взято, что имя сервиса должно быть именно METAED~1 и подавать надо именно команду, а не что-либо ещеЕсли установлен Windows XP, то команды запуска можно посмотреть так: сервис >> свойства папки >> типы файлов >> ищем в списке mq5 >> нажимаем "дополнительно" >> выбираем в списке команду open и жмём "изменить". Если установлена виста или семёрка, то надо лезть в реестр. Сама привязка к расширению хранится здесь: HKEY_CLASSES_ROOT.mq5. Команды open со всеми параметрами находится вот в этом ключе: HKEY_CLASSES_ROOTMQL5.Fileshellopen. nesco писал(а): К тому же, в результате экспериментов, угробил у себя расширение, теперь не могу прописать его по новой, откликаться не хочет больше на DDE при запуске расширенияЕсли удалить HKEY_CLASSES_ROOT.mq5 и HKEY_CLASSES_ROOTMQL5.File, то должно получиться восстановить привязку к расширениям при следующем запуске редактора. nesco писал(а): А другого способа нет их открыватьМожно ещё открывать файл в связанной с ним программе. Вот так:
------------ Дoбавленo в 06.08: Попробовал открыть файл в ворде. У меня стоит офис 2007. Посмотрел ключи запуска вот тут: HKEY_CLASSES_ROOTWord.Document.12shellOpen
Ворд успешно открыл файл. |
|||
карма: 0 |
|
Разработчик
Ответов: 26113
Рейтинг: 2126
|
|||
toropchin писал(а): Ворд успешно открыл файлДействительно, открыл. В таком случае, возможно, команда должна быть другой -- Ворд отрабатывает свою команду, значит, принцип управления работает, а вот metaeditor -- нет |
|||
карма: 22 |
|
Ответов: 176
Рейтинг: 12
|
|||
Команда прописана в реестре. Да и при отлове команды, посылаемой операционкой она остаётся той же, что в реестре. Написал разраобтчикам metaeditor'a. Может пояснять ситуацию...
|
|||
карма: 0 |
|
Разработчик
Ответов: 26113
Рейтинг: 2126
|
|||
Сижу, юзаю, никаких эмоций, кроме поднятия прогой DDE-сервера. А Ворд -- без проблем, странно это как-то
|
|||
карма: 22 |
|
Ответов: 176
Рейтинг: 12
|
|||
Да и другие программы запросто открывают файлы таким методом. Точно, странно
|
|||
карма: 0 |
|
Разработчик
Ответов: 26113
Рейтинг: 2126
|
|||
toropchin писал(а): Да и другие программы запросто открывают файлы таким методомЧе-то меня стали сомнения терзать, что это прога сама DDE-сервер поднимает, а не система, а прога тупо забила на наши команды, только на системные откликется, может, система сама декодирует эти команды, а в прогу передает какой-то другой параметр Тут действительно надо разработчиков трусить |
|||
карма: 22 |
|
Ответов: 176
Рейтинг: 12
|
|||
Разработчики не очень-то шевелятся отвечать.
|
|||
карма: 0 |
|
Разработчик
Ответов: 26113
Рейтинг: 2126
|
|||
Проверил файловым монитором -- при запуске из системы передается имя запускаемого файла, при запуске эмулятора -- нет.
|
|||
карма: 22 |
|
Ответов: 176
Рейтинг: 12
|
|||
Что за файловый монитор?
|
|||
карма: 0 |
|
Разработчик
Ответов: 26113
Рейтинг: 2126
|
|||
toropchin писал(а): Что за файловый монитор?FileMon.exe, но нормально работает только под XP, под Семеркой глючит нещадно. У меня старая версия вот с этого сайта --http://technet.microsoft.com/ru-ru/sysinternals. Вроде, ее сейчас заменили одной -- Process Monitor http://technet.microsoft.com/ru-ru/sysinternals/bb896645 |
|||
карма: 22 |
|
Ответов: 176
Рейтинг: 12
|
|||
Причём не помогает загрузить файл даже такая функция:
|
|||
карма: 0 |
|