Скрытие окна Cmd, которое отображается при использовании команды system (). - PullRequest
0 голосов
/ 22 февраля 2010

Я создал пользовательский интерфейс в приложении C ++ \ CLI, которое использует Cll для манипулирования exif-файлами.Эта библиотека использует функцию system (), открывает окно cmd и файл блокнота для редактирования, и когда мы закрываем файл блокнота, введенные данные редактируются в комментарии заголовка exif.Теперь я должен скрыть это окно cmd, которое я использовал «start \ b», но это закрывает окно cmd, это приводит к редактированию заголовка exif без ввода данных в файл блокнота.Код этой функции следующий:

FILE * file;
int a;
char QuotedPath[PATH_MAX+10];

file = fopen(TempFileName, "w");
if (file == NULL)
 {
    fprintf(stderr, "Can't create file '%s'\n",TempFileName);
    ErrFatal("could not create temporary file");
 }
fwrite(Comment, CommentSize, 1, file);

fclose(file);


fflush(stdout); // So logs are contiguous.

 {
    char * Editor;
    Editor = getenv("EDITOR");
    if (Editor == NULL)
     {
       #ifdef _WIN32
         Editor = "notepad";
       #else
         Editor = "vi";
       #endif
    }

    if (strlen(Editor) > PATH_MAX) ErrFatal("env too long");

    sprintf(QuotedPath, "%s \"%s\"",Editor, TempFileName);

    a = system(QuotedPath);

}

if (a != 0)
 {
    char message[50]= "";
    strcpy(message, "Editor failed to launch");
    MessageBoxA(hWnd,message,"Error : ",MB_ICONWARNING);
    // perror("Editor failed to launch");
    exit(-1);
 }

if (hFileOpen != NULL)
 {
    file = fopen(TempFileName, "r");
    if (file == NULL)
     {
        ErrFatal("could not open temp file for read");
     }

    // Read the file back in.
    CommentSize = fread(Comment, 1, 999, file);

    fclose(file);

    unlink(TempFileName);

    return CommentSize;
}

1 Ответ

1 голос
/ 22 февраля 2010

Лучший способ (по моему скромному мнению) - использовать shellexecuteEx для запуска указанного exe-файла, это вернет дескриптор выполненного процесса, который вы затем сможете отслеживать и закрывать, когда закончите с ним.

Примечание. Думаю, вам следует переформатировать блоки кода

Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...