C#获得IE进程内的IDocument对象代码

C#获得IE进程内的IDocument对象代码
    class Win32API
    {
        [DllImport("user32", EntryPoint = "RegisterWindowMessage")]
        public static extern int RegisterWindowMessage(
                string lpString
        );
 
        [DllImport("user32", EntryPoint = "SendMessage")]
        public static extern int SendMessage(
                int hwnd,
                int wMsg,
                int wParam,
                ref int lParam
        );
 
        [DllImport("OLEACC.DLL", EntryPoint = "ObjectFromLresult")]
        public static extern int ObjectFromLresult(
        int lResult,
        ref System.Guid riid,
        int wParam,
        [System.Runtime.InteropServices.MarshalAs(UnmanagedType.Interface),System.Runtime.InteropServices.In, System.Runtime.InteropServices.Out]ref System.Object ppvObject
        //注意这个函数ObjectFromLresult的声明.
        );      
 
     
    public partial class Form1 : Form
    {
        public Form1()
        {
            InitializeComponent();
        }
        private void button1_Click(object sender, EventArgs e)
        {
            System.Object domObject = new System.Object();
            int tempInt=0;
            System.Guid guidIEDocument2 = new Guid(); //应该是IHTMLDocument2的接口id
            int WM_Html_GETOBJECT = Win32API.RegisterWindowMessage("WM_Html_GETOBJECT");
             
            //开始查找指定的ie窗体
            int hwnd = 0x30784; //IExplorer server的句柄,在实际运行中需要用findwind得到
            int W = Win32API.SendMessage(hwnd, WM_Html_GETOBJECT, 0, ref tempInt);
            int lreturn = Win32API.ObjectFromLresult(W, ref guidIEDocument2, 0, ref domObject);
            mshtml.IHTMLDocument2 doc = (mshtml.IHTMLDocument2)domObject;
        }

    }
 
  • 0
    点赞
  • 1
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
首先,感谢您对eclipse插件开发学习的关注!下面是一些学习笔记配套代码的例子。 1. 创建一个最简单的插件: ```java public class HelloWorldPlugin implements IStartup { @Override public void earlyStartup() { System.out.println("Hello, Eclipse Plugin Development!"); } } ``` 2. 在Eclipse菜单中添加一个新的命令: ```java public class MyCommandHandler extends AbstractHandler { @Override public Object execute(ExecutionEvent event) throws ExecutionException { MessageDialog.openInformation(HandlerUtil.getActiveWorkbenchWindow(event).getShell(), "My Command", "Hello, Eclipse Plugin Development!"); return null; } } ``` 3. 在编辑器右键菜单中添加一个新的动作: ```java public class MyEditorAction extends Action { public MyEditorAction() { setText("My Action"); } @Override public void run() { IEditorPart editor = PlatformUI.getWorkbench().getActiveWorkbenchWindow().getActivePage().getActiveEditor(); if (editor instanceof ITextEditor) { ITextEditor textEditor = (ITextEditor) editor; IDocumentProvider documentProvider = textEditor.getDocumentProvider(); IDocument document = documentProvider.getDocument(textEditor.getEditorInput()); selectCurrentWord(textEditor, document); } } private void selectCurrentWord(ITextEditor editor, IDocument document) { ISelectionProvider selectionProvider = editor.getSelectionProvider(); ITextSelection selection = (ITextSelection) selectionProvider.getSelection(); int offset = selection.getOffset(); try { int lineStartOffset = document.getLineOffset(selection.getStartLine()); int lineEndOffset = lineStartOffset + document.getLineLength(selection.getStartLine()); String lineText = document.get(lineStartOffset, lineEndOffset - lineStartOffset); int wordStartOffset = lineText.lastIndexOf(' ', offset - lineStartOffset) + 1; int wordEndOffset = lineText.indexOf(' ', offset - lineStartOffset); if (wordEndOffset < wordStartOffset) { // The word is the last or only word on the line wordEndOffset = lineEndOffset - lineStartOffset; } else { wordEndOffset += lineStartOffset; } selectionProvider.setSelection(new TextSelection(wordStartOffset, wordEndOffset - wordStartOffset)); } catch (BadLocationException e) { e.printStackTrace(); } } } ``` 此处仅提供了一些简单的示例代码,以帮助您开始使用eclipse插件开发。有关更详细的学习和开发指导,请参阅Eclipse官方文档和教程。祝您在插件开发的学习过程中取得成功!

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值