Форум программистов «Весельчак У»
  *
Добро пожаловать, Гость. Пожалуйста, войдите или зарегистрируйтесь.
Вам не пришло письмо с кодом активации?

  • Рекомендуем проверить настройки временной зоны в вашем профиле (страница "Внешний вид форума", пункт "Часовой пояс:").
  • У нас больше нет рассылок. Если вам приходят письма от наших бывших рассылок mail.ru и subscribe.ru, то знайте, что это не мы рассылаем.
   Начало  
Наши сайты
Помощь Поиск Календарь Почта Войти Регистрация  
 
Страниц: [1]   Вниз
  Печать  
Автор Тема: Проблема с ассоциацией файлов  (Прочитано 9770 раз)
0 Пользователей и 1 Гость смотрят эту тему.
2151985
Интересующийся

ru
Offline Offline
Пол: Мужской

« : 20-05-2010 10:12 » 

Здравствуйте!

Нужно, чтобы по двойному щелчку в проводнике открывалась моя программа.

Сделал так:

При запуске программы, делаю парсинг командной строки, получаю путь к файлу, но не могу его открыть, fopen возвращает NULL.

Ассоциацию расширения с программой сделал. Программа MFC.
Записан
Алексей++
глобальный и пушистый
Глобальный модератор

ru
Offline Offline
Сообщений: 13


WWW
« Ответ #1 : 20-05-2010 10:18 » 

код в студию
Записан

2151985
Интересующийся

ru
Offline Offline
Пол: Мужской

« Ответ #2 : 20-05-2010 12:05 » 

Код:

LPTSTR sCmdLine = GetCommandLine();
CString Com_Line=Parse_Com_Line_Fun(sCmdLine);

FILE*m_hFile;
if((m_hFile = fopen(Com_Line,"r"))==NULL)
{

AfxMessageBox("Ошибка 0200: Произошла ошибка при открытии файла: "+Com_Line);
return -1;
}


Записан
Антон (LogRus)
Глобальный модератор

ru
Offline Offline
Пол: Мужской
Внимание! Люблю сахар в кубиках!


WWW
« Ответ #3 : 20-05-2010 12:14 » 

путь абсолютный или относительный?
Записан

Странно всё это....
2151985
Интересующийся

ru
Offline Offline
Пол: Мужской

« Ответ #4 : 20-05-2010 12:23 » 

Com_Line содержит полный путь к файлу.
Записан
Вад
Модератор

ru
Offline Offline
Пол: Мужской

« Ответ #5 : 20-05-2010 12:46 » 

Какое значение имеет errno после вызова fopen?
Возможно также, что проблемы с юникодом. Если используется юникод - надо _wfopen (универсально - макрос _tfopen)
Записан
2151985
Интересующийся

ru
Offline Offline
Пол: Мужской

« Ответ #6 : 20-05-2010 13:33 » 

errno - возвращает 22.

Юникод в проекте не используется.
Записан
Sla
Команда клуба

ua
Offline Offline
Пол: Мужской

WWW
« Ответ #7 : 20-05-2010 13:41 » 

интересно,
программа <файл>
работает?

а с указанием полного пути?
Записан

Мы все учились понемногу... Чему-нибудь и как-нибудь.
2151985
Интересующийся

ru
Offline Offline
Пол: Мужской

« Ответ #8 : 20-05-2010 14:08 » 

Если просто открывать файл, то работает.
Записан
Вад
Модератор

ru
Offline Offline
Пол: Мужской

« Ответ #9 : 20-05-2010 14:17 » 

Это надо под отладчиком смотреть. 22 ошибка - EINVAL - означает, что что-то не так либо с именем файла, либо с режимом. Раз юникод не используется, остаётся имя файла.
Записан
Sla
Команда клуба

ua
Offline Offline
Пол: Мужской

WWW
« Ответ #10 : 20-05-2010 14:18 » 

просто это как?

программа <файл> из папки где находится файл
или
полный путь к <программе> <полный путь к файлу>

для отладки ведь можно и вывести и показать Com_Line
Записан

Мы все учились понемногу... Чему-нибудь и как-нибудь.
RXL
Технический
Администратор

ru
Offline Offline
Пол: Мужской

WWW
« Ответ #11 : 20-05-2010 16:23 » 

Собственно, почему бы не писать это в лог - просто и быстро.
Записан

... мы преодолеваем эту трудность без синтеза распределенных прототипов. (с) Жуков М.С.
Алексей++
глобальный и пушистый
Глобальный модератор

ru
Offline Offline
Сообщений: 13


WWW
« Ответ #12 : 21-05-2010 03:03 » 

2151985, выведи содержимое Com_Line в отладчике и покажи Улыбаюсь
Записан

2151985
Интересующийся

ru
Offline Offline
Пол: Мужской

« Ответ #13 : 21-05-2010 03:26 » 

"D:\1\List.wpp"
Записан
Алексей++
глобальный и пушистый
Глобальный модератор

ru
Offline Offline
Сообщений: 13


WWW
« Ответ #14 : 21-05-2010 03:46 » 

1) кавычки тоже там  или ты их тут приписал ?
2) возможно, файл уже чем-то занят. Попробуй переименовать вручную файл на диске - удастся ли это сделать ?
Записан

2151985
Интересующийся

ru
Offline Offline
Пол: Мужской

« Ответ #15 : 21-05-2010 06:21 » 

Переименовать можно.
Если открывать файл из программы, то все нормально.
Кликаю два раза на List.wpp, программа запускается и после fopen() сразу выдает errno 22.
Может дело в GetCommandLine(), возвращает тип LPTSTR?  Здесь была моя ладья...
Записан
Алексей++
глобальный и пушистый
Глобальный модератор

ru
Offline Offline
Сообщений: 13


WWW
« Ответ #16 : 21-05-2010 06:28 » 

2151985, всё это делается до или после InitInstance ? А вообще, прикрепил бы пример проекта в пост
Записан

Страниц: [1]   Вверх
  Печать  
 

Powered by SMF 1.1.21 | SMF © 2015, Simple Machines