IPB
ЛогинПароль:

> ВНИМАНИЕ!

Прежде чем задать вопрос, смотрите FAQ.
Рекомендуем загрузить DRKB.

Наладить общение поможет, если вы подпишитесь по почте на новые темы в этом форуме.

 
 Ответить  Открыть новую тему 
> обмануть чужое приложение, подменить вызываемое им приложение
сообщение
Сообщение #1


просто человек
******

Группа: Пользователи
Сообщений: 3 641
Пол: Женский
Реальное имя: Юлия

Репутация: -  55  +


Идея такая: есть программка, которая либо запускает Word [как именно - неизвестно], либо говорит, что его нет.
Хотелось бы подружить ее с OpenOffice...
Как это можно сделать?
Или, если формулировать конкретнее:
можно ли отловить _попытку_ запуска приложения (как отслеживать удачный запуск я знаю, но в данной ситуации он обязательно будет неудачным) и заменить запускаемое приложение? чтобы запускающая программка была уверена, что у нее все отлично получилось...
вариант отловить нажатие на кнопку и запустить то, что мне нужно, не полностью решает проблему - надо как-то той программке подсунуть информацию об успешности....

Заранее спасибо за идеи в любом виде...

Сообщение отредактировано: мисс_граффити -


--------------------
Все содержимое данного сообщения (кроме цитат) является моим личным скромным мнением и на статус истины в высшей инстанции не претендует.
На вопросы по программированию, физике, математике и т.д. в аське и личке не отвечаю. Даже "один-единственный раз" в виде исключения!
 Оффлайн  Профиль  PM 
 К началу страницы 
+ Ответить 
сообщение
Сообщение #2


code warrior
****

Группа: Пользователи
Сообщений: 484
Пол: Мужской
Реальное имя: Славен

Репутация: -  8  +


Зависит от того, как запускается ворд. 1) Если выполняется ShellExecute или CreateProcess с командной строкой вида
Код

winword param1 param2 ... paramN


то можно положить рядом с целевым приложнием программку-заглушку с именем winword.exe, которая будет запускать OpenOffice.


2) Приложение может неким другим образом производить детект оффиса - через реестр. Тут уже нужно изучать поведение софта.


--------------------
ИзВ ин ИтЕ зА нЕ рОв НЫй П оч ЕРк
 Оффлайн  Профиль  PM 
 К началу страницы 
+ Ответить 
сообщение
Сообщение #3


просто человек
******

Группа: Пользователи
Сообщений: 3 641
Пол: Женский
Реальное имя: Юлия

Репутация: -  55  +


Судя по всему, не 1.... то есть переименование writer -> winword ничего не дает. пишет: "ошибка при запуске msword или msword не найден"


--------------------
Все содержимое данного сообщения (кроме цитат) является моим личным скромным мнением и на статус истины в высшей инстанции не претендует.
На вопросы по программированию, физике, математике и т.д. в аське и личке не отвечаю. Даже "один-единственный раз" в виде исключения!
 Оффлайн  Профиль  PM 
 К началу страницы 
+ Ответить 
сообщение
Сообщение #4


Профи
****

Группа: Пользователи
Сообщений: 705
Пол: Мужской

Репутация: -  20  +


Цитата(мисс_граффити @ 26.02.2007 18:34) *

Судя по всему, не 1.... то есть переименование writer -> winword ничего не дает. пишет: "ошибка при запуске msword или msword не найден"

А программа то большая ? Можно посмотреть как запускается word и подправить что нибудь..
 Оффлайн  Профиль  PM 
 К началу страницы 
+ Ответить 
сообщение
Сообщение #5


просто человек
******

Группа: Пользователи
Сообщений: 3 641
Пол: Женский
Реальное имя: Юлия

Репутация: -  55  +


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


--------------------
Все содержимое данного сообщения (кроме цитат) является моим личным скромным мнением и на статус истины в высшей инстанции не претендует.
На вопросы по программированию, физике, математике и т.д. в аське и личке не отвечаю. Даже "один-единственный раз" в виде исключения!
 Оффлайн  Профиль  PM 
 К началу страницы 
+ Ответить 
сообщение
Сообщение #6


Профи
****

Группа: Пользователи
Сообщений: 705
Пол: Мужской

Репутация: -  20  +


Цитата(мисс_граффити @ 27.02.2007 1:26) *

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

Юля, конечно же я не имел ввиду просмотр и правку исходников smile.gif Глянуть можно SoftIce-ом, идой или оллей. Если нельзя патчить, то можно написать лоадер, который будет делать патч этой проги в памяти после ее загрузки..
ps на сколько большая? Может она у меня уже есть (типа гарант) smile.gif
 Оффлайн  Профиль  PM 
 К началу страницы 
+ Ответить 
сообщение
Сообщение #7


просто человек
******

Группа: Пользователи
Сообщений: 3 641
Пол: Женский
Реальное имя: Юлия

Репутация: -  55  +


почти...
Кодекс.


--------------------
Все содержимое данного сообщения (кроме цитат) является моим личным скромным мнением и на статус истины в высшей инстанции не претендует.
На вопросы по программированию, физике, математике и т.д. в аське и личке не отвечаю. Даже "один-единственный раз" в виде исключения!
 Оффлайн  Профиль  PM 
 К началу страницы 
