★ 使用Name函数的困惑,书上写错了吗?!请各位高手看看!! ★

yunxp 2003-05-14 01:05:41


使用 Name函数可以实现对文件的移动。但是这个函数能够跨驱动器移动(空)文件夹吗??我看“IT词典-VB函数库”中第194页的一句话是“如有必需,Name可跨驱动器移动”。 可是我试了半天,这个函数却不能跨驱动器移动(空)文件夹。比如:Name "c:\aaa1\ok.txt" As "d:\ok.txt"可以。可是:Name "c:\aaa1\Folder" As "d:\"却出错。

如果不能,谁能告诉我如何移动文件夹?(最好是用某函数)






-----------------------------------------------------------------------
另外还有几个问题。

问题1:
请问,如果我已经知道了一个窗口的句柄为 2176窗口的类型为ComboBox,我想实现:一旦发现满足上述条件(即发现这个窗口出现),就立即自动把焦点聚在ComboBox上,并且在这个ComboBox上keybd_event模拟键盘打入字符"F"?

问题2:
我想编程实现对资源管理器窗口的刷新,(就是资源管理器右半边的SysListView32). 如果能实现右键里刷新的效果也可以的.我想操作注册表应该可以实现的.请问谁知道在哪里能够有相关的键值??我曾试过注册表内的一个资源管理器自动刷新的选项,但是不管用.


问题3:
我发现MkDir只能创建一级目录,如 MkDir "c:\aaa",请问如果我想创建二级目录,如MkDir "c:\aaa\bbb",该怎样做呢?有一个朋友给了我一个很复杂很复杂的例子,用了大量的自定义函数。我看了一下午还是没看懂。呵呵。

-----------------------------------------------------------------------
我是大连的编程菜鸟,My QQ:9227066 My Tel:0411-2113485
...全文
9 点赞 收藏 15
写回复
15 条回复
切换为时间正序
当前发帖距今超过3年,不再开放新的回复
发表回复
yunxp 2003-05-14
To: ch21st(风尘鸟)
我觉得您说的这一句话不对,: 使用 Name,可以移动文件从一个目录或文件夹到另一处,但是不能移动目录或文件夹。
经我的实验,用Name可以移动文件夹的。比如 Name "c:\aaa\Floder As c:\bbb\floder 就可以成立。
回复
yunxp 2003-05-14
To: ch21st(风尘鸟)
谢谢风尘鸟,因为我水平太那个。。那个。。。菜。:(
所以您上一次回复给我的帖子我没能看懂。有点复杂。
我要仔细看看您贴的帖子才能看懂。
如果没有更好的办法,我也会给你揭帖的。2次让你回答我的问题,真的十分感谢你!!:)
回复
yunxp 2003-05-14
To:myhot(大头河马)

大哥你说得对!!不能只局限上面的函数啦!我想只要是能实现文件夹的 复制 粘贴 剪贴 删除这几项功能就可以了!
回复
不要只局限上面的函数啦,,也许到现在用别的办法早已实现你的功能了!
回复
道素 2003-05-14
你可以参考
http://support.microsoft.com/default.aspx?scid=http://support.microsoft.com:80/support/kb/articles/Q151/7/99.asp&NoWebContent=1

http://support.microsoft.com/default.aspx?scid=http://support.microsoft.com:80/support/kb/articles/Q165/9/19.asp&NoWebContent=1

另外那三个问题我在另一个帖子回复过你,你可以试试看
回复
道素 2003-05-14
Name oldpathname As newpathname
newpathname 和 oldpathname 必须是在同一个驱动器上。如果 newpathname 所指定的路径存在,且不同于 oldpathname 所指定的路径,则 Name 语句会将文件移到新的目录或文件夹,并在必要时重新命名文件。如果 newpathname 和 oldpathname 有不同的路径和相同的文件名,那么 Name 只会移动文件到新的位置,并保持文件名不变。使用 Name,可以移动文件从一个目录或文件夹到另一处,但是不能移动目录或文件夹。
在一个已打开的文件上使用 Name,将会产生错误。必须在改变名称之前,先关闭打开的文件。Name 参数不能包括多字符 (*) 和单字符 (?) 的统配符。

