api选择文件夹
1. 用api新建文件夹 T_T
SplitCurPath里装的是文件还是文件夹?
Kill用来删文件。
RmDir用来删文件夹的。(要求该文件夹为空)
如果要强制删除,请用FSO:
Dim FSO As Object
Set FSO = CreateObject("scripting.filesystemobject")
FSO.deletefolder "c:\sss"
补充:你用的什么版本的VB?上面的代码我是调试过才发上来的,另外你的变量SplitCurPath(i)里是完整的路径吗?需要完整的路径。
2. 如何通过API枚举本机的共享文件夹
看看研究这个例子
PrivateConstRESOURCE_CONNECTEDAsLong=&H1&
PrivateConstRESOURCE_GLOBALNETAsLong=&H2&
PrivateConstRESOURCE_REMEMBEREDAsLong=&H3&
_DIRECTORY&=&H9
_DOMAIN&=&H1
_FILE&=&H4
_GENERIC&=&H0
_GROUP&=&H5
_NETWORK&=&H6
_ROOT&=&H7
_SERVER&=&H2
_SHARE&=&H3
_SHAREADMIN&=&H8
PrivateConstRESOURCETYPE_ANYAsLong=&H0&
PrivateConstRESOURCETYPE_DISKAsLong=&H1&
PrivateConstRESOURCETYPE_PRINTAsLong=&H2&
PrivateConstRESOURCETYPE_UNKNOWNAsLong=&HFFFF&
PrivateConstRESOURCEUSAGE_ALLAsLong=&H0&
PrivateConstRESOURCEUSAGE_CONNECTABLEAsLong=&H1&
PrivateConstRESOURCEUSAGE_CONTAINERAsLong=&H2&
PrivateConstRESOURCEUSAGE_RESERVEDAsLong=&H80000000
PrivateConstNO_ERROR=0
PrivateConstERROR_MORE_DATA=234
PrivateConstRESOURCE_ENUM_ALLAsLong=&HFFFF
PrivateTypeNETRESOURCE
dwScopeAsLong
dwTypeAsLong
dwDisplayTypeAsLong
dwUsageAsLong
pLocalNameAsLong
pRemoteNameAsLong
pCommentAsLong
pProviderAsLong
EndType
PrivateTypeNETRESOURCE_REAL
dwScopeAsLong
dwTypeAsLong
dwDisplayTypeAsLong
dwUsageAsLong
sLocalNameAsString
sRemoteNameAsString
sCommentAsString
sProviderAsString
EndType
"mpr.dll"Alias"WNetAddConnection2A"(lpNetResourceAsNETRESOURCE,ByVallpPasswordAsString,ByVallpUserNameAsString,ByValdwFlagsAsLong)AsLong
"mpr.dll"Alias"WNetOpenEnumA"(ByValdwScopeAsLong,ByValdwTypeAsLong,ByValdwUsageAsLong,lpNetResourceAsAny,lphEnumAsLong)AsLong
"mpr.dll"Alias"WNetEnumResourceA"(ByValhEnumAsLong,lpcCountAsLong,lpBufferAsNETRESOURCE,lpBufferSizeAsLong)AsLong
"mpr.dll"(ByValhEnumAsLong)AsLong
PrivateDeclareSubCopyMemLib"kernel32"Alias"RtlMoveMemory"(lpToAsAny,lpFromAsAny,ByVallLenAsLong)
"kernel32"Alias"lstrlenA"(ByVallpStringAsAny)AsLong
Subgetinfor()
ConstMAX_RESOURCES=256
ConstNOT_A_CONTAINER=-1
DimbFirstTimeAsBoolean
DimlReturnAsLong
DimhEnumAsLong
DimlCountAsLong
DimlMinAsLong
DimlLengthAsLong
DimlAsLong
DimlBufferSizeAsLong
DimlLastIndexAsLong
DimuNetApi(0ToMAX_RESOURCES)AsNETRESOURCE
DimuNet()AsNETRESOURCE_REAL
bFirstTime=True
Do
IfbFirstTimeThen
lReturn=WNetOpenEnum(RESOURCE_GLOBALNET,RESOURCETYPE_DISK,RESOURCEUSAGE_ALL,ByVal0&,hEnum)
bFirstTime=False
Else
IfuNet(lLastIndex).dwUsageAndRESOURCEUSAGE_CONTAINERThen
lReturn=WNetOpenEnum(RESOURCE_GLOBALNET,RESOURCETYPE_DISK,RESOURCEUSAGE_ALL,uNet(lLastIndex),hEnum)
Else
lReturn=NOT_A_CONTAINER
hEnum=0
EndIf
lLastIndex=lLastIndex+1
EndIf
IflReturn=NO_ERRORThen
lCount=RESOURCE_ENUM_ALL
Do
lBufferSize=UBound(uNetApi)*Len(uNetApi(0))/2
lReturn=WNetEnumResource(hEnum,lCount,uNetApi(0),lBufferSize)
IflCount>0Then
ReDimPreserveuNet(0TolMin+lCount-1)AsNETRESOURCE_REAL
Forl=0TolCount-1
uNet(lMin+l).dwScope=uNetApi(l).dwScope
uNet(lMin+l).dwType=uNetApi(l).dwType
uNet(lMin+l).dwDisplayType=uNetApi(l).dwDisplayType
uNet(lMin+l).dwUsage=uNetApi(l).dwUsage
IfuNetApi(l).pLocalNameThen
lLength=lstrlen(uNetApi(l).pLocalName)
uNet(lMin+l).sLocalName=Space$(lLength)
CopyMemByValuNet(lMin+l).sLocalName,ByValuNetApi(l).pLocalName,lLength
EndIf
IfuNetApi(l).pRemoteNameThen
lLength=lstrlen(uNetApi(l).pRemoteName)
uNet(lMin+l).sRemoteName=Space$(lLength)
CopyMemByValuNet(lMin+l).sRemoteName,ByValuNetApi(l).pRemoteName,lLength
EndIf
IfuNetApi(l).pCommentThen
lLength=lstrlen(uNetApi(l).pComment)
uNet(lMin+l).sComment=Space$(lLength)
CopyMemByValuNet(lMin+l).sComment,ByValuNetApi(l).pComment,lLength
EndIf
IfuNetApi(l).pProviderThen
lLength=lstrlen(uNetApi(l).pProvider)
uNet(lMin+l).sProvider=Space$(lLength)
CopyMemByValuNet(lMin+l).sProvider,ByValuNetApi(l).pProvider,lLength
EndIf
DoEvents
Nextl
EndIf
lMin=lMin+lCount
DoEvents
LoopWhilelReturn=ERROR_MORE_DATA
EndIf
IfhEnumThen
l=WNetCloseEnum(hEnum)
EndIf
DoEvents
LoopWhilelLastIndex<lMin
cmd2.Visible=False
IfUBound(uNet)>0Then
Forl=0ToUBound(uNet)
SelectCaseuNet(l).dwDisplayType
CaseRESOURCEDISPLAYTYPE_DIRECTORY&
List1.AddItem"Directory..."
CaseRESOURCEDISPLAYTYPE_DOMAIN
List1.AddItem"Domain..."
CaseRESOURCEDISPLAYTYPE_FILE
List1.AddItem"File..."
CaseRESOURCEDISPLAYTYPE_GENERIC
List1.AddItem"Generic..."
CaseRESOURCEDISPLAYTYPE_GROUP
List1.AddItem"Group..."
CaseRESOURCEDISPLAYTYPE_NETWORK&
List1.AddItem"Network..."
CaseRESOURCEDISPLAYTYPE_ROOT&
List1.AddItem"Root..."
CaseRESOURCEDISPLAYTYPE_SERVER
List1.AddItem"Server..."
CaseRESOURCEDISPLAYTYPE_SHARE
List1.AddItem"Share..."
CaseRESOURCEDISPLAYTYPE_SHAREADMIN&
List1.AddItem"ShareAdmin..."
EndSelect
List1.AddItemuNet(l).sRemoteName&uNet(l).sComment
List1.Refresh
DoEvents
Nextl
EndIf
EndSub
PrivateSubCommand1_Click()
getinfor
EndSub
PrivateSubForm_Unload(CancelAsInteger)
UnloadMe
EndSub
3. 在excel vba中如何调用api函数实现快速查找文件名
excel vba调用windows API 快速查找所选择的文件
excel选中文件名清单、自动从“a1"文件夹中查找相应的文件。
ShellExecuteA,DataObject,Clipboard,find,SendKeys
Private Declare Function ShellExecute Lib "shell32.dll" Alias _
"ShellExecuteA" (ByVal hwnd As Long, ByVal lpszOp As _
String, ByVal lpszFile As String, ByVal lpszParams As String, _
ByVal lpszDir As String, ByVal FsShowCmd As Long) As Long
Const SW_SHOW = 5
Sub test()
Selection.Copy
Dim MyData As DataObject
Dim sTemp As String, s As String
Set MyData = New DataObject
MyData.GetFromClipboard
sTemp = MyData.GetText
s = Replace(sTemp, vbCrLf, ";")
s = Replace(s, vbTab, ";")
MyData.SetText (s)
MyData.PutInClipboard
ShellExecute 0&, "find", Range("a1"), _
vbNullString, vbNullString, SW_SHOW
Application.Wait (Now + TimeValue("0:00:02"))
SendKeys s & "{ENTER}"
End Sub
4. 怎样使用api生成windows标准打开文件夹(目录浏览窗口)窗口
To
wgliang(禅院深深):不好意思,应该是这样。vars
:
string;begin
if
SelectDirectory('请选择文件夹:','',s)
then
//在
uses
中添加
FileCtrl
edtThePath.Text
:=
s;
//其中
edtThePath
为
Edit
控件end;
5. 如图,在VB中,如何打开这样的文件夹选择对话框。用控件,还是API,谢谢!
打开文件对话框,添加CommonDialog控件就可以。
添加方法:【工程】-【部件】在部件对话框勾选:Microsoft Common Dialog Control 6.0 (SP3)
这样控件添加在工具箱中了,拖动到界面即可。
主要代码:
CommonDialog1.InitDir = "c:/" '对话框初始目录
CommonDialog1.Filter = "文本文件 (.txt)|*.txt|图片(.gif)|*.gif" '设置打开文件类型
CommonDialog1.ShowOpen '打开文件对话框
'CommonDialog1.ShowSave '保存文件对话框
'CommonDialog1.ShowColor '打开颜色设置对话框 等等
6. 如何用API HOOK实现对文件夹访问的控制(加密解密),求具体步骤或项目文件,本人菜鸟
您说的这个方法我没有使用过。
对文件夹加密,我使用的是文件夹加密超级大师。
文件夹加密超级大师具有界面漂亮友好、简单易用、稳定无错、功能强大和兼容性好等特点。
文件夹加密超级大师加密的文件(夹)可以防止删除、拷贝和移动。
加密时,在需要加密的文件和文件夹上单击鼠标右键选择加密就可以。
解密时,双击已加密文件夹输入正确密码即可,十分方便。
你可以到网络上搜索下载文件夹加密超级大师,看能不能帮助解决你的这个问题。