• 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
User avatar
truongphu
VIP
VIP
Posts: 4766
Joined: Sun 04/11/2007 10:57 am
Location: Cam Đức, Khánh hòa
Has thanked: 14 times
Been thanked: 520 times

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

Postby truongphu » Tue 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


Code: Select all

  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
Posts: 46
Joined: Thu 20/11/2008 8:01 am

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

Postby newbi » Thu 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

User avatar
truongphu
VIP
VIP
Posts: 4766
Joined: Sun 04/11/2007 10:57 am
Location: Cam Đức, Khánh hòa
Has thanked: 14 times
Been thanked: 520 times

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

Postby truongphu » Thu 15/01/2009 12:43 pm

Code: Select all

  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
Posts: 46
Joined: Thu 20/11/2008 8:01 am

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

Postby newbi » Fri 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
Posts: 46
Joined: Thu 20/11/2008 8:01 am

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

Postby newbi » Sun 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.

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: 31 times
Contact:

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

Postby clarkkent » Mon 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

Code: Select all

  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...

User avatar
truongphu
VIP
VIP
Posts: 4766
Joined: Sun 04/11/2007 10:57 am
Location: Cam Đức, Khánh hòa
Has thanked: 14 times
Been thanked: 520 times

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

Postby truongphu » Mon 20/04/2009 1:37 pm

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

  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
Posts: 46
Joined: Thu 20/11/2008 8:01 am

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

Postby newbi » Mon 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)

Code: Select all

  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
Posts: 46
Joined: Thu 20/11/2008 8:01 am

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

Postby newbi » Mon 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?

User avatar
truongphu
VIP
VIP
Posts: 4766
Joined: Sun 04/11/2007 10:57 am
Location: Cam Đức, Khánh hòa
Has thanked: 14 times
Been thanked: 520 times

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

Postby truongphu » Tue 21/04/2009 9:11 pm

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

  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
Posts: 46
Joined: Thu 20/11/2008 8:01 am

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

Postby newbi » Tue 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.

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

Postby little_boi » Wed 05/08/2009 10:49 am

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

Code: Select all

  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

Code: Select all

  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


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

Who is online

Users browsing this forum: No registered users and 1 guest