q113960096 发表于 2012-11-8 14:29:37

au3 @DesktopDir 的BUG【暂定】

将 当前用户的桌面移动到 D盘,一开始我会使用 @DesktopDir 来获取当前用户桌面的路径,而且测试的时候也能正确返回当前用户桌面路径。
各位可以试试: Local $myDestkTopPath = @DesktopDir 时,执行脚本你会发现D 盘什么也没有。调试的时候你却发现一切正常,可问题就在那里。
使用下面的代码就没有问题。

测试环境: Windows 7 x86

欢迎各位前来拍砖!Local $myDestkTopPath = RegRead("HKCU\Software\Microsoft\Windows\CurrentVersion\Explorer\Shell Folders", "Desktop")
RegWrite("HKCU\Software\Microsoft\Windows\CurrentVersion\Explorer\User Shell Folders", "Desktop", "REG_EXPAND_SZ", "D:\Desktop")
RegWrite("HKCU\Software\Microsoft\Windows\CurrentVersion\Explorer\Shell Folders", "Desktop", "REG_SZ", "D:\Desktop")

_fnFolderObjectMoveHere($myDestkTopPath,"D:")

Func _fnFolderObjectMoveHere($SourceDir, $Destdir)
        Local $objShell
        Local $objFolder
        Local $FOF_NOCONFIRMATION = 16

        $objShell = ObjCreate("shell.application")
        $objFolder = $objShell.NameSpace($Destdir)
        $objFolder.MoveHere($SourceDir, $FOF_NOCONFIRMATION)
EndFunc

annybaby 发表于 2012-11-8 14:36:06

回复 1# q113960096

不明白你想说什么各位可以试试: Local $myDestkTopPath = @DesktopDir 时,执行脚本你会发现D 盘什么也没有。调试的时候你却发现一切正常,可问题就在那里。它应该有什么??问题在哪里???

haijie1223 发表于 2012-11-8 16:44:24

楼主把我说糊涂,没看明白楼主想表达什么东西,能看懂的请用地球话再翻译一遍。

annybaby 发表于 2012-11-8 16:50:37

回复 3# haijie1223

看完楼主的描述,我觉得自己小学语文没过关,所以决定回去温书~~

A3fan 发表于 2012-11-8 17:30:22

目测LZ代码问题

xiehuahere 发表于 2012-11-8 17:50:01

回复 3# haijie1223


看代码才懂了,楼主是想把桌面的东西都移动到D盘根目录下去。
$myDestkTopPath直接用@DesktopDir 不行,而从注册表里读出桌面的路径才行了。

我确定楼主是这个意思。

netegg 发表于 2012-11-8 18:12:35

本帖最后由 netegg 于 2012-11-8 19:03 编辑

环境变量不是这么玩的,要读取或设置的话,最好使用api,
_WinAPI_ShellSetKnownFolderPath

jingygr 发表于 2012-11-14 09:35:23

netagg正解

jingygr 发表于 2012-11-14 09:35:34

netagg正解

xms77 发表于 2012-11-21 21:34:49

回复 10# jingygr
netagg?还连发两遍!
页: [1]
查看完整版本: au3 @DesktopDir 的BUG【暂定】