vista 64位下右键菜单取不到选中的文件名
我是在.net 中调用的
声明
        [DllImport("shell32")]
        //internal static extern uint DragQueryFile(uint hDrop, uint iFile, StringBuilder buffer, int cch);
        internal static extern uint DragQueryFile(UIntPtr hDrop, uint iFile, StringBuilder buffer, int cch);
调用
nselected = Helpers.DragQueryFile(m_hDrop, 0xFFFFFFFF, null, 0);在32位的环境中能成功取得选中文件的个数,但是在64位的vista中nselected始终为0,也不报错,这是什么原因?

解决方案 »

  1.   

    我怎么感觉你的参数写的不太对呢?
    你的声明: internal static extern uint DragQueryFile(UIntPtr hDrop, uint iFile, StringBuilder buffer, int cch); 
    你确信DragQueryFile函数有UIntPtr类型的参数???原型:
    UINT DragQueryFile(HDROP hDrop,
        UINT iFile,
        LPTSTR lpszFile,
        UINT cch
    );我是这样用的,在64位vista下没有问题出现啊。
    UINT32 nDropNum = DragQueryFile((HDROP)hDrop, 0xFFFFFFFF, NULL, 0);注:我 没有 在.net 中调用的 
      

  2.   

    解决了,是因为64位下Handle 要使用UIntPtr 这种类型,还有我以前有些结构intp之类的类型在64位下有有问题,所查了帮助改过来就能用了