Microsoft MVP성태의 닷넷 이야기
다른 프로그램의 컨트롤 건드려보기_추가질문(2) [링크 복사], [링크+제목 복사],
조회: 17034
글쓴 사람
임동찬 (dngchn.im at samsung.com)
홈페이지
첨부 파일
 

댓글을 쓸 수 없어 게시판을 도배하네요. 죄송~
...
제가 하려고 하는 것을 좀더 구체적으로 적어보겠습니다.
(말이 되는지 좀 봐주셨으면...)

C#코드에서...
...
IntPtr targetGridControlHandle = ....; // 건드려보고 싶은 다른 프로그램의 컨트롤, grid 형태임. 잘 얻어내 짐.

// 해당 컨트롤의 dll을 reference추가하여 GetCellText 메서드가 있는 것을 알아 냄.
// 타겟이 되는 AppleGrid는 ActiveX형태로되어 System.Windows.Forms.AxHost에서 상속됨.
// 그래서,
System.Windows.Forms.AxHost babo = (System.Windows.Forms.AxHost)System.Window.Forms.AxHost.FromHandle(targetGridControlHandle);

위와 같이 하면 타겟 컨트롤에 대한 인스턴스가 얻어질까 생각했었는데, null 값만 떨어지네요.
FromHandle 메서드를 저런식으로 쓰면 안되는 것인가요?
얼핏 생각해보면 다른 프로그램의 인스턴스를 저리 간단하게 얻어온다는 것이 당연히 안되는 듯 하다가도,
저렇게 코드를 들여다 보면 왜 안될까 생각도 들고.. 암튼 안개속을 걷는 기분입니다.

만약 위의 babo가 얻어지면 이를 AxHost.GetOcx 메서드를 통해 AppleGrid형태의 인스턴스까지 만들어지면,
거기에다 대고 GetCellText할 생각이었는데...

조언 부탁드립니다.








[최초 등록일: ]
[최종 수정일: 11/11/2010]


비밀번호

댓글 작성자
 



2010-11-11 11시00분
넵. 안됩니다. ^^ 같은 프로세스 공간에 있으면 잘 될 것입니다.
또 한 가지 고려해야 할 것이 있는데, 대부분의 ActiveX는 STA 스레드에만 잘 동작하도록 되어 있어서, 심지어 같은 프로세스의 다른 스레드에서조차도 접근하려면 적절한 마샬링 단계가 필요합니다. (가장 깔끔한 방법으로, Internet Explorer처럼 일부 ActiveX들이 스스로에 대한 인터페이스를 Running Object Table에 등록해 주는 서비스를 제공하지만,,, 대부분의 ActiveX가 그런 수고를 하지 않습니다.)

이건... 제 개인적인 생각인데요. 가능하면... 그 부분은 그냥 포기하시는 것이 좋습니다. 비정상적인 가로채기는 향후로도 상당한 애를 먹을 수 있기 때문인데요. ^^ 아니면, ... 전문적으로 가로채기 기술을 연마한 C/C++ 계열의 프로그래머들에게 도움을 받으시는 것이 좋습니다.

아마도 제가 해본다면... 실력은 안 되지만, ^^ 최후의 경우에, 대상 프로세스의 IAT(Import Address Table)의 CoCreateInstance를 가로채서 해당 COM 개체가 생성되는 시기에 그 인터페이스를 ROT에 등록해 두고, 외부 프로세스에서는 ROT로부터 인터페이스를 받아와서 제어하는 방법을 택할 것입니다. (경우에 따라서, 더 나은 방법이 있을 수도 있겠지만. 일단은 제 생각입니다.)
kevin25

... 61  62  63  64  65  66  67  68  69  70  [71]  72  73  74  75  ...
NoWriterDateCnt.TitleFile(s)
795김기용3/19/200918106[질문] DHTML 다이얼로그 관련 [2]
794박평옥3/18/200918072Vista에서 URL Shortcut 실행 시 SetSite가 두 번 호출되는 증상에 관해 조언 부탁드립니다. [2]
792김기용3/12/200917507어제 세미나 잘 들었습니다. 질문사항이 있습니다.(ie8 마이그레이션 관련) [4]
791vb표성백2/17/200923095ATL 로 만든 COM 에 문자열 전달하기! C#에서 어떻게 하나요? [1]
790고민중2/16/200915657vista에 vs2005를 사용중입니다. [1]
789지언2/14/200917596MFC & C#(COM) 호환 관련하여 답변좀 부탁드립니다 [2]
788하루야채2/3/200916416스마트클라이언트 Windowless 설정에 대해서 문의드립니다. [2]
787궁금이2/2/200916947TFS 관련하여 질문드리고자 합니다. [2]
786맨날맑음1/30/200918462WPF를 SmartClient로 배포할순 없을까요? [2]
785정성우12/16/200817009Vista 환경에서 VB6로 개발한 어플리케이션이 IE 통해서는 런칭이 안됩니다.. [4]
783서광원11/20/200817906.NET 어셈블리를 COM에서 사용하도록 변경 했을때 배포는 어떻게 해야 하나요? [3]
782김용환10/14/200818482웹서비스에서 캐시를 사용하고 싶습니다. [3]
781이수정9/5/200816390visual studio 2008 관련 질문입니다. [2]
776신현창8/5/200816711VS2005로 실행시 갑자기 COM+ 등록이 안됩니다. [1]
775땡초7/21/200817167조언을 구하고저 합니다. [2]
774남호진7/19/200818094Visual Studio 2005나 2008에서 서버탐색기에연결된 데이터에서 정보를 끌어... [2]
773지워니7/17/200819973웹서비스로 db2의 데이터가 오질 않아요. [1]
984이영구7/16/201119644    답변글 [답변]: 웹서비스로 db2의 데이터가 오질 않아요.
772다자래7/15/200817462스레드와 이벤트를 이용해서 mssql 서버의 저장프로시져의 레코드 진행률을 표현하는 프로그래스바를 구현하려고하는데....막막 [1]
771guest6/26/200817116[WCF] Self host 만드는 방법. [2]파일 다운로드1
770조조5/27/200816991스마트클라이언트에서 stand-alone 형태를 임베디드형태로 변환시 문제.. [1]
769제영한5/20/200817347배포프로젝트에 대한 조언을 구합니다. [2]
767김형중5/6/200817993RMclock 관련 문의 입니다. [1]
766정성태4/28/200818932[데브피아 Q&A 모음] 2008-04-21 ~ 2008-04-24
764정성태4/21/200819673[데브피아 Q&A 모음] 2008-04-14 ~ 2008-04-18 [2]
763단테4/17/200817199COM 객체 생성하는 방법
... 61  62  63  64  65  66  67  68  69  70  [71]  72  73  74  75  ...