| Сейчас на форуме: (+5 невидимых) |
| eXeL@B —› Программирование —› контроль над прогой |
| Посл.ответ | Сообщение |
|
|
Создано: 09 июля 2007 15:51 · Личное сообщение · #1 Вот недавно задался вопросом. Есть прога, которая выполняет опр. действия (напр. получение данных с кокого-либо устр-ва, ну или какие-либо др. действия, неважно), т.е. в коде есть функция, которая это осуществляет. Вопрос вот в чём, можно-ли как-нить программно управлять этой прогой, т.е. напр. в определённое время принудительно вызвать эту функцию с помощью другой программы (или драйвера). Что для этого нужно. Хде можно об этом почитать? Зарание спасибо. ЗЫ Дело в том, что прогу патчить нельзя (в этом случае можно было просто дописать свой код ), возможен патч в памяти, но тож не желательно , у меня есть идея юзать для этого DebugAPI, но может есть ещё какие-нить способы...
![]() |
|
|
Создано: 09 июля 2007 16:03 · Личное сообщение · #2 |
|
|
Создано: 09 июля 2007 16:08 · Личное сообщение · #3 прописать в реестр (непомню куда но куда ся мылвара пишет) dll которая будет атачиться ко всем процессам и в InitDll проверять тот ли модуль а потом делать то что надо =] не красиво, но первое что пришло в голову... а так если прога твоя и тебе надо построить сервер/клиент локально то можно юзать WM_COPYDATA, Named Pipe или mailslot для передачи данных между процессами... ----- Shalom ebanats! ![]() |
|
|
Создано: 09 июля 2007 16:14 · Личное сообщение · #4 |
|
|
Создано: 09 июля 2007 19:11 · Личное сообщение · #5 SLV пишет: прописать в реестр (непомню куда но куда ся мылвара пишет) dll которая будет атачиться ко всем процессам и в InitDll проверять тот ли модуль а потом делать то что надо =] По-моему, чересчур круто.
Такой глобальности скорее всего не понадобится. Как посоветовал Ara проще всего сделать лоадер, запускающий нужный процесс и ждущий окончания распаковки. Но здесь сложность видимо в том, каким образом инициировать вызов нужной функции. Но это уже будет зависеть от специфики проги и интересующей функции. ----- Программист SkyNet ![]() |
|
|
Создано: 09 июля 2007 19:14 · Личное сообщение · #6 |
|
|
Создано: 09 июля 2007 19:23 · Личное сообщение · #7 |
|
|
Создано: 09 июля 2007 21:22 · Личное сообщение · #8 |
|
|
Создано: 09 июля 2007 22:20 · Личное сообщение · #9 Спосибо за советы, буду пробовать
Ara пишет: лоадер сделай FrenFolio пишет: Но здесь сложность видимо в том, каким образом инициировать вызов нужной функции. Но это уже будет зависеть от специфики проги и интересующей функции. Именно, вот в этом и сложность, как вызвать эту ф-ию (конечно со своими параметрами/аргументами, но это уже формальности ), прога написана на дельфях, нужная ф-ия вызывается в обработчике нажатия кнопки...
есть идея генерирование этого события, но тохда в выполнится весь код обработчика, а мну нужно только одну ф-ию вызвать, вот и получается
И всё же думаю с помощью драйвера это реализовать, но во жаль инфы мало, буду копать далее
SLV пишет: есть тока в nt'подобных системах если что... да осъ - WinXP SP2, т.е. с этим всё впорядке
![]() |
|
|
Создано: 09 июля 2007 22:32 · Личное сообщение · #10 |
|
|
Создано: 09 июля 2007 22:33 · Поправил: Ara · Личное сообщение · #11 При чем тут драйвер-то? Немного непонятная твоя задача. Если по нажатию копки выполняется какое-то действие - сэмулируй нажатие по таймеру и всего делов. Если нужно выполнить тока одну определенную процедуру - реверси прогу, определяй входные данные и делай патч проги в памяти, затем эмулируй нажатие кнопки и возвращай всё обратно. ![]() |
|
|
Создано: 09 июля 2007 22:47 · Поправил: alexey_k · Личное сообщение · #12 Infernal_Terror пишет: А что, есть не NT подобные? хочеш сказать, что Win95,98,ME - относятся к линейки NT
у осей 9x/ME и NT (NT4, 2k,XP,2k3) разная архитектура... Ara пишет: Если нужно выполнить тока одну определенную процедуру - реверси прогу, определяй входные данные и делай патч проги в памяти, затем эмулируй нажатие кнопки и возвращай всё обратно. Скорее всего так и сделаю, спосибо за совет ![]() |
|
|
Создано: 09 июля 2007 23:17 · Личное сообщение · #13 |
|
|
Создано: 10 июля 2007 06:40 · Личное сообщение · #14 |
|
|
Создано: 10 июля 2007 06:41 · Личное сообщение · #15 |
|
|
Создано: 10 июля 2007 07:18 · Личное сообщение · #16 |
|
|
Создано: 10 июля 2007 07:36 · Личное сообщение · #17 |
|
|
Создано: 10 июля 2007 07:45 · Личное сообщение · #18 |
|
|
Создано: 10 июля 2007 07:52 · Поправил: alexey_k · Личное сообщение · #19 Ara пишет: В статье разъясняется, как вызвать функцию из чужой dll, тут же немного другое. совершенно верно, вызов не из DLL... хотя статья тож. полезная ЗЫ Infernal_Terror пишет: ы бы еще MS-DOS или спектрум вспомнили. будешь смеятся, но там, хде я работаю (почта россии) треть сидит в D0S, остальные - Win98,ME, ток процентов 10 - XP... ![]() |
|
|
Создано: 10 июля 2007 08:10 · Личное сообщение · #20 |
|
|
Создано: 10 июля 2007 08:34 · Личное сообщение · #21 |
|
|
Создано: 10 июля 2007 11:12 · Личное сообщение · #22 |
|
|
Создано: 10 июля 2007 11:31 · Личное сообщение · #23 |
|
|
Создано: 10 июля 2007 11:41 · Личное сообщение · #24 |
|
|
Создано: 10 июля 2007 11:52 · Поправил: alexey_k · Личное сообщение · #25 |
|
|
Создано: 10 июля 2007 12:03 · Личное сообщение · #26 |
|
|
Создано: 10 июля 2007 13:53 · Личное сообщение · #27 |
| eXeL@B —› Программирование —› контроль над прогой |

), возможен патч в памяти, но тож не желательно
, у меня есть идея юзать для этого DebugAPI, но может есть ещё какие-нить способы...









), прога написана на дельфях, нужная ф-ия вызывается в обработчике нажатия кнопки...

Для печати