可以试试SHFileOperation
- hwnd - 显示文件操作对话框的窗口句柄
- wFunc - 表示要进行的操作,可以取以下值:
- FO_COPY - 拷贝文件。所要拷贝的文件由pFrom成员指定,目的地址有pTo成员指定。
- FO_DELETE - 删除pFrom指定的文件。(pTo 被忽略。)
- FO_MOVE - 移动文件。所要移动的文件由pFrom成员指定,目的地址有pTo成员指定。
- FO_RENAME - 改名pFrom指定的文件。
- pFrom - 指定文件名的缓冲区的地址。必须以Chr(0)结尾。如果包括多个文件以Chr(0)分割。
- pTo - 指定目的文件名或目录的缓冲区的地址。必须以Chr(0)结尾。如果使用了FOF_MULTIDESTFILES标志,可以包括多个文件名,文件名之间以Chr(0)分割。
- fFlags - 标志:
- FOF_ALLOWUNDO - 允许恢复
- FOF_FILESONLY - 如果使用了*.*,只操作文件。
- FOF_MULTIDESTFILES - pTo成员可以为多个目的文件。
- FOF_NOCONFIRMATION - 不显示确认对话框。
- FOF_NOCONFIRMMKDIR - 不确认是否建立目录。
- FOF_NOERRORUI - 如果有错误,不显示用户界面。
- FOF_RENAMEONCOLLISION - 如果目的文件已经存在,给要处理的文件一个新名字。
- FOF_SILENT - 不显示进度对话框。
- FOF_SIMPLEPROGRESS - 显示进度框,但不显示文件名。
- fAnyOperationsAborted -如果用户退出,该成员为TRUE,否则为FALSE。
- lpszProgressTitle - 进度框的标题,只有选择了FOF_SIMPLEPROGRESS标志才有效。

下面是一个例子显示如何拷贝文件:
--------------------
1. 在Visual Basic中启动一个新的EXE工程,其中包括Form1。
2. 添加两个检查框和一个按钮在Form1上。
3. 加入以下代码到Form1的代码窗口:
Option Explicit

Private Const FO_COPY = &H2& 'Copies the files specified
'in the pFrom member to the
'location specified in the
'pTo member.

Private Const FO_DELETE = &H3& 'Deletes the files specified
'in pFrom (pTo is ignored.)

Private Const FO_MOVE = &H1& 'Moves the files specified
'in pFrom to the location
'specified in pTo.

Private Const FO_RENAME = &H4& 'Renames the files
'specified in pFrom.

Private Const FOF_ALLOWUNDO = &H40& 'Preserve Undo information.

Private Const FOF_CONFIRMMOUSE = &H2& 'Not currently implemented.

Private Const FOF_CREATEPROGRESSDLG = &H0& 'handle to the parent
'window for the
'progress dialog box.

Private Const FOF_FILESONLY = &H80& 'Perform the operation
'on files only if a
'wildcard file name
'(*.*) is specified.

Private Const FOF_MULTIDESTFILES = &H1& 'The pTo member
'specifies multiple
'destination files (one
'for each source file)
'rather than one
'directory where all
'source files are
'to be deposited.

Private Const FOF_NOCONFIRMATION = &H10& 'Respond with Yes to
'All for any dialog box
'that is displayed.

Private Const FOF_NOCONFIRMMKDIR = &H200& 'Does not confirm the
'creation of a new
'directory if the
'operation requires one
'to be created.

Private Const FOF_RENAMEONCOLLISION = &H8& 'Give the file being
'operated on a new name
'in a move, copy, or
'rename operation if a
'file with the target
'name already exists.

Private Const FOF_SILENT = &H4& 'Does not display a
'progress dialog box.

Private Const FOF_SIMPLEPROGRESS = &H100& 'Displays a progress
'dialog box but does
'not show the
'file names.

Private Const FOF_WANTMAPPINGHANDLE = &H20&
'If FOF_RENAMEONCOLLISION is specified,
'the hNameMappings member will be filled
'in if any files were renamed.

' The SHFILOPSTRUCT is not double-word aligned. If no steps are
' taken, the last 3 variables will not be passed correctly. This
' has no impact unless the progress title needs to be changed.

Private Type SHFILEOPSTRUCT
hwnd As Long
wFunc As Long
pFrom As String
pTo As String
fFlags As Integer
fAnyOperationsAborted As Long
hNameMappings As Long
lpszProgressTitle As String
End Type

Private Declare Sub CopyMemory Lib "KERNEL32" _
Alias "RtlMoveMemory" _
(hpvDest As Any, _
hpvSource As Any, _
ByVal cbCopy As Long)

