C# Visual Studio 2008 引用 system32.dll ...如何?

2023-12-21

我需要参考 system32/shell32.dll,因为我使用一些 shell 函数来读取回收站。我尝试了“添加引用 --> COM --> Microsoft Shell 控制和自动化”和“添加引用 --> 浏览 ---> [直接转到 system32/shell32.dll]。两者都将 shell32 引用添加到我的引用中但是当我查看属性时,我看到引用的路径如下所示:“C:\Users\Tim\Documents\Visual Studio 2008\Projects\Wing\FileWing\obj\Debug\Interop.Shell32.dll” ...

我不会将此 \obj\Debug\ 路径部署到我的安装程序。那么如何直接引用最终用户的shell32.dll呢?有办法吗?为什么VS2008会创建这个奇怪的路径?我可以更改此路径,使其不再位于这个奇怪的子文件夹中吗?


嗯。好吧,在重新访问 PInvoke 之后,我确定我不太明白:-/

让我说明一下我需要处理的代码。我正在挖掘回收箱并寻找我想要回收的物品。有没有办法不通过 PInvoke 来完成这项工作?

    private void recoverRecyclerBinEntry(string fileName, int size)
    {
        try
        {
            Shell Shl = new Shell();
            Folder Recycler = Shl.NameSpace(10);

            // scans through all the recyclers entries till the one to recover has been found
            for (int i = 0; i < Recycler.Items().Count; i++)
            {
                FolderItem FI = Recycler.Items().Item(i);
                string FileName = Recycler.GetDetailsOf(FI, 0);
                if (Path.GetExtension(FileName) == "")
                    FileName += Path.GetExtension(FI.Path);
                //Necessary for systems with hidden file extensions.

                string FilePath = Recycler.GetDetailsOf(FI, 1);
                string combinedPath = Path.Combine(FilePath, FileName);

                if (size == FI.Size && fileName == combinedPath)
                {
                    Debug.Write("Match found. Restoring " + combinedPath + "...");
                    Undelete(FI);
                    Debug.WriteLine("done.");
                }
                else
                {
                    Debug.WriteLine("No match");
                }
            }
        } 
        catch (Exception ex)
        {
            Debug.WriteLine(ex.Message);
            Debug.WriteLine(ex.StackTrace);
        }
    }

    private bool Undelete(FolderItem Item)
    {
        try
        {
            foreach (FolderItemVerb FIVerb in Item.Verbs())
            {
                if (
                    (FIVerb.Name.ToUpper().Contains("WIEDERHERSTELLEN")) ||
                    (FIVerb.Name.ToUpper().Contains("ESTORE")) ||
                    (FIVerb.Name.ToUpper().Contains("NDELETE"))
                    )
                {
                    FIVerb.DoIt();
                    return true;
                }
            }
            //execute the first one:
            Item.Verbs().Item(0).DoIt();
            return true;
        }
        catch (Exception)
        {
            Debug.WriteLine("ERROR undeleting");
            return false;
        }
    }

我相信你正在寻找P/Invoke(平台调用) http://msdn.microsoft.com/en-us/magazine/cc164123.aspx

一旦你掌握了包含和使用DLL的方法,你就可以访问pinvoke.net http://www.pinvoke.net/获取使用某些方法的特定代码片段。

本文内容由网友自发贡献,版权归原作者所有,本站不承担相应法律责任。如您发现有涉嫌抄袭侵权的内容,请联系:hwhale#tublm.com(使用前将#替换为@)

C# Visual Studio 2008 引用 system32.dll ...如何? 的相关文章

