zoukankan      html  css  js  c++  java
  • c#实现IOleCommandTarget接口(原闯)

    using System;
    using System.Runtime.InteropServices;
    namespace d4htmlinterface
    {
        
    /// <summary>
        
    /// Class1 的摘要说明。
        
    /// </summary>

        public class htmlinterface
        
    {
            
    public htmlinterface()
            
    {
                
    //
                
    // TODO: 在此处添加构造函数逻辑
                
    //
            }

            [StructLayout(LayoutKind.Sequential,CharSet
    =CharSet.Unicode)]
                
    public struct OLECMDTEXT
            
    {
                
    public uint cmdtextf;
                
    public uint cwActual;
                
    public uint cwBuf;
                [MarshalAs(UnmanagedType.ByValTStr,SizeConst
    =100)]public char rgwz;
            }


            [StructLayout(LayoutKind.Sequential)]
                
    public struct OLECMD
            
    {
                
    public uint cmdID;
                
    public uint cmdf;
            }


            
    // Interop definition for IOleCommandTarget.
            [ComImport,
                Guid(
    "b722bccb-4e68-101b-a2bc-00aa00404770"),
                InterfaceType(ComInterfaceType.InterfaceIsIUnknown)]
                
    public interface IOleCommandTarget
            
    {
                
    //IMPORTANT: The order of the methods is critical here. You
                
    //perform early binding in most cases, so the order of the methods
                
    //here MUST match the order of their vtable layout (which is determined
                
    //by their layout in IDL). The interop calls key off the vtable ordering,
                
    //not the symbolic names. Therefore, if you 
                
    //switched these method declarations
                
    //and tried to call the Exec method 
                
    //on an IOleCommandTarget interface from your
                
    //application, it would translate 
                
    //into a call to the QueryStatus method instead.
                void QueryStatus(ref Guid pguidCmdGroup, UInt32 cCmds,
                    [MarshalAs(UnmanagedType.LPArray, SizeParamIndex
    =1)] 
                    OLECMD[] prgCmds, 
    ref OLECMDTEXT CmdText);
                
    void Exec(ref Guid pguidCmdGroup, uint nCmdId, uint nCmdExecOpt, 
                    
    ref object pvaIn, ref object pvaOut);
            }

        }

    }

  • 相关阅读:
    [DP]ARC072E Alice in linear land
    [莫队][离散化]luogu P3709 大爷的字符串题
    [Splay]luogu P2596 书架
    [BSGS][哈希]luogu P3846 可爱的质数
    [机房测试]10.25
    [机房测试]10.24
    [机房测试]10.23
    [机房测试]10.22
    [机房测试]10.21
    区间伸缩算法小礼包
  • 原文地址:https://www.cnblogs.com/alice/p/188615.html
Copyright © 2011-2022 走看看