C#,shell32 + 调用控制面板项(.Cpl)实现“新建快捷方式对话框”(全网首发)

Made By 于子轩,2025.2.2

不管是使用System.IO命名空间下的File类来创建快捷方式文件,或是使用Windows Script Host对象创建快捷方式,亦或是使用Shell32对象创建快捷方式,都对用户很不友好,今天小编为大家带来一种全新的方式:调用控制面板项(.Cpl)实现“新建快捷方式对话框”

别人的方法:

在C#中,可以使用WshShell对象来创建快捷方式。下面是一个简单的示例代码:

 

csharp复制插入

using IWshRuntimeLibrary;public void CreateShortcut(string targetPath, string shortcutPath)
{WshShell shell = new WshShell();IWshShortcut shortcut = (IWshShortcut)shell.CreateShortcut(shortcutPath);shortcut.TargetPath = targetPath;shortcut.Save();
}

在这个示例中,targetPath参数指定了目标文件或文件夹的路径,shortcutPath参数指定了要创建的快捷方式的路径。首先,我们创建一个WshShell对象,然后使用其CreateShortcut方法创建一个快捷方式对象。接下来,我们可以设置快捷方式对象的属性,例如目标路径(TargetPath)、图标路径(IconLocation)等,最后保存快捷方式(Save)。

别人的方法:

在C#中,可以使用System.IO命名空间下的FileSystem类来创建快捷方式。下面是一个示例代码:

 

csharp复制插入

using System;
using System.IO;
using IWshRuntimeLibrary;namespace ShortcutDemo
{class Program{static void Main(string[] args){string targetPath = @"C:\Path\To\Your\File.txt";string shortcutPath = @"C:\Path\To\Your\Shortcut.lnk";CreateShortcut(targetPath, shortcutPath);Console.WriteLine("Shortcut created successfully!");}static void CreateShortcut(string targetPath, string shortcutPath){WshShell shell = new WshShell();IWshShortcut shortcut = (IWshShortcut)shell.CreateShortcut(shortcutPath);shortcut.TargetPath = targetPath;shortcut.Save();}}
}

上述代码中,CreateShortcut方法接受两个参数,分别是目标文件路径和快捷方式路径。在CreateShortcut方法中,我们首先创建了一个WshShell对象,然后使用CreateShortcut方法创建了一个IWshShortcut对象。接着,我们设置shortcut.TargetPath为目标文件路径,并保存快捷方式。

我的方法:

 先附图:

CPL文件与DLL文件类似,都具有“导出函数”,在appwiz.cpl(用于管理已安装的程序和功能。通过运行appwiz.cpl,用户可以打开“程序和功能”窗口,该窗口允许用户查看、更改或卸载已安装的程序。)中,有一个函数:“NewLinkHereW”可以实现我们的要求

 [DllImport("appwiz.cpl", SetLastError = true, CharSet = CharSet.Unicode)]
 public static extern int NewLinkHereW(
  IntPtr hwndCpl,
  int msg,
  string lParam1,
  string lParam2
);

这个函数的签名是CPL文件标准方式来写的,一般我们需要提供四个参数。

应用:

要想成功发起该对画框,创建一个文件,函数将删除这个文件并在这个文件原位置上建立快捷方式

NewLinkHereW(0,0,"创建的文件地址",null);

本文来自互联网用户投稿,该文观点仅代表作者本人,不代表本站立场。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如若转载,请注明出处:http://www.mzph.cn/news/894584.shtml

如若内容造成侵权/违法违规/事实不符,请联系多彩编程网进行投诉反馈email:809451989@qq.com,一经查实,立即删除!

相关文章

国产编辑器EverEdit - 输出窗口

