:: Главная :: Решения :: Статьи :: Проект "Русский help" :: Файловый архив :: Фотоальбом :: Ссылки ::
   Л и с о в о д ы   в с е х   с т р а н,  о б ъ е д и н я й т е с ь !!!  


Форумы  :: FAQ FoxPro

Как открыть файл в другом приложении
Дата: 15.06.05 21:18:10 ОтветитьЦитировать

Вопрос

У меня есть файл, созданный в другом приложении (XLS, PDF, DOC и т.п.). Как мне из FoxPro открыть соответствующее приложение и открыть в нем этот файл.

Ответ

Для этой цели используется специальная API-функция ShellExecute

Declare Long ShellExecute in Shell32 ;   
  	Long 	hWnd, ;		&& хендл родительского окна  
  	String 	lpOperation, ;	&& что сделать с файлом "open", "print",  "explore"  
  	String 	lpFile, ;		&& имя файла. Можно с путем доступа  
  	String 	lpParameters, ;	&& используется только для исполняемых файлов  
  	String 	lpDirectory, ; 	&& директория, относительно которой надо искать файл  
  	Integer 	ShowCmd 	&& режим открытия приложения  
    
 * Это откроет Acrobat (если он есть)  
  mKod=ShellExecute(0, "open", "uidesign1.pdf", NULL, "C:\text", 1)   
    
 * Это отправит сразу на печать  
  mKod=ShellExecute(0, "print", "uidesign1.pdf", NULL, "C:\text", 1)   
    
 * Это откроет проводник Windows на указанной директории   
  mKod=ShellExecute(0, "explore", "C:\text", NULL, NULL, 1)

Если функция ShellExecute вернула значение больше 32, то команда выполнена успешно. В противном случае произошла какая-то ошибка.

Следует иметь в виду, что функция ShellExecute откроет только те файлы, расширение которых ассоциировано в операционной системе Windows с каким-либо приложением. Например, если на машине пользователя не установлен Acrobat, то и файлы с расширением pdf не смогут быть открыты. Просто нечем.

Также следует понимать, что Вы не можете из FoxPro получить доступ к приложению открытому через ShellExecute. Это приложение будет открыто как отдельный независимый от FoxPro процесс.

Если у вас стоит задача только открыть файл, то можно воспользоваться COM-интерфейсом Shell API следующим образом

  
  Local loShell  
  loShell = CreateObject('Shell.Application')  
  loShell.Open("C:\text\uidesign1.pdf")

Кроме того, использование COM-интерфейса вызовет стандартный диалог Windows с предложением выбрать приложение, если в системе Windows не зарегистрировано приложение ассоциированное с указанным расширением файла.

К сожалению, через COM-интерфейс Shell API невозможно отправить документ на печать. В этом случае придется воспользоваться напрямую API-функцией ShellExecute



Исправлено: Владимир Максимов, 30.06.09 21:37
Ratings: 0 negative/0 positive


Тема Просмотров Написано Написано
  Работа с другими программами из FoxPro (Word, Excel и т.п.) 14493 Владимир Максимов 01.03.05 20:53
  Как мне вывести данные в существующий MS WORD документ 17111 Владимир Максимов 20.04.05 18:44
  Как открыть файл в другом приложении 13114 Владимир Максимов 15.06.05 21:18
  Как узнать значение константы Word или Excel 9410 Владимир Максимов 18.09.05 10:24
  Как узнать какая команда Word или Excel выполняет нужное действие 10518 Владимир Максимов 18.09.05 10:34
  Как заполнить таблицу в MS Word 14485 Владимир Максимов 20.01.07 16:35


Извините, но у вас нет прав для того, чтобы писать в этом форуме.

On-line: 39 AndyNigmatec boba  and Guests: 37


© 2006 Fox Club 
Яндекс.Метрика