zixuan203344 发表于 2021-6-11 20:10

[原创]手动修改.NET的打开文件夹方式

本帖最后由 zixuan203344 于 2021-6-11 20:11 编辑


# 1. 背景

最近在做资料,需要把一个excel表格的内容,按行,分别填写到一个有规定格式的word文档中。

# 2. 思考
思索了一下,有以下三种方法:
1. 古典办法:将word模板复制所需要的份数,然后每个文件重命名好,打开excel表格,按模板,将表格对应位置复制到word,保存,打开下一个……循环,over!但是我需要处理100行数据,如果这样搞完,估计再见我已是白发苍苍
2. 自己写程序:也不是不会写,但是吧,下周就要检查资料,估摸着检查完了,程序还没调试完,况且过节还要出去浪,对吧
3. 用别人写好的:论坛里搜了下,有python版本的,有.NET版本的,具体没测试,大部分都没GUI交互模式,用着不是很舒服,然后,然后,我找到了网上的.NET写的有GUI的,测试效果还可以:


# 3. 问题
这个玩意好是好,但是吧,也有不好的地方,比如点击“设置文件夹”,

弹出的这设置文件夹的窗口,不能输入地址,如果我文件目录比较深,那就很难受了,得找个百八十年,找到估计还得白发苍苍

# 4. 找资料
查了下,.NET里面,有很多种打开文件夹的方式,比如FolderBrowserDialog,OpenFileDialog,FolderBrowserDialog,CommonOpenFileDialog
等,具体代码自己看 [点我查看](https://www.cnblogs.com/danch/p/13887340.html)

很明显,上面用的是第一种:系统原生的FolderBrowserDialog,不支持路径输入,那我能不能手动把程序里面的打开文件夹的API改成CommonOpenFileDialog呢?实践出真知,那就试一试吧!

# 5. 操作
1. 查壳,没壳


2. 找到引用FolderBrowserDialog的位置


3.修改代码


4.点编译,发现报错了,那就看看具体错误是啥,并解决错误

看了下,基本上就是没引用库啥,那就添加引用好了

5.复制Microsoft.WindowsAPICodePack.dll和Microsoft.WindowsAPICodePack.Shell.dll到文件根目录下


6.添加windowsBase引用,添加Microsoft.Office.Interop.Word引用,添加Microsoft.WindowsAPICodePack.dll和Microsoft.WindowsAPICodePack.Shell.dll引用,添加using Microsoft.WindowsAPICodePack.Dialogs;代码


7.完事儿点编辑,发现还有一个报错,意思是不知道window他爹是谁,那很明显,这是system.windows.window的,不是word的,那就删掉using Microsoft.Office.Interop.Word;即可,完事了点编译,没报错,然后点保存



8.最终效果

上下都能输入路径,再也不用点完就白发苍苍了。

# 6. 后记
遵循科学的解决问题思路,遇到问题,找资料,解决问题,不用等到白发苍苍(*^▽^*)

# 7. 附件
此帖仅为技术交流,不提供任何附件,over!



flee2010 发表于 2021-6-11 21:14

懂技术就是好

吾爱破解1111 发表于 2021-6-11 21:23

{:1_921:}
只改过字节码还没直接改过c#代码

jidesheng6 发表于 2021-6-11 22:47

还有commondialog啊,学习了,这几天就把之前项目的floderbroswer换成这个

tek2y 发表于 2021-6-13 08:30

牛逼,膜拜大佬

一粒咖啡 发表于 2021-6-13 10:45

感谢分享

wuoo563 发表于 2021-6-13 12:33


懂技术.分享技术。谢谢!!!!

Wits 发表于 2021-8-3 22:11

页: [1]
查看完整版本: [原创]手动修改.NET的打开文件夹方式