1 输出窗口 1.1 应用场景 输出窗口可以显示用户执行某些操作的结果,主要包括: 查找类:查找全部,筛选等待操作,可以把查找结果打印到输出窗口中; 程序类:在执行外部程序时(如:命令窗…

Vue-data数据

目录 一、Vue中的data数据是什么?二、data支持的数据类型有哪些? 一、Vue中的data数据是什么? Vue中用到的数据定义在data中。 二、data支持的数据类型有哪些? data中可以写复杂类型的数据,渲染复杂类型数据时只要遵…

02.03 递归运算

使用递归求出 1 1/3 -1/5 1/7 - 1/9 ... 1/n的值。 1>程序代码 #include <stdio.h> #include <string.h> #include <unistd.h> #include <stdlib.h> #include <sys/types.h> #include <sys/stat.h> #include <fcntl.h> #inc…

数据分析系列--⑥RapidMiner构建决策树(泰坦尼克号案例含数据)

一、资源下载 二、数据处理 1.导入数据 2.数据预处理 三、构建模型 1.构建决策树 2.划分训练集和测试集 3.应用模型 4.结果分析 一、资源下载 点击下载数据集 二、数据处理 1.导入数据 2.数据预处理 三、构建模型 1.构建决策树 虽然决策树已经构建,但对于大多数初学者或…

高阶开发基础——快速入门C++并发编程6——大作业:实现一个超级迷你的线程池

目录 实现一个无返回的线程池 完全代码实现 Reference 实现一个无返回的线程池 实现一个简单的线程池非常简单&#xff0c;我们首先聊一聊线程池的定义&#xff1a; 线程池&#xff08;Thread Pool&#xff09; 是一种并发编程的设计模式&#xff0c;用于管理和复用多个线程…

pytorch实现主成分分析 (PCA):用于数据降维和特征提取

人工智能例子汇总&#xff1a;AI常见的算法和例子-CSDN博客 使用 PyTorch 实现主成分分析&#xff08;PCA&#xff09;可以通过以下步骤进行&#xff1a; 标准化数据&#xff1a;首先&#xff0c;需要对数据进行标准化处理&#xff0c;确保每个特征的均值为 0&#xff0c;方差…

100 ,【8】 buuctf web [蓝帽杯 2021]One Pointer PHP(别看)

进入靶场 没提示&#xff0c;去看源代码。 user.php <?php // 定义一个名为 User 的类&#xff0c;该类可用于表示用户相关信息或执行与用户有关的操作 class User{// 声明一个公共属性 $count&#xff0c;可在类的内部和外部直接访问// 这个属性可能用于记录与用户相关…

巧妙利用数据结构优化部门查询

目录 一、出现的问题 部门树接口超时 二、问题分析 源代码分析 三、解决方案 具体实现思路 四、优化的效果 一、出现的问题 部门树接口超时 无论是在A项目还是在B项目中&#xff0c;都存在类似的页面&#xff0c;其实就是一个部门列表或者叫组织列表。 从页面的展示形式…

QT简单实现验证码(字符)

0&#xff09; 运行结果 1&#xff09; 生成随机字符串 Qt主要通过QRandomGenerator类来生成随机数。在此之前的版本中&#xff0c;qrand()函数也常被使用&#xff0c;但从Qt 5.10起&#xff0c;推荐使用更现代化的QRandomGenerator类。 在头文件添加void generateRandomNumb…

JavaFX - 3D 形状

在前面的章节中&#xff0c;我们已经了解了如何在 JavaFX 应用程序中的 XY 平面上绘制 2D 形状。除了这些 2D 形状之外&#xff0c;我们还可以使用 JavaFX 绘制其他几个 3D 形状。 通常&#xff0c;3D 形状是可以在 XYZ 平面上绘制的几何图形。它们由两个或多个维度定义&#…

深入理解开放寻址法中的三种探测序列

一、引言 开放寻址法是解决散列表中冲突的一种重要方法&#xff0c;当发生冲突&#xff08;即两个不同的键通过散列函数计算得到相同的散列值&#xff09;时&#xff0c;它会在散列表中寻找下一个可用的存储位置。而探测序列就是用于确定在发生冲突后&#xff0c;依次尝试哪些…

【双指针题目】

双指针 美丽区间&#xff08;滑动窗口&#xff09;合并数列&#xff08;双指针的应用&#xff09;等腰三角形全部所有的子序列 美丽区间&#xff08;滑动窗口&#xff09; 美丽区间 滑动窗口模板&#xff1a; int left 0, right 0;while (right < nums.size()) {// 增大…

为什么命令“echo -e “\033[9;0]“ > /dev/tty0“能控制开发板上的LCD不熄屏?

为什么命令"echo -e “\033[9;0]” > /dev/tty0"能控制开发板上的LCD不熄屏&#xff1f; 在回答这个问题前请先阅读我之前写的与tty和终端有关的博文 https://blog.csdn.net/wenhao_ir/article/details/145431655 然后再来看这条命令的解释就要容易些了。 这条…

嵌入式八股文面试题(一)C语言部分

1. 变量/函数的声明和定义的区别&#xff1f; &#xff08;1&#xff09;变量 定义不仅告知编译器变量的类型和名字&#xff0c;还会分配内存空间。 int x 10; // 定义并初始化x int x; //同样是定义 声明只是告诉编译器变量的名字和类型&#xff0c;但并不为它分配内存空间…

go-zero学习笔记(三)

利用goctl生成rpc服务 编写proto文件 // 声明 proto 使用的语法版本 syntax "proto3";// proto 包名 package demoRpc;// golang 包名(可选) option go_package "./demo";// 如需为 .proto 文件添加注释&#xff0c;请使用 C/C 样式的 // 和 /* ... */…

Javascript代码库-jQuery入门

摘自千锋教育kerwin的js教程 jQuery 是一个前端库&#xff0c;也是一个方法库他里面封装着一些列的方法供我们使用我们常用的一些方法它里面都有&#xff0c;我们可以直接拿来使用就行了jQuery 之所以好用&#xff0c;很多人愿意使用&#xff0c;是因为他的几个优点太强大了 优…

【25考研】南开软件考研复试复习重点!

一、复试内容 复试采取现场复试的方式。复试分为笔试、机试和面试三部分。三部分合计100分&#xff0c;其中笔试成绩占30%、机试成绩占30%、面试成绩占40%。 1.笔试&#xff1a;专业综合基础测试 考核方式&#xff1a;闭卷考试&#xff0c;时长为90分钟。 笔试考查内容范围…

【最长上升子序列Ⅱ——树状数组,二分+DP,纯DP】

题目 代码&#xff08;只给出树状数组的&#xff09; #include <bits/stdc.h> using namespace std; const int N 1e510; int n, m; int a[N], b[N], f[N], tr[N]; //f[i]表示以a[i]为尾的LIS的最大长度 void init() {sort(b1, bn1);m unique(b1, bn1) - b - 1;for(in…

012-51单片机CLD1602显示万年历+闹钟+农历+整点报时

1. 硬件设计 硬件是我自己设计的一个通用的51单片机开发平台&#xff0c;可以根据需要自行焊接模块&#xff0c;这是用立创EDA画的一个双层PCB板&#xff0c;所以模块都是插针式&#xff0c;不是表贴的。电路原理图在文末的链接里&#xff0c;PCB图暂时不选择开源。 B站上传的…

容器迭代器iterator

文章目录 1、自定义String实现iterator2、自定义vector实现iterator3、迭代器失效问题 迭代器的功能&#xff1a;提供一种统一的方式&#xff0c;来透明的遍历容器。 迭代器可以透明的访问容器内部的元素的值&#xff0c;而无需了解其底层遍历机制具体是数组的下标还是链表的指…