C#通过API实现跨进程得到浏览器对象


C# 源代码,通过API实现跨进程得到浏览器对象,然后就可以进行下一步操作。


1usingSystem;
2usingSystem.Runtime.InteropServices;
3usingmshtml;
4
5classWin32API{
6[DllImport("user32.dll",EntryPoint="FindWindow")]
7publicstaticexternIntPtrFindWindow(stringlpClassName,stringlpWindowName);
8[DllImport("user32.dll",EntryPoint="FindWindowEx")]
9publicstaticexternIntPtrFindWindowEx(IntPtrhwndParent,IntPtrhwndChildAfter,stringlpszClass,stringlpszWindow);
10[DllImport("user32.dll",SetLastError=true,CharSet=CharSet.Auto)]
11publicstaticexternuintRegisterWindowMessage(stringlpString);
12[DllImport("oleacc.dll",PreserveSig=false)]
13[return:MarshalAs(UnmanagedType.Interface)]
14publicstaticexternobjectObjectFromLresult(UIntPtrlResult,[MarshalAs(UnmanagedType.LPStruct)]Guidrefiid,IntPtrwParam);
15[DllImport("user32.dll",SetLastError=true,CharSet=CharSet.Auto)]
16publicstaticexternIntPtrSendMessageTimeout(IntPtrhWnd,uintMsg,UIntPtrwParam,IntPtrlParam,SendMessageTimeoutFlagsfuFlags,uintuTimeout,outUIntPtrlpdwResult);
17
18publicenumSendMessageTimeoutFlags:uint{
19SMTO_NORMAL=0x0000,
20SMTO_BLOCK=0x0001,
21SMTO_ABORTIFHUNG=0x0002,
22SMTO_NOTIMEOUTIFNOTHUNG=0x0008
23}
24}
25
26publicclassIEWindow{
27publicstaticHTMLDocumentClassGetIEWindowDocument(stringwindowName){
28UIntPtrlRes=newUIntPtr();
29IntPtrparentHWnd=Win32API.FindWindow("IEFrame",windowName);
30IntPtreditHWnd=Win32API.FindWindowEx(parentHWnd,IntPtr.Zero,"TabWindowClass",windowName);//需要查找的子窗口的类名,也就是输入框
31IntPtreditHWnd1=Win32API.FindWindowEx(editHWnd,IntPtr.Zero,"ShellDocObjectView","");//需要查找的子窗口的类名,也就是输入框
32IntPtreditHWnd2=Win32API.FindWindowEx(editHWnd1,IntPtr.Zero,"InternetExplorer_Server","");//需要查找的子窗口的类名,也就是输入框
33
34uintapp2_GenerateEvent=Win32API.RegisterWindowMessage("WM_HTML_GETOBJECT");
35Win32API.SendMessageTimeout(editHWnd2,app2_GenerateEvent,UIntPtr.Zero,IntPtr.Zero,Win32API.SendMessageTimeoutFlags.SMTO_NOTIMEOUTIFNOTHUNG,1000,outlRes);
36
37HTMLDocumentClassobj=(HTMLDocumentClass)Win32API.ObjectFromLresult(lRes,typeof(IHTMLDocument).GUID,IntPtr.Zero);
38returnobj;
39}
40}
41

优质内容筛选与推荐>>
1、HDOJ 400题纪念。
2、UE4灯光批量修改插件(如:把关卡中选中的灯光的光照强度同时乘以1.5倍)(蓝图篇)
3、Java学习旅程 ---this和super的异同
4、c#实现锁屏及禁止键盘和鼠标
5、[NOI 2004] 郁闷的出纳员


长按二维码向我转账

受苹果公司新规定影响,微信 iOS 版的赞赏功能被关闭,可通过二维码转账支持公众号。

    阅读
    好看
    已推荐到看一看
    你的朋友可以在“发现”-“看一看”看到你认为好看的文章。
    已取消,“好看”想法已同步删除
    已推荐到看一看 和朋友分享想法
    最多200字,当前共 发送

    已发送

    朋友将在看一看看到

    确定
    分享你的想法...
    取消

    分享想法到看一看

    确定
    最多200字,当前共

    发送中

    网络异常,请稍后重试

    微信扫一扫
    关注该公众号