Private Declare Function SHFileOperation Lib "Shell32.dll" _
Alias "SHFileOperationA" _
(lpFileOp As Any) As Long

Private Sub Form_Load()
Check1.Caption = "Copy All Files in VB Directory"
Check2.Caption = "Display Custom Message"
Command1.Caption = "Copy Files"
End Sub

Private Sub Command1_Click()
Dim result As Long
Dim lenFileop As Long
Dim foBuf() As Byte
Dim fileop As SHFILEOPSTRUCT

lenFileop = LenB(fileop) ' double word alignment increase
ReDim foBuf(1 To lenFileop) ' the size of the structure.

With fileop
.hwnd = Me.hwnd

.wFunc = FO_COPY

' The files to copy separated by Nulls and terminated by two
' nulls
If Check1.Value = vbChecked Then
.pFrom = Environ("windir") & "\*.exe"
.fFlags = FOF_SIMPLEPROGRESS Or FOF_FILESONLY
Else
.pFrom = Environ("windir") & "\Explorer.exe" _
& vbNullChar _
& Environ("windir") & "\WinHelp.exe" _
& vbNullChar _
& vbNullChar
End If

.pTo = "C:\testfolder\" & vbNullChar & vbNullChar

If Check2.Value = vbChecked Then
.fFlags = FOF_SIMPLEPROGRESS Or FOF_NOCONFIRMATION Or _
FOF_NOCONFIRMMKDIR
.lpszProgressTitle = "Your custom dialog string " & _
"appears here." & vbNullChar _
& vbNullChar
End If
End With

' Now we need to copy the structure into a byte array
Call CopyMemory(foBuf(1), fileop, lenFileop)

' Next we move the last 12 bytes by 2 to byte align the data
Call CopyMemory(foBuf(19), foBuf(21), 12)
result = SHFileOperation(foBuf(1))

If result <> 0 Then ' Operation failed
MsgBox Err.LastDllError 'Show the error returned from
'the API.
Else
If fileop.fAnyOperationsAborted <> 0 Then
MsgBox "Operation Failed"
End If
End If
End Sub
回复
yunxp 2003-05-14
我只是想知道能不能用Name函数实现文件夹的移动。或者其他的方法跨驱动器移动夹的方法也行得。
回复
yunxp 2003-05-14
To: qingming81(晴明)
我当然是需要这样的功能才这样提问的。不然我也不会花这么大力气了。呵呵。
回复
yunxp 2003-05-14
顶!
回复
qingming81 2003-05-14
不用函数难道不行吗?如果需要,你直接在另外一个盘上创建同样名字的文件夹也是一样吧。
使用mkdir,看看帮助
回复
yunxp 2003-05-14
不是吧!!!!!!!大家没人会?????????!!!!!!
回复
yunxp 2003-05-14
我顶~!
回复
yunxp 2003-05-14
大家上班了吗?
回复
watt 2003-05-14
@_@
回复
yunxp 2003-05-14
唉~Name啊Name
回复
相关推荐
基于java的企业人事管理系统设计--软件工程课程设计(含源码与论文设计).rar 1 引言 4 1.1 课程设计目标 4 1.2 编程工具(编程环境)介绍 4 1.3 实施时间及主要实施步骤 4 2 需求分析 5 3 系统总体设计 6 4 数据库设计 6 5 主要功能模块的设计与实现 10 5.1 功能模块1详细设计(综合查询员工信息)..........................................................10 5.1.1 详细设计.......................................................................................................10 5.1.2 算法流程........................................................................................................15 5.1.3 界面设计及测试结果.....................................................................................15 6 调试分析 15 7 用户手册 16 8 测试结果 17 8.1 员工信息的添加...................................................................................................17 8.2 员工信息的修改...................................................................................................17 8.3 员工信息的删除...................................................................................................18 8.4 员工信息的综合查询...........................................................................................18 8.5 员工信息按性别统计的结果................................................................................19 8.6 员工信息按状态统计的结果...............................................................................19 8.7 员工信息按职称统计的结果................................................................................20 9 结论 20 10 参考文献 20
发帖
VB基础类
创建于2007-09-28

7493

社区成员

VB 基础类
申请成为版主
帖子事件
创建了帖子
2003-05-14 01:05
社区公告
暂无公告