Mở hộp thoại Open bằng VBScrip

Các thủ thuật về hệ thống, thư mục, tập tin và mạng
Post Reply
User avatar
truongphu
VIP
VIP
Posts: 4781
Joined: Sun 04/11/2007 10:57 am
Location: Cam Đức, Khánh hòa
Has thanked: 14 times
Been thanked: 525 times

Mở hộp thoại Open bằng VBScrip

Post by truongphu »

Thủ thuật: Mở hộp thoại Open bằng VBScrip
Tác giả: truongphu
Mô tả: trong loạt bài VBSCRIPT để làm VB6 phong phú hơn.
trong bài dưới đây trình bày mở hộp thoại open, file lọc là bmp, thư mục mặc định là c:\windows\system32. Có khai thêm hàm API ShellExecute để phối hợp mở một file đã chọn. Bạn đọc có thể edit lại code tùy nhu cầu
lưu ý: Chỉ mới test trên WinXP SP2

Code: Select all

Private Declare Function ShellExecute Lib "shell32.dll" Alias "ShellExecuteA" (ByVal hwnd As Long, ByVal lpOperation As String, ByVal lpFile As String, ByVal lpParameters As String, ByVal lpDirectory As String, ByVal nShowCmd As Long) As LongPrivate Sub Form_Load()Set objDialog = CreateObject("UserAccounts.CommonDialog")objDialog.Filter = "Bitmap|*.bmp|All Files|*.*"objDialog.Flags = &H200objDialog.FilterIndex = 1objDialog.InitialDir = "c:\windows\system32"intResult = objDialog.ShowOpen If intResult = 0 Then    EndElse    ShellExecute Me.hwnd, vbNullString, objDialog.FileName, vbNullString, "C:\", 1End IfEnd Sub
o0o--truongphu--o0o

.........
Ghé thăm:
Chuyện Linh Tinh
newbi
Thành viên chính thức
Thành viên chính thức
Posts: 46
Joined: Thu 20/11/2008 8:01 am

Re: Mở hộp thoại Open bằng VBScrip

Post by newbi »

Em lấy đoạn code savefile của anh chế lại ra openfile nhưng không biết cách lấy đường dẫn file được chọn.Anh giúp em với nha.Chứ dùng Commondialog mà lại kéo theo thằng com32dlg.oxc thì chán lắm.

Private Sub Form_Load()
Set objDialog = CreateObject("SAFRCFileDlg.Fileopen")
intReturn = objDialog.OpenFileopenDlg
'filepath = ???
End Sub
User avatar
truongphu
VIP
VIP
Posts: 4781
Joined: Sun 04/11/2007 10:57 am
Location: Cam Đức, Khánh hòa
Has thanked: 14 times
Been thanked: 525 times

Re: Mở hộp thoại Open bằng VBScrip

Post by truongphu »

Code: Select all

Set objDialog = CreateObject("UserAccounts.CommonDialog")objDialog.Filter = "Word Document|*.Doc|Text File|*.txt|All Files|*.*"  '<-- các file cân locobjDialog.InitialDir = "D:\"  '<-- Thay Ðôi thu' muc mac Ðinh intResult = objDialog.ShowOpenIf intResult <> 0 Then MsgBox objDialog.FileName  ' <-- Ðuong dân 
o0o--truongphu--o0o

.........
Ghé thăm:
Chuyện Linh Tinh
newbi
Thành viên chính thức
Thành viên chính thức
Posts: 46
Joined: Thu 20/11/2008 8:01 am

Re: Mở hộp thoại Open bằng VBScrip

Post by newbi »

OK rồi!
Bác rành về VBS nhỉ. Bác có thể giúp em luôn trong chủ đề này không?
- Cho hộp thoại hiện ở vị trí nào đó chứ nó hiện ở góc cùng trên trái khó chịu lắm
- Chọn nhiều file trong dialog và cách nhận các thông số của các file mình chọn
Cảm ơn bác nhiều nha//
newbi
Thành viên chính thức
Thành viên chính thức
Posts: 46
Joined: Thu 20/11/2008 8:01 am

