2

У меня есть проприетарная программа, которая требует, чтобы пользователи иногда вносили незначительные изменения в текстовый документ. Я хочу заменить Word на LibreOffice Writer. У меня есть Writer для открытия файлов .doc и .docx без проблем. Однако, когда пользователи генерируют и открывают эти файлы с помощью проприетарного программного обеспечения, они получают ошибку о невозможности найти слово.

Я подозреваю, что программа жестко запрограммирована на поиск winword.exe. Есть ли способ переместить и переименовать писатель LibreOffice в winword.exe? Могу ли я создать какой-нибудь файл перенаправления? Не уверен, как действовать отсюда.

3 ответа3

3

Поскольку у вас, кажется, есть рабочие отношения с поставщиком проприетарного программного обеспечения, возможно, вы можете спросить их, как они вызывают winword.exe, чтобы открыть файл. Если они просто делают системный вызов для запуска winword.exe и передают ему имя открываемого файла, то все или большинство решений, перечисленных ниже, должны работать. Сначала я перечислю самые простые. Если они используют COM или DDE, это невозможно перехватить, но потребует значительно больше работы.

Если они указывают, что делают системный вызов для запуска winword.exe (или если они не сообщат вам об этом, просто предположите, что это может сработать, и попробуйте ...):

  1. Перейдите в папку, где установлен LibreOffice Writer. Я использую OpenOffice вместо LibreOffice, но они очень похожи, поэтому вам, возможно, придется немного поохотиться.
  2. Найдите файл "Writer" .exe. Для меня (OpenOffice) это:
    D:\Program Files\OpenOffice.org-3\program\swriter.exe
  3. Сделайте копию найденного файла "Writer" .exe и переименуйте его в «winword.exe».
  4. Убедитесь, что он остается в той же папке, что и существующий файл "Writer" .exe.
  5. Убедитесь, что папка, в которой он находится, названа в переменной среды "Путь".

Если у вас возникли проблемы или вопросы по этому процессу, просто укажите некоторые детали в комментарии.


Если вышеперечисленное не работает, вы можете попробовать "Перенаправить" открытие Winword. Две возможности сделать это:

Способ 1:

  1. Создайте ссылку на LibreOffice Writer. Назовите ссылку winword.lnk или winword.exe.lnk. Это может зависеть от того, как проприетарная программа вызывает Winword.
  2. Поместите файл ссылки в папку с именем в переменной среды "Путь".

В зависимости от используемой версии Windows может быть создано несколько типов ссылок, и некоторые из них могут работать в вашем случае, а другие - нет.

Способ 2:

  1. Используя язык программирования, который можно скомпилировать в файл .exe (например, C или Visual Basic), создайте небольшую программу-обертку.
  2. Программа-оболочка просто принимает аргументы командной строки и вызывает LibreOffice Writer, передавая аргументы.
  3. После компиляции оболочки переименуйте файл .exe, созданный в winword.exe, и поместите его в папку с именем в переменной среды "Путь".

Если вы не найдете ни одной из этих работ или если они скажут вам, что используют DDE или COM для вызова Winword, то и Visual Basic, и C могут быть запрограммированы для ответа на сообщения / запросы DDE / COM, хотя это не тривиальная задача.


Редактировать:

Вы можете просмотреть переменную "Path" следующим образом:

  1. Откройте командную строку, нажав кнопку "Пуск" Windows ("Пуск"), а затем нажмите "Command Prompt" . Если вы не видите ярлык "Command Prompt" в меню "Пуск", щелкните поле "Поиск" в нижней части меню "Пуск" и введите:
    cmd.exe Enter
  2. В окне командной строки введите:

C:>echo %Path%
C:\Windows\System32\;C:\Windows\;C:\Windows\System32\Wbem

C:>

Это покажет строку, которая является списком папок, разделенных ";" (точка с запятой). Строка, отображаемая на вашем компьютере, будет отличаться.

Если вы не можете найти нужную папку в списке папок, содержащихся в переменной Path , вы можете добавить имена папок в Path:

  1. Нажмите кнопку Пуск (шар)
  2. В меню "Пуск" выберите « Computer чтобы открыть "My Computer", затем нажмите "System Properties" в контекстном меню под строкой меню. Или в меню Пуск щелкните правой кнопкой мыши Computer и выберите "Properties"
  3. В левой части окна "My Computer" нажмите "Advanced system settings"
  4. Нажмите на вкладку "Advanced".
  5. Нажмите кнопку Environment Variables

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

    Существует два типа переменных среды. System variables доступны всем пользователям компьютера. User variables могут быть разными для каждого пользователя.

    Верхняя половина окна предназначена для управления User variables, а нижняя - для управления System variables. Чтобы управлять переменными только для вошедшего в систему пользователя, работайте в разделе « User variables », в противном случае - в разделе « System variables ».

    Если переменная имеет значение для разделов « System variables и « User variables, то значение в разделе « User variables » будет иметь приоритет.

    Имена переменных не чувствительны к регистру, поэтому переменная с именем "Path" может быть записана как "path" или "PATH". В любом случае, это одна и та же переменная.

    Предположим, вы хотите отредактировать "Path" в разделе « System variables » (что было бы обычным случаем).

  1. В разделе System variables найдите переменную Path и щелкните по ней. Затем нажмите кнопку Изменить ...
  2. Если вы не нашли переменную Path (вы наверняка найдете), вы можете нажать кнопку New ... , чтобы добавить новую переменную и присвоить ей имя Path.
  3. В окне « Edit System Variable щелкните в поле "Значение переменной" (текстовое поле).

    В целях безопасности было бы неплохо создать копию текста (значения), которое в данный момент находится в текстовом поле, и сохранить его в текстовом файле на рабочем столе.

  4. Добавьте папку в текущую переменную Path , переместившись в конец текста в текстовом поле, затем введите a ; (точка с запятой), а затем введите полный путь к папке, которую вы хотите добавить, и нажмите кнопку ОК .

Так что в вашем случае вы можете увидеть, что значение переменной Path начинает выглядеть примерно так:C:\Windows\System32\;C:\Windows\;C:\Windows\System32\Wbem

и после добавления папки в переменную Path она может выглядеть примерно так:C:\Windows\System32\;C:\Windows\;C:\Windows\System32\Wbem;D:\Program Files\LibreOffice\program\

Теперь вы можете нажать кнопку ОК , чтобы закрыть окно « System Properties , и вы можете закрыть окно « My Computer .

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

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

0

Возможно нет. Вы не можете просто переименовать файл, чтобы он подходил, потому что обычно вызывается Программа и ей передаются параметры / ее функции.

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

Почему бы просто не открыть документы вручную для редактирования с помощью Libre?

0

Программное обеспечение может не искать WinWord.exe, оно может пытаться связаться с ним с помощью OLE Automation/COM, и, если ему не удается запустить OLE, оно сообщает, что не может его найти.

Больше информации от MSDN: Автоматизация

Writer LibreOffice может выступать в качестве COM-сервера для обеспечения аналогичной автоматизации, но программное обеспечение, которое пытается автоматизировать Word/Writer, необходимо перепрограммировать, чтобы использовать его, включая различные пространства имен, ClassId, методы и т.д.

Если вы подозреваете, что он пытается запустить WinWord.exe специально, то, возможно, запустите копию Process Monitor, чтобы подтвердить или опровергнуть ее с небольшим тестированием.

Всё ещё ищете ответ? Посмотрите другие вопросы с метками .