Как зайти в Даркнет?!
25th January, 01:11
8
0
Как в tkinter из поля ввода Entry получить значение в одну переменную и обновить строку кнопкой, затем получить ещё одно введённое значение и затем сложить их. Ниже пример кода
21st July, 19:00
898
0
Программа, которая создает фейковые сервера в поиске игровых серверов CS 1.6 Steam
21st March, 17:43
951
0
Очень долго работает Update запрос Oracle
27th January, 09:58
916
0
не могу запустить сервер на tomcat HTTP Status 404 – Not Found
21st January, 18:02
907
0
Где можно найти фрилансера для выполнения поступающих задач, на постоянной основе?
2nd December, 09:48
941
0
Разработка мобильной кроссплатформенной военной игры
16th July, 17:57
1725
0
период по дням
25th October, 10:44
3957
0
Пишу скрипты для BAS только на запросах
16th September, 02:42
3722
0
Некорректный скрипт для закрытия блока
14th April, 18:33
4614
0
прокидывать exception в блоках try-catch JAVA
11th March, 21:11
4382
0
Помогите пожалуйста решить задачи
24th November, 23:53
6087
0
Не понимаю почему не открывается детальное описание продукта
11th November, 11:51
4352
0
Нужно решить задачу по программированию на массивы
27th October, 18:01
4398
0
Метода Крамера С++
23rd October, 11:55
4309
0
помогите решить задачу на C++
22nd October, 17:31
4002
0
Помогите решить задачу на python с codeforces
22nd October, 11:11
4492
0
Python с нуля: полное руководство для начинающих
18th June, 13:58
2599
0
Прослушивание событий в другом приложении
Предположим, что у меня есть два приложения, написанные в C#.. первое-это стороннее приложение, которое вызывает событие под названием "OnEmailSent".
Второе-это пользовательское приложение, которое я написал, что хотел бы каким-то образом подписаться на "OnEmailSent" даже первого приложения.
Есть ли какой-либо способ, которым я мог бы каким-то образом прикрепить второе приложение к экземпляру первого приложения, чтобы прослушать событие "OnEmailSent"?
Поэтому для дальнейшего разъяснения мой конкретный сценарий заключается в том, что у нас есть пользовательское стороннее приложение, написанное на c#, которое вызывает событие "OnEmailSent". Мы можем видеть, что событие существует, используя рефлектор.
То, что мы хотим сделать, - это выполнить некоторые другие действия, когда этот компонент отправляет email.
Самый эффективный способ, который мы можем придумать, - это использовать некоторую форму IPC, как предложил Андерс, и слушать событие OnEmailSent, вызванное сторонним компонентом.
Поскольку компонент написан на языке C#, мы играем с идеей написать другое приложение C#, которое может присоединяться к исполняющему процессу, и когда оно обнаружит, что событие OnEmailSent было вызвано, оно выполнит свой собственный код обработки событий.
Возможно, я что-то упускаю, но из того, что я понимаю о том, как работает удаленное взаимодействие, следует, что должен быть сервер, определяющий какой-то контракт, на который клиент может подписаться.
Я больше думал о сценарии, в котором кто-то написал отдельное приложение, например outlook, которое предоставляет события, на которые я хотел бы подписаться из другого приложения.
Я предполагаю, что сценарий, о котором я думаю, - это отладчик .net и то, как он может присоединяться к исполняемым сборкам для проверки кода во время его выполнения.
Для того чтобы два приложения (отдельные процессы) обменивались событиями, они должны договориться о том, как эти события передаются. Есть много различных способов сделать это, и именно какой метод использовать, может зависеть от архитектуры и контекста. Общим термином для такого рода информационного обмена между процессами является Межпроцессная коммуникация (IPC). Существует множество стандартных способов выполнения IPC, наиболее распространенными из которых являются файлы, каналы, (сетевые) сокеты, удаленные вызовы процедур (RPC) и общая память. На Windows также часто используются оконные сообщения .
Я не уверен, как это работает для .NET/C# приложений на Windows, но в собственных приложениях Win32 вы можете подключаться к циклу сообщений внешних процессов и "spy" к сообщениям, которые они отправляют . Если ваша программа генерирует событие сообщения, когда вызывается нужная функция, это может быть способом ее обнаружения.
Если вы сами реализуете оба приложения, вы можете выбрать любой метод IPC, который вы предпочитаете. Сетевые сокеты и протоколы на основе сокетов более высокого уровня, такие как HTTP, XML-RPC и SOAP, очень популярны в наши дни, поскольку они позволяют запускать приложения на разных физических машинах (учитывая, что они подключены через сеть).
Вы можете попробовать управляемый шпион и для программного доступа ManagedSpyLib
ManagedSpyLib вводит класс называется ControlProxy. А ControlProxy-это представление System.Windows.Forms.Control в другой процесс. ControlProxy позволяет вы должны получить или установить свойства и подпишитесь на события, как если бы Вы были запуск внутри пункта назначения процесс. Используйте ManagedSpyLib для автоматизация тестирования, ведение журнала событий для совместимость, перекрестный процесс коммуникация или тестирование whitebox.
Но это может не сработать для вас, зависит от того, сможет ли ControlProxy каким-то образом получить доступ к событию, которое вы ищете, в вашем стороннем приложении.
Вы также можете использовать Reflexil
Рефлексивность позволяет IL модификаций с использованием мощных Mono.Cecil библиотека, написанная Jb EVAIN. Reflexil работает как плагин рефлектора и особенно направлен на код IL обращение. Он выполняет это путем предложение полной инструкции редактор и разрешив C#/VB.NET код инъекция.
Вы можете использовать либо удаленное управление, либо WCF. Смотрите http://msdn.microsoft.com/en-us/library/aa730857(VS.80).aspx#netremotewcf_topic7 .
Какова природа этого события OnEmailSent из этого стороннего приложения? Я имею в виду, откуда вы знаете, что приложение запускает такое событие?
Если вы планируете осуществлять межпроцессную коммуникацию, первый вопрос, который вы должны задать себе: действительно ли это необходимо?
Не задаваясь вопросом о ваших мотивах, если вам действительно нужно сделать межпроцессное общение, вам понадобится какой-то механизм. Список длинный, очень длинный. От простых сообщений WM_DATA до пользовательских протоколов TCP до очень сложных веб-сервисов, требующих дополнительных инфраструктур.
В связи с этим возникает вопрос: что именно вы пытаетесь сделать? Что это за стороннее приложение, которое вы не контролируете?
Кроме того, отладчик имеет очень агрессивный способ отладки процессов. Не ожидайте, что это будет стандартный механизм межпроцессного взаимодействия, используемый всеми другими приложениями. На самом деле это не так.
Аналогичный сценарий можно реализовать с уведомлениями об изменении запросов SQL Server 2005, поддерживая постоянный SqlConnection с помощью приложения .NET, которое блокирует данные до тех пор, пока они не изменятся в базе данных.
Видите http://www.code-magazine.com/article.aspx?quickid=0605061 .