随机推荐

  • 使用 Linq PredicateBuilder 嵌套 OR

    我正在使用谓词生成器编写以下代码 IEnumerable
  • 使用 date-fns 进行时区转换

    我正在尝试在基于 React 的网页中使用 date fns tz 但无法使以下用例正常工作 我在表单中输入了一个日期 该表单应提交到以本地时区存储数据的后端 用户在GMT 2时区选择2021年2月1日 14 00在 UI 中 这与1612
  • 模型驱动表单 - IE11 上的输入占位符问题

    我已将我的应用程序从 Angular 2 x 更新到 Angular 4 0 0 从现在开始 我遇到输入类型文本表单控件的以下问题 在 IE11 上 当接收到焦点时 占位符将被删除 表单控件将设置为 dirty 并将 pristine 设置
  • 如何在重新启动之间保留 GoogleAppEngineLauncher 的本地数据存储?

    我在 Mac OS X 上使用 GoogleAppEngineLauncher GAEL 我的应用程序的数据存储状态在服务器重新启动甚至 GAEL 重新启动之间保持不变 但如果我重新启动 数据存储就会重置 是否有一个设置可以防止此重置 或者
  • 使用 NSComparisonResult 对 CoreData 实体进行排序

    我有这个 distanceSorter h distanceSorter m interface CLLocation DistanceComparison NSComparisonResult compareToLocation CLLo
  • 多个 Vue 实例需要多个 Vuex 模块实例

    我正在将 Vue 集成到表单网站上 这意味着如果页面上有多个表单 我必须创建该 Vue 应用程序的多个实例 所有实例共享同一个 Vuex 存储 我创建了一个 Vuex 模块 以便每个 Vue 实例都可以拥有自己的本地状态 我的主要目标是防止
  • 如何在 Hive 数组中搜索项目?

    我使用 Hive 创建了一个包含以下字段的表 ID 大整数 MSISDN 字符串 天丁 月小号 今年 性别微小 关系状态 TINYINT 教育弦 LIKES AND PREFERENCES STRING 通过以下 SQL 命令填充数据 In
  • 在 JavaFX 客户端中播放 h265 HEVC

    我有一个小型 JavaFX 应用程序可以在 Windows Linux 客户端上播放一些 GoPro 视频 过去我使用的是GoPro 4 我将视频下载到客户端并从本地存储播放 像这样 File file new File AnyVideo
  • 原生 PHP 中具有基本授权的 Soap 标头

    我需要连接到 TeraData SOAP API 该 API 现在需要与登录凭据一起发送授权基本标头 我不知道如何解决这个问题 添加基本 授权标头时 我在 SoapUI 中获得了工作权限 请任何人帮助我直接获取代码 这是 SoapUI 发送
  • 给定一个带有文件名的文本文件,如何在当前目录的子目录中查找文件?

    我在不同的子目录中有一堆具有不同名称的文件 我用这些名称创建了一个 txt 文件 但我无法创建find使用该文件进行工作 我看过关于创建列表的问题 不使用的帖子find 虽然不明白原因 建议 我很难举出一个例子 因为我不知道如何重现目录结构
  • Paypal 与 Google 应用程序引擎-python 集成

    我必须将 paypal 与我的应用程序集成 该应用程序是使用 python 构建在应用程序引擎补丁上的 我在网上搜索并发现 paypal 与谷歌应用程序引擎集成中报告的一些问题 如下所示 http groups google com gro
  • Firebase 的云功能 - getaddrinfo ENOTFOUND

    尝试使用 Paypal 的 API 发出请求PayPal 节点 SDK https github com paypal PayPal node SDK exports requestPayment functions https onReq
  • 致命错误导致没有结果出现(Mysqli)

    我在脚本中遇到此错误 我认为这导致搜索栏无法工作 致命错误 在第 89 行对 web stud xxx Mobile app previousquestions php 中的非对象调用成员函数 bind param 它指向的行是这一行 st
  • 将图标添加到 Visual Studio 代码扩展中的活动栏

    我是 VSC 扩展开发的新手 我从扩展 hello world 开始 我想向活动栏添加一个图标 并在单击它时收到通知 我将这些行添加到 package json viewsContainers activitybar id package
  • React-native Android 仅设置纵向手机否则平板电脑显示横向和纵向

    在这种情况下 我在我的应用程序中遇到了一个小问题 我设置了默认肖像 但现在我想在选项卡中显示肖像和风景 而不仅仅是手机 在手机中仅显示肖像 强制更新为肖像 我点击了此链接 但收到此错误 并且我不明白如何创建文件夹来放置数据 我点击了这个链接
  • 对接口编程,而不是 php 中的实现

    主要设计原则之一是针对接口编程而不是实现 这在 php 或任何其他弱类型语言中是否可能 EDIT 我可能没有把问题写得清楚 我并不是说 php 不能使用接口 它显然可以 我的意思是 针对接口而不是实现进行编程 的设计原则在弱类型语言中是否变
  • 作为服务器和客户端运行应用程序

    我想让我的电脑既是服务器又是客户端 这是我的代码 import java net class tester static int pos 0 static byte buffer new byte 100 static void Clien
  • 如何从数组中的数组中删除空值?

    我正在使用 Google 表格和 Google Apps 脚本 我用过 getRange getValues从工作表中获取用户电子邮件 收到的数组示例 user1 user2 user3 user4 user5 user6 如您所见 每行
  • 在只有 4 个样本和大量特征的情况下进行测试训练分割的好方法是什么?

    我有一个包含四个样本 约 25 000 个特征和两个标签的数据集 它是一个基因计数数据集 分割数据的好方法是什么 当我运行模型时 我得到的准确度为1在训练集上 但是0在验证集上 引导值得尝试吗 Labels 0 1 0 1 X train
  • C# Visual Studio 2008 引用 system32.dll ...如何?

    我需要参考 system32 shell32 dll 因为我使用一些 shell 函数来读取回收站 我尝试了 添加引用 gt COM gt Microsoft Shell 控制和自动化 和 添加引用 gt 浏览 gt 直接转到 system