Re: Mở hộp thoại Open bằng VBScrip

Post by newbi »

Bác truongphu bị ốm rồi hay sao mà không thấy nữa nhỉ? Có cần em khám giúp không? Khi nào bác rảnh giúp em cái này với. em đang cần lắm, cái vbs này chắc chỉ có bác mới giúp em được thôi.
User avatar
clarkkent
Mạnh Thường Quân
Mạnh Thường Quân
Posts: 1641
Joined: Wed 16/04/2008 11:25 am
Location: Chợ Lách - Bến Tre
Been thanked: 32 times
Contact:

Re: Mở hộp thoại Open bằng VBScrip

Post by clarkkent »

hi!Mới thấy code này, hình như chỉ có tác dụng với ShowColor

Code: Select all

Private Sub Command1_Click()Dim frm As New Form1frm.Move 0, 0frm.CommonDialog1.ShowColorEnd Sub
Cách chọn nhiều file trong dialog thì trên 4rum có rồi
• Hôm bây: www.tinsoftware.com ^ ^
Cố gắng lên...
User avatar
truongphu
VIP
VIP
Posts: 4781
Joined: Sun 04/11/2007 10:57 am
Location: Cam Đức, Khánh hòa
Has thanked: 14 times
Been thanked: 525 times

Re: Mở hộp thoại Open bằng VBScrip

Post by truongphu »

newbi wrote:Khi nào bác rảnh giúp em cái này với. em đang cần lắm,
Bạn newbi còn trẻ, đang sức học cớ sao lại chọn ngôn ngữ nầy? hãy chịu khó chọn ngôn ngữ chính thống, khó một chút nhưng có căn bản và còn tiến lên. VBS có vài chiêu rồi ... cụt ngủn
newbi wrote:Cho hộp thoại hiện ở vị trí nào đó chứ nó hiện ở góc cùng trên trái khó chịu lắm
Dialog của VBS không có property về vị trí, đành chịu
newbi wrote:Chọn nhiều file trong dialog

Code: Select all

Private Sub Command1_Click()Set objDialog = CreateObject("UserAccounts.CommonDialog")objDialog.Flags = &H200     '<--'objDialog.Flags = &H18420C <- có thê chon giu'a 2 cái nâ'yobjDialog.Filter = "Word Document|*.Doc|Text File|*.txt|All Files|*.*"  '<-- các file cân locobjDialog.filterIndex = 1 '<- 1 là doc, 2 là text nhu' o' trên Ðã khaiobjDialog.InitialDir = "D:\"  '<-- Thay Ðôi thu' muc mac ÐinhintResult = objDialog.ShowOpenIf intResult = 0 Then    Exit SubElse    arrFiles = Split(objDialog.FileName, " ")    For i = 1 To UBound(arrFiles)        strFile = arrFiles(0) & arrFiles(i)        a = a & strFile & vbCrLf    NextEnd IfMsgBox aEnd Sub
o0o--truongphu--o0o

.........
Ghé thăm:
Chuyện Linh Tinh
newbi
Thành viên chính thức
Thành viên chính thức
Posts: 46
Joined: Thu 20/11/2008 8:01 am

Re: Mở hộp thoại Open bằng VBScrip

Post by newbi »

{clarkkent}

Bạn biết tại sao mình nhờ bác trường phụ giúp không? Vì mình không muốn dùng commondialog. Những máy tính không có thư viện đó thì không chạy được, còn ghép thư viện vào chương trình sẽ làm chương trình chạy chậm.
Hơn nữa, cách chọn nhiều file trong dialog mình có search rồi, nhưng chỉ tìm thấy cách dùng cho commomdialog mà không có cho VBS.

Mình dùng đoạn code sau để chọn màu cho chương trình của mình( chương trình trang trí thư mục, phần mã nguồn)

Code: Select all

