2013-07-02 2 views
0

Я пытаюсь показать пользователю текстовый файл после операции, завершенной в c-программе с использованием winapi, но я хочу, чтобы файл был открыт с помощью блокнота (или приложения текстового процессора по умолчанию). как это сделать (открытие текстового файла с использованием приложения по умолчанию окна) с помощью winapi?Как открыть текстовый файл в блокноте в программе на C?

+1

Вы имеете в виду в окне командной? Сделайте себя понятным – 0decimal0

+0

Вы имеете в виду [ShellExecuteEx] (http://msdn.microsoft.com/en-us/library/windows/desktop/bb762154 (v = vs.85) .aspx)? –

ответ

6

ShellExecute() является то, что вы ищете, например:

#include <shellapi.h> 

ShellExecute(NULL, NULL, "C:\\path\\to\\myfile.txt", NULL, NULL, SW_SHOWNORMAL); 
+0

Не забудьте инициализировать COM перед вызовом. –

1

Учитывая файл test.txt, вы можете отобразить его в notepad на Windows, с:

#include <stdlib.h> 

int main() { 
    system ("notepad test.txt"); 
    return 0; 
} 

Если вы можете быть уверены, что ваша программа по умолчанию будет cmd оболочки, вы можете просто сказать system ("test.txt") и файл будет открыт в любом текстовом редакторе, установленном по умолчанию, но указание редактора более безопасно, поскольку оно касается таких случаев, как программа, скомпилированная под Cygwin, где оболочка по умолчанию будет sh, которая по умолчанию не открывает текстовые файлы, когда вы поставляете имя файла в командной строке.

Если вы не можете быть уверены, что ваша программа всегда будет скомпилирована в Windows, я бы предпочел решение ShellExecute(), изложенное @Remy Lebeau. Программа, содержащая #include <shellapi.h>, и вызов ShellExecute() не будет скомпилирован в системе, отличной от Windows (тем самым предотвращая ошибку), тогда как мое решение будет скомпилировано в системе, отличной от Windows, но не будет выполнено во время выполнения при вызове system().

+0

Что делать, если в вашей системе нет Блокнота (у меня нет) или пользователь выбрал другой текстовый редактор по умолчанию? –

+2

Просто 'system (" test.txt ");' – BLUEPIXY

+0

Если ваша система не имеет блокнота, вы почти наверняка не используете Windows и поэтому не имеете отношения к вопросу о том, как это сделать с помощью winapi. –

Смежные вопросы