![]() |
Прежде чем задать вопрос, смотрите FAQ.
Рекомендуем загрузить DRKB.
![]() |
мисс_граффити |
![]()
Сообщение
#1
|
![]() просто человек ![]() ![]() ![]() ![]() ![]() ![]() Группа: Модераторы Сообщений: 3 641 Пол: Женский Реальное имя: Юлия Репутация: ![]() ![]() ![]() |
Идея такая: есть программка, которая либо запускает Word [как именно - неизвестно], либо говорит, что его нет.
Хотелось бы подружить ее с OpenOffice... Как это можно сделать? Или, если формулировать конкретнее: можно ли отловить _попытку_ запуска приложения (как отслеживать удачный запуск я знаю, но в данной ситуации он обязательно будет неудачным) и заменить запускаемое приложение? чтобы запускающая программка была уверена, что у нее все отлично получилось... вариант отловить нажатие на кнопку и запустить то, что мне нужно, не полностью решает проблему - надо как-то той программке подсунуть информацию об успешности.... Заранее спасибо за идеи в любом виде... Сообщение отредактировано: мисс_граффити - 17.02.2007 19:08 -------------------- Все содержимое данного сообщения (кроме цитат) является моим личным скромным мнением и на статус истины в высшей инстанции не претендует.
На вопросы по программированию, физике, математике и т.д. в аське и личке не отвечаю. Даже "один-единственный раз" в виде исключения! |
![]() ![]() |
hardcase |
![]()
Сообщение
#2
|
![]() code warrior ![]() ![]() ![]() ![]() Группа: Пользователи Сообщений: 484 Пол: Мужской Реальное имя: Славен Репутация: ![]() ![]() ![]() |
Зависит от того, как запускается ворд. 1) Если выполняется ShellExecute или CreateProcess с командной строкой вида
Код winword param1 param2 ... paramN то можно положить рядом с целевым приложнием программку-заглушку с именем winword.exe, которая будет запускать OpenOffice. 2) Приложение может неким другим образом производить детект оффиса - через реестр. Тут уже нужно изучать поведение софта. -------------------- ИзВ ин ИтЕ зА нЕ рОв НЫй П оч ЕРк
|
мисс_граффити |
![]()
Сообщение
#3
|
![]() просто человек ![]() ![]() ![]() ![]() ![]() ![]() Группа: Модераторы Сообщений: 3 641 Пол: Женский Реальное имя: Юлия Репутация: ![]() ![]() ![]() |
Судя по всему, не 1.... то есть переименование writer -> winword ничего не дает. пишет: "ошибка при запуске msword или msword не найден"
-------------------- Все содержимое данного сообщения (кроме цитат) является моим личным скромным мнением и на статус истины в высшей инстанции не претендует.
На вопросы по программированию, физике, математике и т.д. в аське и личке не отвечаю. Даже "один-единственный раз" в виде исключения! |
Malice |
![]()
Сообщение
#4
|
![]() Профи ![]() ![]() ![]() ![]() Группа: Пользователи Сообщений: 705 Пол: Мужской Репутация: ![]() ![]() ![]() |
|
мисс_граффити |
![]()
Сообщение
#5
|
![]() просто человек ![]() ![]() ![]() ![]() ![]() ![]() Группа: Модераторы Сообщений: 3 641 Пол: Женский Реальное имя: Юлия Репутация: ![]() ![]() ![]() |
большая...
посмотреть - более чем проблематично (исходников нет и получить без шансов), подправить - совсем нереально (не только технический, но и юридический момент). -------------------- Все содержимое данного сообщения (кроме цитат) является моим личным скромным мнением и на статус истины в высшей инстанции не претендует.
На вопросы по программированию, физике, математике и т.д. в аське и личке не отвечаю. Даже "один-единственный раз" в виде исключения! |
Malice |
![]()
Сообщение
#6
|
![]() Профи ![]() ![]() ![]() ![]() Группа: Пользователи Сообщений: 705 Пол: Мужской Репутация: ![]() ![]() ![]() |
большая... посмотреть - более чем проблематично (исходников нет и получить без шансов), подправить - совсем нереально (не только технический, но и юридический момент). Юля, конечно же я не имел ввиду просмотр и правку исходников ![]() ps на сколько большая? Может она у меня уже есть (типа гарант) ![]() |
мисс_граффити |
![]()
Сообщение
#7
|
![]() просто человек ![]() ![]() ![]() ![]() ![]() ![]() Группа: Модераторы Сообщений: 3 641 Пол: Женский Реальное имя: Юлия Репутация: ![]() ![]() ![]() |
почти...
Кодекс. -------------------- Все содержимое данного сообщения (кроме цитат) является моим личным скромным мнением и на статус истины в высшей инстанции не претендует.
На вопросы по программированию, физике, математике и т.д. в аське и личке не отвечаю. Даже "один-единственный раз" в виде исключения! |
Malice |
![]()
Сообщение
#8
|
![]() Профи ![]() ![]() ![]() ![]() Группа: Пользователи Сообщений: 705 Пол: Мужской Репутация: ![]() ![]() ![]() |
Поищу на работе, может есть на каком компе.. Пока попробовал вот что:
При выполниние простого кода: msword := CreateOleObject('word.application'); видно, что для запуска ворда опрашивается ключ в реестре HKLM\Software\Microsoft\Windows\CurrentVersion\Installer\UserData\S-1-5-18\Components\CB4EDBE115A903645B145216AF54CC5C\9140110900063D11C8EF10054038389C значение "C:\Program Files\Microsoft Office\OFFICE11\WINWORD.EXE" Если поменять значение на cmd.exe например, то он начинает запускатся ![]() ![]() Т.е. я понимаю так: наверняка твой OpenOffice тоже зарегистрирован как оле, можно проверить как его запустить правильно. Дальше либо: 1. поправить в кодексе 'word.application' на то, что надо; 2. править реестр в этом ключе перед кодексом и назад после; 3. еще чего нибудь придумать ![]() |
мисс_граффити |
![]()
Сообщение
#9
|
![]() просто человек ![]() ![]() ![]() ![]() ![]() ![]() Группа: Модераторы Сообщений: 3 641 Пол: Женский Реальное имя: Юлия Репутация: ![]() ![]() ![]() |
![]() спасибо, попробую. -------------------- Все содержимое данного сообщения (кроме цитат) является моим личным скромным мнением и на статус истины в высшей инстанции не претендует.
На вопросы по программированию, физике, математике и т.д. в аське и личке не отвечаю. Даже "один-единственный раз" в виде исключения! |
klem4 |
![]()
Сообщение
#10
|
![]() Perl. Just code it! ![]() ![]() ![]() ![]() ![]() ![]() Группа: Модераторы Сообщений: 4 100 Пол: Мужской Реальное имя: Андрей Репутация: ![]() ![]() ![]() |
Прогуливаясь по DRKB наткнулся на статью
Цитата Как перехватывать события, посланные другим приложениям? Хотя если метод вызова не известен ... ну так или иначе решил сообщить ![]() -------------------- perl -e 'print for (map{chr(hex)}("4861707079204E6577205965617221"=~/(.{2})/g)), "\n";'
|
мисс_граффити |
![]()
Сообщение
#11
|
![]() просто человек ![]() ![]() ![]() ![]() ![]() ![]() Группа: Модераторы Сообщений: 3 641 Пол: Женский Реальное имя: Юлия Репутация: ![]() ![]() ![]() |
это новый DRKB?
-------------------- Все содержимое данного сообщения (кроме цитат) является моим личным скромным мнением и на статус истины в высшей инстанции не претендует.
На вопросы по программированию, физике, математике и т.д. в аське и личке не отвечаю. Даже "один-единственный раз" в виде исключения! |
volvo |
![]()
Сообщение
#12
|
Гость ![]() |
В старом тоже было: "Системные функции и WinAPI -> Windows -> Работа с чужими процессами -> Как перехватывать события, посланные другим приложениям?"
Юля, есть еще одна идея: я бы пошел совсем глубоко, и попробовал бы перехватить создание процесса через zwCreateProcess... Хотя это будет намного сложнее... |
мисс_граффити |
![]()
Сообщение
#13
|
![]() просто человек ![]() ![]() ![]() ![]() ![]() ![]() Группа: Модераторы Сообщений: 3 641 Пол: Женский Реальное имя: Юлия Репутация: ![]() ![]() ![]() |
Malice, в результате изменения еще двух ключей (HKEY_CLASSES_ROOT\Word.Application\CurVer и HKEY_CLASSES_ROOT\Word.Application\CLSID) исполнение кода
msword := CreateOleObject('word.application'); приводит к запуску PowerPoint'а (а также Excel или Access). А вот все остальное, с чем экспериментировала, говорит, что не знает метод Visible... но, видимо, раз до этого доходит - эффект все же есть. Завтра попробую с OpenOffice и не своей программкой, а той, о которой изначально шла речь - возможно, получится. volvo, поищу инфу по zwCreateProcess'у.... спасибо всем! -------------------- Все содержимое данного сообщения (кроме цитат) является моим личным скромным мнением и на статус истины в высшей инстанции не претендует.
На вопросы по программированию, физике, математике и т.д. в аське и личке не отвечаю. Даже "один-единственный раз" в виде исключения! |
![]() ![]() |
![]() |
Текстовая версия | 9.07.2025 1:51 |