+ Ответить 
сообщение
Сообщение #8


Профи
****

Группа: Пользователи
Сообщений: 705
Пол: Мужской

Репутация: -  20  +


Поищу на работе, может есть на каком компе.. Пока попробовал вот что:
При выполниние простого кода:
msword := CreateOleObject('word.application');
msword.visible := true;

видно, что для запуска ворда опрашивается ключ в реестре
HKLM\Software\Microsoft\Windows\CurrentVersion\Installer\UserData\S-1-5-18\Components\CB4EDBE115A903645B145216AF54CC5C\9140110900063D11C8EF10054038389C
значение "C:\Program Files\Microsoft Office\OFFICE11\WINWORD.EXE"
Если поменять значение на cmd.exe например, то он начинает запускатся smile.gif Правда потом крякает с ошибкой оле.. sad.gif
Т.е. я понимаю так: наверняка твой OpenOffice тоже зарегистрирован как оле, можно проверить как его запустить правильно. Дальше либо:
1. поправить в кодексе 'word.application' на то, что надо;
2. править реестр в этом ключе перед кодексом и назад после;
3. еще чего нибудь придумать smile.gif

 Оффлайн  Профиль  PM 
 К началу страницы 
+ Ответить 
сообщение
Сообщение #9


просто человек
******

Группа: Пользователи
Сообщений: 3 641
Пол: Женский
Реальное имя: Юлия

Репутация: -  55  +


good.gif
спасибо, попробую.


--------------------
Все содержимое данного сообщения (кроме цитат) является моим личным скромным мнением и на статус истины в высшей инстанции не претендует.
На вопросы по программированию, физике, математике и т.д. в аське и личке не отвечаю. Даже "один-единственный раз" в виде исключения!
 Оффлайн  Профиль  PM 
 К началу страницы 
+ Ответить 
сообщение
Сообщение #10


Perl. Just code it!
******

Группа: Пользователи
Сообщений: 4 100
Пол: Мужской
Реальное имя: Андрей

Репутация: -  44  +


Прогуливаясь по DRKB наткнулся на статью
Цитата
Как перехватывать события, посланные другим приложениям?


Хотя если метод вызова не известен ... ну так или иначе решил сообщить smile.gif


--------------------
perl -e 'print for (map{chr(hex)}("4861707079204E6577205965617221"=~/(.{2})/g)), "\n";'
 Оффлайн  Профиль  PM 
 К началу страницы 
+ Ответить 
сообщение
Сообщение #11


просто человек
******

Группа: Пользователи
Сообщений: 3 641
Пол: Женский
Реальное имя: Юлия

Репутация: -  55  +


это новый DRKB?


--------------------
Все содержимое данного сообщения (кроме цитат) является моим личным скромным мнением и на статус истины в высшей инстанции не претендует.
На вопросы по программированию, физике, математике и т.д. в аське и личке не отвечаю. Даже "один-единственный раз" в виде исключения!
 Оффлайн  Профиль  PM 
 К началу страницы 
+ Ответить 
сообщение
Сообщение #12


Гость






В старом тоже было: "Системные функции и WinAPI -> Windows -> Работа с чужими процессами -> Как перехватывать события, посланные другим приложениям?"

Юля, есть еще одна идея: я бы пошел совсем глубоко, и попробовал бы перехватить создание процесса через zwCreateProcess... Хотя это будет намного сложнее...
 К началу страницы 
+ Ответить 
сообщение
Сообщение #13


просто человек
******

Группа: Пользователи
Сообщений: 3 641
Пол: Женский
Реальное имя: Юлия

Репутация: -  55  +


Malice, в результате изменения еще двух ключей (HKEY_CLASSES_ROOT\Word.Application\CurVer и HKEY_CLASSES_ROOT\Word.Application\CLSID) исполнение кода
msword := CreateOleObject('word.application');
msword.visible:=true;

приводит к запуску PowerPoint'а (а также Excel или Access).
А вот все остальное, с чем экспериментировала, говорит, что не знает метод Visible... но, видимо, раз до этого доходит - эффект все же есть.
Завтра попробую с OpenOffice и не своей программкой, а той, о которой изначально шла речь - возможно, получится.

volvo, поищу инфу по zwCreateProcess'у....

спасибо всем!


--------------------
Все содержимое данного сообщения (кроме цитат) является моим личным скромным мнением и на статус истины в высшей инстанции не претендует.
На вопросы по программированию, физике, математике и т.д. в аське и личке не отвечаю. Даже "один-единственный раз" в виде исключения!
 Оффлайн  Профиль  PM 
 К началу страницы 
+ Ответить 

 Ответить  Открыть новую тему 
1 чел. читают эту тему (гостей: 1, скрытых пользователей: 0)
Пользователей: 0

 





- Текстовая версия 29.03.2024 17:50
500Gb HDD, 6Gb RAM, 2 Cores, 7 EUR в месяц — такие хостинги правда бывают
Связь с администрацией: bu_gen в домене octagram.name