Как открыть файл с сетевого диска / пути с программой по умолчанию? - PullRequest
1 голос
/ 24 июня 2011

из моего приложения я хочу открыть файлы (jpg, pdf, ..) с помощью стандартной Windows-программы с сетевых дисков. Я знаю start, но, похоже, он не работает для сетевых путей.

Я попробовал следующие команды, но все, что я получил, это диалоговое окно Windows, сообщающее мне, что он не знает, как открыть этот файл и хочу ли я использовать веб-сервис для запроса программы или выбрать вручную.

Из cmd.exe (P: \ - сетевой диск):

cmd / c "start \ server \ path \ to \ image.jpg"

> cmd /c "start P:\path\to\image.jpg"

Путь к файлу правильный, и нажатие на него в проводнике работает нормально.

Спасибо

ОБНОВЛЕНИЕ: Я нашел проблему. Смотрите мой ответ ниже.

Ответы [ 3 ]

2 голосов
/ 24 июня 2011

Я думаю, что вам нужна функция ShellExecute - она ​​будет выглядеть примерно так:

ShellExecute(ParentWindowHandl, "open", "Z:\SQLWriter.doc", NULL, SW_SHOWNORMAL);

PS Я знаю, что я должен опубликовать это как комментарий, но пока не могу комментировать все сообщения.

2 голосов
/ 24 июня 2011

Я попробовал эти две команды:

  1. start Z: \ SQLWriter.doc
  2. start \ 192.168.10.230 \ MyFolder \ SQLWriter.doc

Обе команды работали отлично.Я не получил никаких сообщений об ошибках.Вы можете использовать их, если хотите, чтобы он запускался.

 SHELLEXECUTEINFO ExecuteInfo;

memset(&ExecuteInfo, 0, sizeof(ExecuteInfo));

ExecuteInfo.cbSize       = sizeof(ExecuteInfo);
ExecuteInfo.fMask        = 0;                
ExecuteInfo.hwnd         = 0;                
ExecuteInfo.lpVerb       = "open";                      // Operation to perform
ExecuteInfo.lpFile       = "cmd.exe";  // Application name
ExecuteInfo.lpParameters = "start P:\Myfile.jpg";           // Additional parameters
ExecuteInfo.lpDirectory  = 0;                           // Default directory
ExecuteInfo.nShow        = SW_SHOW;
ExecuteInfo.hInstApp     = 0;

if(ShellExecuteEx(&ExecuteInfo) == FALSE)

Или вы можете перейти по этой ссылке: http://www.codeguru.com/forum/showthread.php?t=302501

1 голос
/ 24 июня 2011

Хорошо, я нашел проблему. Кажется, что реестр Windows был немного запутан. Как отмечалось ранее, другие файлы, такие как текст и документ, работают, поэтому единственной проблемой были файлы JPEG.

Двойной щелчок по ним в Windows Explorer работал нормально для них, но использование команды start показало мне всплывающее окно, описанное выше. Однажды выбрав программу и пометив ее как постоянную, я решил проблему. Дальнейшие вызовы с start теперь корректно открывают изображение напрямую.

...