обмануть чужое приложение, подменить вызываемое им приложение |
Прежде чем задать вопрос, смотрите FAQ.
Рекомендуем загрузить DRKB.
обмануть чужое приложение, подменить вызываемое им приложение |
мисс_граффити |
17.02.2007 19:06
Сообщение
#1
|
просто человек Группа: Модераторы Сообщений: 3 641 Пол: Женский Реальное имя: Юлия Репутация: 55 |
Идея такая: есть программка, которая либо запускает Word [как именно - неизвестно], либо говорит, что его нет.
Хотелось бы подружить ее с OpenOffice... Как это можно сделать? Или, если формулировать конкретнее: можно ли отловить _попытку_ запуска приложения (как отслеживать удачный запуск я знаю, но в данной ситуации он обязательно будет неудачным) и заменить запускаемое приложение? чтобы запускающая программка была уверена, что у нее все отлично получилось... вариант отловить нажатие на кнопку и запустить то, что мне нужно, не полностью решает проблему - надо как-то той программке подсунуть информацию об успешности.... Заранее спасибо за идеи в любом виде... Сообщение отредактировано: мисс_граффити - 17.02.2007 19:08 -------------------- Все содержимое данного сообщения (кроме цитат) является моим личным скромным мнением и на статус истины в высшей инстанции не претендует.
На вопросы по программированию, физике, математике и т.д. в аське и личке не отвечаю. Даже "один-единственный раз" в виде исключения! |
hardcase |
22.02.2007 18:41
Сообщение
#2
|
code warrior Группа: Пользователи Сообщений: 484 Пол: Мужской Реальное имя: Славен Репутация: 8 |
Зависит от того, как запускается ворд. 1) Если выполняется ShellExecute или CreateProcess с командной строкой вида
Код winword param1 param2 ... paramN то можно положить рядом с целевым приложнием программку-заглушку с именем winword.exe, которая будет запускать OpenOffice. 2) Приложение может неким другим образом производить детект оффиса - через реестр. Тут уже нужно изучать поведение софта. -------------------- ИзВ ин ИтЕ зА нЕ рОв НЫй П оч ЕРк
|
мисс_граффити |
26.02.2007 18:34
Сообщение
#3
|
просто человек Группа: Модераторы Сообщений: 3 641 Пол: Женский Реальное имя: Юлия Репутация: 55 |
Судя по всему, не 1.... то есть переименование writer -> winword ничего не дает. пишет: "ошибка при запуске msword или msword не найден"
-------------------- Все содержимое данного сообщения (кроме цитат) является моим личным скромным мнением и на статус истины в высшей инстанции не претендует.
На вопросы по программированию, физике, математике и т.д. в аське и личке не отвечаю. Даже "один-единственный раз" в виде исключения! |
Malice |
26.02.2007 23:36
Сообщение
#4
|
Профи Группа: Пользователи Сообщений: 705 Пол: Мужской Репутация: 20 |
|
мисс_граффити |
27.02.2007 1:26
Сообщение
#5
|
просто человек Группа: Модераторы Сообщений: 3 641 Пол: Женский Реальное имя: Юлия Репутация: 55 |
большая...
посмотреть - более чем проблематично (исходников нет и получить без шансов), подправить - совсем нереально (не только технический, но и юридический момент). -------------------- Все содержимое данного сообщения (кроме цитат) является моим личным скромным мнением и на статус истины в высшей инстанции не претендует.
На вопросы по программированию, физике, математике и т.д. в аське и личке не отвечаю. Даже "один-единственный раз" в виде исключения! |
Malice |
27.02.2007 21:10
Сообщение
#6
|
Профи Группа: Пользователи Сообщений: 705 Пол: Мужской Репутация: 20 |
большая... посмотреть - более чем проблематично (исходников нет и получить без шансов), подправить - совсем нереально (не только технический, но и юридический момент). Юля, конечно же я не имел ввиду просмотр и правку исходников Глянуть можно SoftIce-ом, идой или оллей. Если нельзя патчить, то можно написать лоадер, который будет делать патч этой проги в памяти после ее загрузки.. ps на сколько большая? Может она у меня уже есть (типа гарант) |
мисс_граффити |
27.02.2007 22:20
Сообщение
#7
|
просто человек Группа: Модераторы Сообщений: 3 641 Пол: Женский Реальное имя: Юлия Репутация: 55 |
почти...
Кодекс. -------------------- Все содержимое данного сообщения (кроме цитат) является моим личным скромным мнением и на статус истины в высшей инстанции не претендует.
На вопросы по программированию, физике, математике и т.д. в аське и личке не отвечаю. Даже "один-единственный раз" в виде исключения! |
Malice |
27.02.2007 23:56
Сообщение
#8
|
Профи Группа: Пользователи Сообщений: 705 Пол: Мужской Репутация: 20 |
Поищу на работе, может есть на каком компе.. Пока попробовал вот что:
При выполниние простого кода: 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. еще чего нибудь придумать |
мисс_граффити |
28.02.2007 0:21
Сообщение
#9
|
просто человек Группа: Модераторы Сообщений: 3 641 Пол: Женский Реальное имя: Юлия Репутация: 55 |
спасибо, попробую. -------------------- Все содержимое данного сообщения (кроме цитат) является моим личным скромным мнением и на статус истины в высшей инстанции не претендует.
На вопросы по программированию, физике, математике и т.д. в аське и личке не отвечаю. Даже "один-единственный раз" в виде исключения! |
klem4 |
1.03.2007 20:46
Сообщение
#10
|
Perl. Just code it! Группа: Модераторы Сообщений: 4 100 Пол: Мужской Реальное имя: Андрей Репутация: 44 |
Прогуливаясь по DRKB наткнулся на статью
Цитата Как перехватывать события, посланные другим приложениям? Хотя если метод вызова не известен ... ну так или иначе решил сообщить -------------------- perl -e 'print for (map{chr(hex)}("4861707079204E6577205965617221"=~/(.{2})/g)), "\n";'
|
мисс_граффити |
1.03.2007 21:00
Сообщение
#11
|
просто человек Группа: Модераторы Сообщений: 3 641 Пол: Женский Реальное имя: Юлия Репутация: 55 |
это новый DRKB?
-------------------- Все содержимое данного сообщения (кроме цитат) является моим личным скромным мнением и на статус истины в высшей инстанции не претендует.
На вопросы по программированию, физике, математике и т.д. в аське и личке не отвечаю. Даже "один-единственный раз" в виде исключения! |
volvo |
1.03.2007 21:50
Сообщение
#12
|
Гость |
В старом тоже было: "Системные функции и WinAPI -> Windows -> Работа с чужими процессами -> Как перехватывать события, посланные другим приложениям?"
Юля, есть еще одна идея: я бы пошел совсем глубоко, и попробовал бы перехватить создание процесса через zwCreateProcess... Хотя это будет намного сложнее... |
мисс_граффити |
1.03.2007 23:45
Сообщение
#13
|
просто человек Группа: Модераторы Сообщений: 3 641 Пол: Женский Реальное имя: Юлия Репутация: 55 |
Malice, в результате изменения еще двух ключей (HKEY_CLASSES_ROOT\Word.Application\CurVer и HKEY_CLASSES_ROOT\Word.Application\CLSID) исполнение кода
msword := CreateOleObject('word.application'); приводит к запуску PowerPoint'а (а также Excel или Access). А вот все остальное, с чем экспериментировала, говорит, что не знает метод Visible... но, видимо, раз до этого доходит - эффект все же есть. Завтра попробую с OpenOffice и не своей программкой, а той, о которой изначально шла речь - возможно, получится. volvo, поищу инфу по zwCreateProcess'у.... спасибо всем! -------------------- Все содержимое данного сообщения (кроме цитат) является моим личным скромным мнением и на статус истины в высшей инстанции не претендует.
На вопросы по программированию, физике, математике и т.д. в аське и личке не отвечаю. Даже "один-единственный раз" в виде исключения! |
Текстовая версия | 16.05.2024 11:38 |