• Vui lòng đọc nội qui diễn đàn để tránh bị xóa bài viết
  • Tìm kiếm trước khi đặt câu hỏi

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
Hình đại diện của người dùng
truongphu
VIP
VIP
Bài viết: 4756
Ngày tham gia: CN 04/11/2007 10:57 am
Đến từ: Cam Đức, Khánh hòa
Has thanked: 14 time
Been thanked: 509 time

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

Gửi bàigửi bởi truongphu » T.Ba 29/04/2008 4:11 pm

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


Mã: Chọn hết

  1. 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 Long
  2. Private Sub Form_Load()
  3. Set objDialog = CreateObject("UserAccounts.CommonDialog")
  4. objDialog.Filter = "Bitmap|*.bmp|All Files|*.*"
  5. objDialog.Flags = &H200
  6. objDialog.FilterIndex = 1
  7. objDialog.InitialDir = "c:\windows\system32"
  8. intResult = objDialog.ShowOpen
  9.  
  10. If intResult = 0 Then
  11.     End
  12. Else
  13.     ShellExecute Me.hwnd, vbNullString, objDialog.FileName, vbNullString, "C:\", 1
  14. End If
  15. End 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
Bài viết: 46
Ngày tham gia: T.Năm 20/11/2008 8:01 am

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

Gửi bàigửi bởi newbi » T.Năm 15/01/2009 12:11 pm

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

Hình đại diện của người dùng
truongphu
VIP
VIP
Bài viết: 4756
Ngày tham gia: CN 04/11/2007 10:57 am
Đến từ: Cam Đức, Khánh hòa
Has thanked: 14 time
Been thanked: 509 time

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

Gửi bàigửi bởi truongphu » T.Năm 15/01/2009 12:43 pm

Mã: Chọn hết

  1. Set objDialog = CreateObject("UserAccounts.CommonDialog")
  2. objDialog.Filter = "Word Document|*.Doc|Text File|*.txt|All Files|*.*"  '<-- các file cân loc
  3. objDialog.InitialDir = "D:\"  '<-- Thay Ðôi thu' muc mac Ðinh
  4.  
  5. intResult = objDialog.ShowOpen
  6. If intResult <> 0 Then MsgBox objDialog.FileName  ' <-- Ðuong dân
  7.  
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
Bài viết: 46
Ngày tham gia: T.Năm 20/11/2008 8:01 am

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

Gửi bàigửi bởi newbi » T.Sáu 16/01/2009 11:41 am

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
Bài viết: 46
Ngày tham gia: T.Năm 20/11/2008 8:01 am

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

Gửi bàigửi bởi newbi » CN 19/04/2009 8:47 pm

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.

Hình đại diện của người dùng
clarkkent
Mạnh Thường Quân
Mạnh Thường Quân
Bài viết: 1641
Ngày tham gia: T.Tư 16/04/2008 11:25 am
Đến từ: Chợ Lách - Bến Tre
Been thanked: 31 time
Liên hệ:

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

Gửi bàigửi bởi clarkkent » T.Hai 20/04/2009 10:49 am

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

Mã: Chọn hết

  1. Private Sub Command1_Click()
  2. Dim frm As New Form1
  3. frm.Move 0, 0
  4. frm.CommonDialog1.ShowColor
  5. End 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...

Hình đại diện của người dùng
truongphu
VIP
VIP
Bài viết: 4756
Ngày tham gia: CN 04/11/2007 10:57 am
Đến từ: Cam Đức, Khánh hòa
Has thanked: 14 time
Been thanked: 509 time

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

Gửi bàigửi bởi truongphu » T.Hai 20/04/2009 1:37 pm

newbi đã viết: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 đã viết: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 đã viết:Chọn nhiều file trong dialog


Mã: Chọn hết

  1. Private Sub Command1_Click()
  2. Set objDialog = CreateObject("UserAccounts.CommonDialog")
  3. objDialog.Flags = &H200     '<--
  4. 'objDialog.Flags = &H18420C <- có thê chon giu'a 2 cái nâ'y
  5. objDialog.Filter = "Word Document|*.Doc|Text File|*.txt|All Files|*.*"  '<-- các file cân loc
  6. objDialog.filterIndex = 1 '<- 1 là doc, 2 là text nhu' o' trên Ðã khai
  7. objDialog.InitialDir = "D:\"  '<-- Thay Ðôi thu' muc mac Ðinh
  8. intResult = objDialog.ShowOpen
  9. If intResult = 0 Then
  10.     Exit Sub
  11. Else
  12.     arrFiles = Split(objDialog.FileName, " ")
  13.     For i = 1 To UBound(arrFiles)
  14.         strFile = arrFiles(0) & arrFiles(i)
  15.         a = a & strFile & vbCrLf
  16.     Next
  17. End If
  18. MsgBox a
  19. End 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
