nyistjz 发表于 2023-4-28 12:19:51

注册表默认打开方式

请教一个问题,用lisp如何查询xlsx或xls文件的默认打开程序,找到默认打开程序的位置 ?



感谢!

liuhe 发表于 2023-4-28 13:07:59

(setq GGG
                        (vl-registry-read
                           "HKEY_LOCAL_MACHINE\\SOFTWARE\\Microsoft\\Windows\\CurrentVersion\\App Paths\\Excel.EXE"
                           "Path"
                        )
                  )
                  (setq GGG (strcase (strcat GGG "Excel.EXE" )))

            

nyistjz 发表于 2023-4-28 16:11:27

liuhe 发表于 2023-4-28 13:07

:handshake谢谢您的回复。

这个代码应该是在有安装EXCEL的情况下,找到这路径的办法。

还有一种情况就是有安装的是WPS,而不是微软的EXCEL,这个时候怎么打wps的打开路径。
如果excl和wps同时安装时,如何找到XLSX文件默认的打开程序,可能是wps,也可能是excel.

您附件中的这个文件真是个好东西,谢谢您的分享
但这个好像并没有考虑到我们中国WPS的情况,没有看到这方面的东西 。


liuhe 发表于 2023-4-28 16:31:33

nyistjz 发表于 2023-4-28 16:11
谢谢您的回复。

这个代码应该是在有安装EXCEL的情况下,找到这路径的办法。


那就把Excel.Application改成Ket.Application啊。



谢谢,已解决。WPS的库文件是etapi.dll,其他一样

可以通用的。


http://bbs.mjtd.com/forum.php?mod=viewthread&tid=180766&highlight=WPS&_dsign=f3d1bb17

nyistjz 发表于 2023-4-28 23:43:27

费用很大的劲,才找到了解决办法


用默认程序打开xls文件
(vlax-invoke (vlax-get-or-create-object "wscript.shell") 'run xls)


;EXCEL和WPS共存时,优先用WPS打开表格文件
(defun av:openxls(xls / app path reg-key val-name vla-data)
        (setq reg-path "HKEY_LOCAL_MACHINE\\SOFTWARE\\Microsoft\\Windows\\CurrentVersion\\App Paths\\")
        (setq xls "excel.exe" et "et.exe")
        (setq app
                (cond
                        ((findfile (vl-registry-read (strcat reg-path et) "")))
                        (t (findfile (vl-registry-read (strcat reg-path xls) "")))
                )
        )
        (startapp app xls)
)
页: [1]
查看完整版本: 注册表默认打开方式