(COM 代码)
===================================================================
using System;
using System.Collections.Generic;
using System.Text;
using System.Runtime.InteropServices;
using System.EnterpriseServices;
//定义接口
[ComImport(), InterfaceType(ComInterfaceType.InterfaceIsIUnknown), GuidAttribute("000214FC-0000-0000-C000-000000000046")]
public interface ICopyHook
{
// [PreserveSig()]
uint CopyCallback(IntPtr hwnd, uint wFunc, uint wFlags,
string pszSrcFile, uint dwSrcAttribs,
string pszDestFile, uint dwDestAttribs); }
//返回值
public enum CopyHook_ReturnValue : uint { IDCANCEL = 2, IDYES = 6, IDNO = 7 }
//操作值
public enum CopyHook_OPERATIONS : uint { FO_MOVE = 1, FO_COPY = 2, FO_DELETE = 3, FO_RENAME = 4 }
//实现类
[Guid("33B8E49A-AE67-451e-9CA3-BB67B0FFA79D"), ComVisible(true)]
public class CopyHook : ICopyHook
{
// [PreserveSig()]
// [DispId(1)]
public uint CopyCallback(IntPtr hwnd, uint wFunc, uint wFlags,
string pszSrcFile, uint dwSrcAttribs,
string pszDestFile, uint dwDestAttribs)
{
System.Windows.Forms.MessageBox.Show("hello?" + pszDestFile);
return (uint)CopyHook_ReturnValue.IDYES;
}
} [StructLayout(LayoutKind.Sequential)]
public class SHFILEOPSTRUCT
{
public int hwnd;
public int wFunc;
[MarshalAs(UnmanagedType.LPWStr)]
public string pFrom;
[MarshalAs(UnmanagedType.LPWStr)]
public string pTo;
public int fFlags;
[MarshalAs(UnmanagedType.Bool)]
public bool fAnyOperationsAborted;
public int hNameMappings;
[MarshalAs(UnmanagedType.LPWStr)]
public string lpszProgressTitle; }
===========================================================
测试端
===============================================================
[ComImport(), GuidAttribute("33B8E49A-AE67-451e-9CA3-BB67B0FFA79D")]
public class copy
{ }
public static void Main()
{
copy j = new copy();// 执行到这里报错:无法将类型为“CopyHook”的对象强制转换为类型“copy”。
}================================================================
com是用来完成一个copyhook的SHELL,而这里调用都不行~~真是郁闷啊~请大虾帮下忙,谢谢了
解决方案 »
免费领取超大流量手机卡,每月29元包185G流量+100分钟通话, 中国电信官方发货