我使用一个FileSystemWatcher来检查是否在被监视的目录中创建了新目录。如果用户根据资源管理器创建->,首先右键单击->新建文件夹,就会创建一个目录“新建文件夹”,用户可以立即重命名该目录。不过,我在“新建文件夹”上得到了创建的事件,我可以处理该事件。我的问题是,以不同的方式运行该软件的Windows机器本地化,使得它不可能检查与“新文件夹”。如何获得浏览器在当前语言中使用的新文件夹的名称。
谢谢。
发布于 2013-08-22 11:22:13
见以下内容:
您需要做的是发现用于“新建文件夹”....then的字符串的"ID“,您可以使用LoadString从Shell32.dll中的字符串表资源加载它。
但是,ID并不一定是稳定的,并且在Windows版本之间发生了变化。
对于instance...XP,字符串表设置如下:
在Windows764 bit...the上,“新建文件夹”字符串的ID为16888。
您可以尝试两种不同的方法来完成这个ID发现:
1.通过在要支持的每个Windows版本上预先发现“新建文件夹”字符串的ID
您需要编写一个实用程序,在每个Windows的英语/美国版本(XP、Vista、Windows7等)上调用该函数,...to查找ID。
UINT new_folder_id = FindResourceStringId(shell_handle,L“新文件夹”,0x409);
然后,您可以在代码中进行一个开关,根据运行的Windows当前版本使用正确的ID。
2.运行时的动态
通过查找英语资源中的“新建文件夹”字符串来查找其ID。但是,这需要在系统上安装英语MUI语言包。
使用此C#代码加载给定特定ID的特定“字符串”。
要测试您的代码是否是working....you,可以安装MUI语言包,然后尝试为不同的地区加载字符串。
或者,您可以使用SHChangeNotifyRegister来侦听“在shell中”所做的更改.Explorer在执行某些事情时调用SHChangeNotify。
在这里使用代码:
使用合适的标志,如SHCNRF_ShellLevel,SHCNE_MKDIR。
https://stackoverflow.com/questions/18376781
复制相似问题