성태의 닷넷 이야기
홈 주인
모아 놓은 자료
프로그래밍
질문/답변
사용자 관리
사용자
메뉴
아티클
외부 아티클
유용한 코드
온라인 기능
MathJax 입력기
최근 덧글
[정성태] VT sequences to "CONOUT$" vs. STD_O...
[정성태] NetCoreDbg is a managed code debugg...
[정성태] Evaluating tail call elimination in...
[정성태] What’s new in System.Text.Json in ....
[정성태] What's new in .NET 9: Cryptography ...
[정성태] 아... 제시해 주신 "https://akrzemi1.wordp...
[정성태] 다시 질문을 정리할 필요가 있을 것 같습니다. 제가 본문에...
[이승준] 완전히 잘못 짚었습니다. 댓글 지우고 싶네요. 검색을 해보...
[정성태] 우선 답글 감사합니다. ^^ 그런데, 사실 저 예제는 (g...
[이승준] 수정이 안되어서... byteArray는 BYTE* 타입입니다...
글쓰기
제목
이름
암호
전자우편
HTML
홈페이지
유형
제니퍼 .NET
닷넷
COM 개체 관련
스크립트
VC++
VS.NET IDE
Windows
Team Foundation Server
디버깅 기술
오류 유형
개발 환경 구성
웹
기타
Linux
Java
DDK
Math
Phone
Graphics
사물인터넷
부모글 보이기/감추기
내용
<div style='display: inline'> <br /> <div style='font-family: 맑은 고딕, Consolas; font-size: 20pt; color: #006699; text-align: center; font-weight: bold'>XBAP을 호스팅하고 있는 인터넷 익스플로러 인터페이스 구하기</div><br /> <br /> 이에 대한 방법을 웹 검색해 보면 다음과 같은 훌륭한 자료를 구할 수 있습니다.<br /> <br /> <pre style='margin: 10px 0px 10px 10px; padding: 10px 0px 10px 10px; width: 800px; background-color: #fbedbb; overflow-x: scroll; font-family: Consolas, Verdana;' > "Scripting out" of an XBAP ; <a target='_tab' href='http://blogs.msdn.com/changov/archive/2009/03/01/scripting-out-of-an-xbap.aspx'>http://blogs.msdn.com/changov/archive/2009/03/01/scripting-out-of-an-xbap.aspx</a> </pre> <br /> 그런데, 왠지 한 가지 마음에 안드는 부분이 있습니다. 바로 SHDocVw 개체를 참조 추가해야 한다는 것인데요. 차라리 이 정도 기능이라면 단순하게 PInvoke.net 사이트에서 관련 인터페이스를 추가하는 것만으로도 쉽게 해결될 수 있기 때문입니다.<br /> <br /> 이를 위해서 OLECMDID, OLECMDF, tagREADYSTATE, OLECMDEXECOPT enum 값들과 IWebBrowser2에 대한 인터페이스 정의를 pinvoke.net 웹 사이트에서 복사해 왔습니다. 그다음 HTML 웹 페이지에 올라가는 Page 개체에서 웹 브라우저 인터페이스 포인터를 구해오는 것은 위의 글을 쓴 "Chango V"가 공개한 소스코드 "<a target='_tab' href='http://blogs.msdn.com/changov/attachment/9453820.ashx'>ScriptInteropDemo.zip</a>" 파일의 것을 거의 수정 없이 다음과 같이 쓸 수 있습니다.<br /> <br /> <pre style='margin: 10px 0px 10px 10px; padding: 10px 0px 10px 10px; width: 800px; background-color: #fbedbb; overflow-x: scroll; font-family: Consolas, Verdana;' > using System; using System.Windows; using System.Windows.Controls; using System.Windows.Interop; using System.Runtime.InteropServices; namespace WpfBrowserApplication1 { /// <summary> /// Interaction logic for Page1.xaml /// </summary> public partial class Page1 : Page { static readonly Guid SID_SWebBrowserApp = new Guid("0002DF05-0000-0000-C000-000000000046"); public Page1() { InitializeComponent(); } private void button1_Click(object sender, RoutedEventArgs e) { IntPtr clientSitePtr = Marshal.GetIUnknownForObject(<b style='color: Blue;'>BrowserInteropHelper.ClientSite</b>); Guid spGuid = typeof(IServiceProvider).GUID; IntPtr spPtr; Marshal.QueryInterface(clientSitePtr, ref spGuid, out spPtr); IServiceProvider sp = (IServiceProvider)Marshal.GetObjectForIUnknown(spPtr); Marshal.Release(spPtr); Guid serviceGuid = SID_SWebBrowserApp; Guid iid = typeof(IWebBrowser2).GUID; IntPtr ppvObject = sp.QueryService(ref serviceGuid, ref iid); try { IWebBrowser2 webBrowser = (IWebBrowser2)Marshal.GetObjectForIUnknown(ppvObject); <b style='color: Blue;'> object url = "http://www.sysnet.pe.kr"; object missing = Missing.Value; webBrowser.Navigate2(ref url, ref missing, ref missing, ref missing, ref missing); </b> } finally { Marshal.Release(ppvObject); } } } } </pre> <br /> <a target='_tab' href='http://www.sysnet.pe.kr/bbs/DownloadAttachment.aspx?fid=462&boardid=331301885'>첨부한 프로젝트는 위의 소스 코드</a>를 담고 있습니다.<br /> <br /><br /><hr /><span style='color: Maroon'>[이 토픽에 대해서 여러분들과 의견을 공유하고 싶습니다. 틀리거나 미흡한 부분 또는 의문 사항이 있으시면 언제든 댓글 남겨주십시오.]</span> </div>
첨부파일
스팸 방지용 인증 번호
1719
(왼쪽의 숫자를 입력해야 합니다.)