Открытие файла с различными текстовыми редакторами - PullRequest
0 голосов
/ 14 апреля 2011

Видимо, это должно быть возможно.Например, открытие и работа с файлом через NOTEPAD или HxD.Но разве они не все текстовые файлы ... как определить, какой текстовый редактор открыть файл и работать с ним с помощью WINDOWS API.Это, конечно, не в «CreateFile».

Ответы [ 3 ]

0 голосов
/ 14 апреля 2011

Что вы пытаетесь сделать? Вы могли бы:

  1. Вести список редакторов, которые вы ожидаете установить, и иметь записи в системном PATH (плохая идея)
  2. Имейте редактор / редакторы, которые вы хотите использовать, запросите реестр Windows, чтобы найти путь установки редакторов (используя RegGetValue), и запустите редактор с CreateProcess) (немного лучшая идея)
  3. Запросите реестр, чтобы получить редактор по умолчанию для файла данного типа, а затем запустите этот редактор, используя CreateProcess. (лучшая идея)

Но все зависит от того, какова ваша цель на самом деле.

Редактировать на основании требований

Итак, мы просто находимся на той же странице, из C ++, вы хотите:

  1. Возьмите параметр командной строки в ваше приложение C ++ (имя файла)
  2. Открыть этот файл в произвольном редакторе
  3. Определить, когда пользователь внес изменения в этот файл
  4. Работа с содержимым файла

Это правильно?

Если это так, вы можете:

  1. Используйте Boost libs для вычисления CRC для текущих данных в файле
  2. Запустите редактор, используя один из методов, которые я первоначально описал
  3. Придерживайтесь узкого цикла и sleep, чтобы вы не жевали ресурсы, в то время как первоначально вычисленный CRC соответствует одному, вычисленному на каждой итерации цикла

Конечно, есть множество вопросов, с которыми вам придется иметь дело (это просто очень простой способ описания алгоритма, который я мог бы использовать), например:

  1. Что произойдет, если пользователь не изменит файл?
  2. Что произойдет, если файл не найден?

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

Отказ от ответственности : я не реализовал что-то подобное, так что я мог бы быть совершенно не в себе;)

0 голосов
/ 14 апреля 2011

Вы ищете API ShellExecute() или ShellExecuteEx() в Windows?Они запустят любую программу, зарегистрированную для файла (обычно основанную на расширении имени файла).

0 голосов
/ 14 апреля 2011

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

Например, notepad.exe mytextfile.txt или gvim.exe mytextfile.txt.

Если редактор не в вашем %PATH%, вам необходимо использовать полное имя файла пути.

...