精易论坛

标题: 默认应用zc [打印本页]

作者: Xiaomi525    时间: 2022-1-9 12:38
标题: 默认应用zc
  最近,精易模块出了一个浏览器的默认设置,但是我测试后发现win10无法使用,为了让大家能把自己的应用弄到win10的默认应用设置里,我仔细研究了 MSDN,让后我用新手可以看懂的(就是不搞遍历的替换的)e代码写了一个注册的模块

这里是源码,可能比较笨拙
希望可以帮到想做默认浏览器或者默认播放器的各位,希望能给点支持

  
子程序名返回值类型公开备 注
写默认程序逻辑型 写默认程序,win10可用
参数名类 型参考可空数组备 注
程序名称文本型用来显示的,自己编一个
关联项文本型后缀如.html,自行填充数组
关联项备注文本型上一项的备注,成员数与上一个相同
程序路径文本型设置启动的程序路径
标注名文本型
协议文本型如Media(默认视频播放器)
系统协议文本型如http,https,sms…
图标路径文本型ico图标
是否刷新逻辑型真确定刷新
文件备注文本型自填
关联名文本型自填
变量名类 型静态数组备 注
n整数型 
n1整数型 
项目路径整数型 
a文本型 
' 不直接使用变量是为了让大家看得更清晰
程序名 = 程序名称
项目路径 = “SOFTWARE\Clients\” + 协议 + 程序名 + “\Capabilities”
写注册项 ( #现行用户, “SOFTWARE\Microsoft\Windows\CurrentVersion\Uninstall\” + 程序名 + “\DisplayName”, 标注名)
写注册项 ( #现行用户, “SOFTWARE\Microsoft\Windows\CurrentVersion\Uninstall\” + 程序名 + “\DisplayIcon”, 标注名)
写注册项 ( #本地机器, “SOFTWARE\Clients\” + 协议 + 程序名 + “\”, 标注名)
写注册项 ( #本地机器, “SOFTWARE\Clients\” + 协议 + 程序名 + “\Capabilities\ApplicationIcon”, 图标路径)
写注册项 ( #本地机器, “SOFTWARE\Clients\” + 协议 + 程序名 + “\Capabilities\ApplicationDescription”, 标注名)
写注册项 ( #本地机器, “SOFTWARE\Clients\” + 协议 + 程序名 + “\Capabilities\ApplicationName”, 标注名)
写注册项 ( #本地机器, “SOFTWARE\Clients\” + 协议 + 程序名 + “\Capabilities\Startmenu\StartMenuInternet”, 标注名)
' 注册
计次循环首 (取数组成员数 (系统协议), n)
写注册项 ( #本地机器, “SOFTWARE\Clients\” + 协议 + 程序名 + “\Capabilities\URLAssociations\” + 系统协议 [n], 标注名)
计次循环尾 ()
计次循环首 (取数组成员数 (关联项), n1)
写注册项 ( #本地机器, “SOFTWARE\Clients\Media\壁纸\Capabilities\FileAssociations\” + 关联项 [n1], 关联项备注 [n1])
a = a + “|” + 关联项 [n1]
计次循环尾 ()
写注册项 ( #本地机器, “SOFTWARE\Clients\” + 协议 + 程序名 + “\DefaultIcon\”, 程序路径)
写注册项 ( #本地机器, “SOFTWARE\Clients\” + 协议 + 程序名 + “\InstallInfo\ShowIconsCommand”, 图标路径 + “ --show-icons”)
写注册项 ( #本地机器, “SOFTWARE\Clients\” + 协议 + 程序名 + “\InstallInfo\ReinstallCommand”, 程序路径 + “ --make-default-media”)
写注册项 ( #本地机器, “SOFTWARE\Clients\” + 协议 + 程序名 + “\InstallInfo\HideIconsCommand”, 图标路径 + “ --hide-icons”)
写注册项 ( #本地机器, “SOFTWARE\Clients\” + 协议 + 程序名 + “\InstallInfo\IconsVisible”, 1)
写注册项 ( #本地机器, “SOFTWARE\Clients\” + 协议 + 程序名 + “\shell\open\command\”, 程序路径)
写注册项 ( #本地机器, “SOFTWARE\” + 程序名 + “\”, 标注名)
写注册项 ( #本地机器, “SOFTWARE\RegisteredApplications\” + 程序名, 项目路径)
win_associated (程序路径, a, 图标路径, 文件备注, 关联名) ' 可以用精易模块的关联代替
SHChangeNotify (134217728, 0, 0, 0) ' 系统刷新函数

捕获.PNG (19.93 KB, 下载次数: 0)

捕获.PNG

作者: abpyu    时间: 2022-1-9 14:34
这个好,谢谢大佬分享
作者: kyo9766    时间: 2022-1-9 17:25
代码好评啊,很容易看懂,感谢分享
作者: Xiaomi525    时间: 2022-1-9 21:13
这个是zc信息(没这个模块里的默认浏览器设置不了,不过win10对非法应用的识别挺奇葩的,所以可能会失败),还有那个参数标注名貌似用重复了,大家用时注意改下,选择按原步骤来,貌似有些情况需要重启系统(win10特性)
作者: 1279868433    时间: 2022-1-10 01:22
支持一下           
作者: xjshuaishuai    时间: 2022-1-10 09:31
谢谢分享!
作者: 凉城o    时间: 2022-1-11 04:21
支持一下
作者: momoko001    时间: 2022-1-11 10:07
支持开源~!感谢分享
作者: ghost12    时间: 2022-1-21 20:01
互相讨论,共同进步
作者: 南笙北执    时间: 2022-1-22 22:33
0000000000000000000000000000000
作者: qq1056123185    时间: 2023-8-7 10:48
楼主你好,请教一个问题:
就跟你帖子中的图片一样,把一个程序设置成两种默认应用,
具体怎么区分打开的文件是“视频播放器”还是“Web浏览器”?
能详细解答一下吗?非常感谢!





作者: wacy1024    时间: 2023-10-22 17:49
大佬能给个例子不,测了不生效呢
作者: Xiaomi525    时间: 2024-10-19 12:50
qq1056123185 发表于 2023-8-7 10:48
楼主你好,请教一个问题:
就跟你帖子中的图片一样,把一个程序设置成两种默认应用,
具体怎么区分打开的文 ...

我是看MSDN手动实现了一个操作默认程序的函数,你可以打开注册表,那个我用协议参数前面那个路径,你可以发现所有的浏览器和播放器,电子邮件,都在这里进行注册,否则设置程序就无法读取你所设置的信息,就不会在Windows10的默认程序栏里显示,这个我当时写的还有缺陷可能是我其他代码注册了这个应用,你可以自己再看下MSDN默认应用那个专栏或者干脆用C++写个DLL拿现成的搞
作者: Xiaomi525    时间: 2024-10-19 13:43
wacy1024 发表于 2023-10-22 17:49
大佬能给个例子不,测了不生效呢

还要关联路径并且再添加到HTTP和HTTPS的协议里面,比如你用注册表搜chrome,找到它注册HTTP的地方把这一部分也要添加进你的程序,我的这段代码是能让设置默认程序里显示你的程序
作者: Xiaomi525    时间: 2024-10-19 13:47
实现技术文章来源MSDN:https://learn.microsoft.com/zh-cn/windows/win32/shell/default-programs
作者: Xiaomi525    时间: 2024-10-19 13:48
qq1056123185 发表于 2023-8-7 10:48
楼主你好,请教一个问题:
就跟你帖子中的图片一样,把一个程序设置成两种默认应用,
具体怎么区分打开的文 ...

自己判断路径尾缀,和HTTP头
作者: Xiaomi525    时间: 2024-10-19 13:50
wacy1024 发表于 2023-10-22 17:49
大佬能给个例子不,测了不生效呢

MSDN的文档有C++的例子,我截图的是一个两年前我写的一个壁纸软件。https://learn.microsoft.com/zh-cn/windows/win32/shell/default-programs




欢迎光临 精易论坛 (https://125.confly.eu.org/) Powered by Discuz! X3.4