Bài viết: 46
Ngày tham gia: T.Năm 20/11/2008 8:01 am

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

Gửi bàigửi bởi newbi » T.Hai 20/04/2009 3:08 pm

{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)

Mã: Chọn hết

  1. Private Type CHOOSECOLOR
  2.     lStructSize As Long
  3.     hwndOwner As Long
  4.     hInstance As Long
  5.     rgbResult As Long
  6.     lpCustColors As Long
  7.     flags As CHOOSE_COLOR_FLAGS
  8.     lCustData As Long
  9.     lpfnHook As Long
  10.     lpTemplateName As String
  11.   End Type
  12.   Private Enum CHOOSE_COLOR_FLAGS
  13.     CC_RGBINIT = &H1&
  14.     CC_FULLOPEN = &H2&
  15.     CC_PREVENTFULLOPEN = &H4&
  16.     CC_SHOWHELP = &H8&
  17.     CC_ENABLEHOOK = &H10&
  18.     CC_ENABLETEMPLATE = &H20&
  19.     CC_ENABLETEMPLATEHANDLE = &H40&
  20.     CC_SOLIDCOLOR = &H80&
  21.     CC_ANYCOLOR = &H100&
  22.   End Enum
  23.   Private Declare Function ChooseColor_API Lib "comdlg32.dll" Alias "ChooseColorA" (lpChoosecolor As CHOOSECOLOR) As Long
  24. Private Sub Form_Load()
  25.  Dim lpChoosecolor As CHOOSECOLOR
  26.   Dim aColorRef(15) As Long
  27.  
  28.   With lpChoosecolor
  29.     .lStructSize = Len(lpChoosecolor)
  30.     .hwndOwner = hWnd
  31.     .rgbResult = Me.BackColor
  32.     .lpCustColors = VarPtr(aColorRef(0))
  33.     .flags = CC_SOLIDCOLOR Or CC_ANYCOLOR Or CC_RGBINIT
  34.   End With
  35.  
  36.   If ChooseColor_API(lpChoosecolor) Then
  37.      Form1.BackColor = lpChoosecolor.rgbResult
  38.  End If
  39. End Sub

newbi
Thành viên chính thức
Thành viên chính thức
Bài viết: 46
Ngày tham gia: T.Năm 20/11/2008 8:01 am

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

Gửi bàigửi bởi newbi » T.Hai 20/04/2009 3:16 pm

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?

Hình đại diện của người dùng
truongphu
VIP
VIP
Bài viết: 4756
Ngày tham gia: CN 04/11/2007 10:57 am
Đến từ: Cam Đức, Khánh hòa
Has thanked: 14 time
Been thanked: 509 time

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

Gửi bàigửi bởi truongphu » T.Ba 21/04/2009 9:11 pm

newbi đã viết: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 đã viết:

Mã: Chọn hết

  1. '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
Bài viết: 46
Ngày tham gia: T.Năm 20/11/2008 8:01 am

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

Gửi bàigửi bởi newbi » T.Ba 21/04/2009 9:54 pm

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.

Hình đại diện của người dùng
little_boi
Thành viên chính thức
Thành viên chính thức
Bài viết: 23
Ngày tham gia: T.Hai 04/05/2009 11:24 am
Đến từ: Vũng Tàu
Been thanked: 2 time
Liên hệ:

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

Gửi bàigửi bởi little_boi » T.Tư 05/08/2009 10:49 am

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

Mã: Chọn hết

  1.  
  2. Set objDialog = CreateObject("SAFRCFileDlg.FileSave")
  3.  
  4. objDialog.FileName = "C:\Scripts\Script1.vbs"
  5. objDialog.FileType = "VBScript Script"
  6. intReturn = objDialog.OpenFileSaveDlg
  7.  
  8.  

Open Dialog

Mã: Chọn hết

  1. Set objDialog = CreateObject("UserAccounts.CommonDialog")
  2.  
  3. objDialog.Filter = "VBScript Scripts|*.vbs|All Files|*.*"
  4. objDialog.FilterIndex = 1
  5. objDialog.InitialDir = "C:\Scripts"
  6. intResult = objDialog.ShowOpen
  7. End If

Chắc dậy là đủ xài òi !..Vác thêm cái commomdialog chi cho mệt :D
MSGBOX "ILUSM", vbExclamation


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

Đang trực tuyến

Đang xem chuyên mục này: Không có thành viên nào trực tuyến.1 khách