Private Type CHOOSECOLOR    lStructSize As Long    hwndOwner As Long    hInstance As Long    rgbResult As Long    lpCustColors As Long    flags As CHOOSE_COLOR_FLAGS    lCustData As Long    lpfnHook As Long    lpTemplateName As String  End Type  Private Enum CHOOSE_COLOR_FLAGS    CC_RGBINIT = &H1&    CC_FULLOPEN = &H2&    CC_PREVENTFULLOPEN = &H4&    CC_SHOWHELP = &H8&    CC_ENABLEHOOK = &H10&    CC_ENABLETEMPLATE = &H20&    CC_ENABLETEMPLATEHANDLE = &H40&    CC_SOLIDCOLOR = &H80&    CC_ANYCOLOR = &H100&  End Enum  Private Declare Function ChooseColor_API Lib "comdlg32.dll" Alias "ChooseColorA" (lpChoosecolor As CHOOSECOLOR) As LongPrivate Sub Form_Load() Dim lpChoosecolor As CHOOSECOLOR  Dim aColorRef(15) As Long    With lpChoosecolor    .lStructSize = Len(lpChoosecolor)    .hwndOwner = hWnd    .rgbResult = Me.BackColor    .lpCustColors = VarPtr(aColorRef(0))    .flags = CC_SOLIDCOLOR Or CC_ANYCOLOR Or CC_RGBINIT  End With   If ChooseColor_API(lpChoosecolor) Then     Form1.BackColor = lpChoosecolor.rgbResult End IfEnd Sub
newbi
Thành viên chính thức
Thành viên chính thức
Posts: 46
Joined: Thu 20/11/2008 8:01 am

Re: Mở hộp thoại Open bằng VBScrip

Post by newbi »

Hổng phải dzậy. Chọn trong dialog có hình dạng như của win ấy chứ cái dialog xấu xí đó thì cháu tự thiết kế được chứ không cần vbs.
Chắc không làm được phải không bác?
User avatar
truongphu
VIP
VIP
Posts: 4781
Joined: Sun 04/11/2007 10:57 am
Location: Cam Đức, Khánh hòa
Has thanked: 14 times
Been thanked: 525 times

Re: Mở hộp thoại Open bằng VBScrip

Post by truongphu »

newbi wrote:Hổng phải dzậy. Chọn trong dialog có hình dạng như của win ấy chứ cái dialog xấu xí đó thì cháu tự thiết kế được chứ không cần vbs.
Chắc không làm được phải không bác?
Bạn học ngành y sao không cẩn thận thế?
truongphu wrote:

Code: Select all

'objDialog.Flags = &H18420C <- có thê chon giu'a 2 cái nâ'y 
o0o--truongphu--o0o

.........
Ghé thăm:
Chuyện Linh Tinh
newbi
Thành viên chính thức
Thành viên chính thức
Posts: 46
Joined: Thu 20/11/2008 8:01 am

Re: Mở hộp thoại Open bằng VBScrip

Post by newbi »

Hì. Đây là tin học mà, không cẩn thận có chết ai đâu. Nói vậy chứ công nhận mình cũng hấp tấp thật. Cảm ơn bác nhiều lắm.
User avatar
little_boi
Thành viên chính thức
Thành viên chính thức
Posts: 23
Joined: Mon 04/05/2009 11:24 am
Location: Vũng Tàu
Been thanked: 2 times
Contact:

Re: Mở hộp thoại Open bằng VBScrip

Post by little_boi »

Mấy cái này em thấy trong cái Sample của VbsEdit...
Save dialog

Code: Select all

 Set objDialog = CreateObject("SAFRCFileDlg.FileSave") objDialog.FileName = "C:\Scripts\Script1.vbs"objDialog.FileType = "VBScript Script"intReturn = objDialog.OpenFileSaveDlg  
Open Dialog

Code: Select all

Set objDialog = CreateObject("UserAccounts.CommonDialog") objDialog.Filter = "VBScript Scripts|*.vbs|All Files|*.*"objDialog.FilterIndex = 1objDialog.InitialDir = "C:\Scripts"intResult = objDialog.ShowOpenEnd If
Chắc dậy là đủ xài òi !..Vác thêm cái commomdialog chi cho mệt :D
MSGBOX "ILUSM", vbExclamation
Post Reply

Return to “[VB] Hệ thống - Tập tin - Thư mục và Mạng”