2011-04-07 3 views
1

다른 C# dll의 메서드에 "연결할"수 있습니까 (해당 dll에 대한 소스가 없습니다)? 내 말은 그 dll을 사용하는 컴퓨터에 다른 프로그램이 있고이 프로그램을 호출하면 해당 프로그램에서 이벤트가 발생한다는 것입니다.C# 다른 dll 메소드에 연결?

원본이없는 C#으로 작성된 기존 응용 프로그램에 기능을 추가하는 데 문제가 있습니다. 프로그램에서 특정 메소드에 대한 호출이있을 때 팝업 될 추가 양식이 필요합니다.

프로그램이 다른 컴퓨터의 MS SQL 데이터베이스에 연결됩니다. 나는 또한 어떻게 든 컴퓨터에 연결하고 추가 형식을 트리거하기 위해 어떤 종류의 신호를 보내는 서버에서 SQL 트리거를 작성하려고 생각했지만 비참하게 실패했습니다.

[편집] 또는 SQL 트래픽에 대해 시스템에서 수신 대기 할 수 있고 해당 프로그램의 dll 메소드에 동행하는 SQL 프로 시저에 대한 호출이 있으면 프로그램이 작동합니까? 하지만 성능에 영향을 미치지 않을까요? EasyHook

+1

왜 소스가 없습니까? 당신/당신 단체가 쓴 것이 아닌가? –

+0

비즈니스 파트너가 만든 프로그램을 배포하고 있습니다. 나는 근원이 없기 때문에 최종 고객을 위해 그러한 조정을 할 시간이 없다. 그래서 나는 행동해야한다. – lipman

답변

1

그것은 잘 설명되지 않으며, 나 자신이 아직도 정말 여기에서 작동하지만, 모든 방법을 알아 내려고 노력하고 있어요는 DLL을 후킹을위한 교류 # 솔루션입니다 do는 Dll Injection입니다. 주입 된 DLL에서 .net 코드를 실행하는 방법은 tutorial입니다. DLL 인젝션에 대한 소개를 원한다면 같은 사람이 "How do I build a working poker bot"이라는 아주 좋은 첫 번째 타이머 자습서를 가지고 있습니다. 그것은 매우 철저하고 이해하기 쉽습니다.

1

당신이 할 작업에 대한 용어 :

0

"다른"dll에서 특정 조건이 충족되면 그럴듯합니다.

  1. "다른"dll에 별도의 앱 도메인에서 인스턴스화 된 개체의 인스턴스에 대한 참조를 가져 오는 메커니즘이있는 경우.
  2. 관심있는 이벤트에 "공개"권한이있는 경우.

그런 다음 대리인을 만들고 선택한 대리인에게 해당 대리인을 할당 할 수 있습니다. 대중 후크를 사용할 수없는 경우, 당신이 그것을 할 수 없습니다,

var other = OtherDLL.getInstance(InstanceID); 
other.DidSomething += new EventHandler(myDelegate); 
// the += is important so that you are adding your delegate to the existing calls for that method.. 

//Where you have: 
protected myDelegate(Object sender, EventArgs e) 
{ 
// do what you want... 
} 

:

이 같이 보일 것입니다.