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實現對文件夾訪問的控制(加密解密),求具體步驟或項目文件,本人菜鳥
您說的這個方法我沒有使用過。
對文件夾加密,我使用的是文件夾加密超級大師。
文件夾加密超級大師具有界面漂亮友好、簡單易用、穩定無錯、功能強大和兼容性好等特點。
文件夾加密超級大師加密的文件(夾)可以防止刪除、拷貝和移動。
加密時,在需要加密的文件和文件夾上單擊滑鼠右鍵選擇加密就可以。
解密時,雙擊已加密文件夾輸入正確密碼即可,十分方便。
你可以到網路上搜索下載文件夾加密超級大師,看能不能幫助解決你的這個問題。