C#功能扩张方式

时间:2022-04-22 18:55:29

有时候,为了完成一些window的一些操作,需要引入一些dll进行操作

1)  引入系统api进行操作,形如[DllImport("urlmon.dll", CharSet = CharSet.Ansi)]  ,包括findWindow找到窗口句柄,以及下面的改变浏览器的UserAgent

[DllImport("urlmon.dll", CharSet = CharSet.Ansi)]
private static extern int UrlMkSetSessionOption(int dwOption, string pBuffer, int dwBufferLength, int dwReserved);

const int URLMON_OPTION_USERAGENT = 0x10000001;

2) 引入COMdll,如增加相应事件的监听功能,下面是增加导航错误处理事件

  1. [ComImport, Guid("34A715A0-6587-11D0-924A-0020AFC7AC4D"),
  2. InterfaceType(ComInterfaceType.InterfaceIsIDispatch),
  3. TypeLibType(TypeLibTypeFlags.FHidden)]
  4. public interface DWebBrowserEvents2
  5. {
  6. [DispId(271)]
  7. void NavigateError(
  8. [In, MarshalAs(UnmanagedType.IDispatch)] object pDisp,
  9. [In] ref object URL, [In] ref object frame,
  10. [In] ref object statusCode, [In, Out] ref bool cancel);
  11. }

com英文为Component Object Model(组件对象模型),是微软生产软件组件的标准。它是构造二进制兼容软件组件的规范,不管组件应用何种语言编写只要遵循com规范就可以相互直接通信