• 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

VB6 nhận kết quả của môi trường Dos

Các thủ thuật liên quan đến việc xử lý ứng dụng, biểu mẫu và control
Hình đại diện của người dùng
truongphu
VIP
VIP
Bài viết: 4755
Ngày tham gia: CN 04/11/2007 10:57 am
Đến từ: Cam Đức, Khánh hòa
Has thanked: 13 time
Been thanked: 509 time

VB6 nhận kết quả của môi trường Dos

Gửi bàigửi bởi truongphu » T.Hai 17/08/2009 7:02 pm

Thủ thuật: VB6 nhận kết quả của môi trường Dos
Tác giả: truongphu
Mô tả: VB6 nhận kết quả của môi trường Dos


* Cách 1: Dùng hàm Shell, xuất kết quả ra file:

Mã: Chọn hết

  1.  
  2. Private Sub Command2_Click()
  3. Shell "cmd.exe /c ping caulacbovb.com > c:\1.txt", vbHide
  4. MsgBox "Ðã Xong"
  5. End Sub
  6.  
  7. Private Sub Command3_Click()
  8. Shell "cmd.exe /c dir c:\Progra~1 > c:\2.txt", vbHide
  9. MsgBox "Ðã Xong"
  10. End Sub


Ở 2 ví dụ trên, ta thấy lệnh Ping là lệnh ngoại trú (Ping.exe), lệnh dir là nội trú
Cả 2 lệnh đều được xuất ra file

* Cách 2 : Dùng WScript.Shell

Mã: Chọn hết

  1. Private Sub Command1_Click()
  2. Set objShell = CreateObject("WScript.Shell")
  3. a = objShell.Exec("cmd.exe /c ping caulacbovb.com").StdOut.ReadAll
  4. MsgBox a
  5. End Sub
Tập tin đính kèm
WScript.Shell.Exec().StdOut.ReadAll.rar
(1.3 KiB) Đã tải 547 lần


o0o--truongphu--o0o

.........
Ghé thăm:
Chuyện Linh Tinh

DiodeZ
Thành viên danh dự
Thành viên danh dự
Bài viết: 156
Ngày tham gia: T.Tư 09/04/2008 5:58 pm
Đến từ: /root
Has thanked: 1 time
Been thanked: 3 time
Liên hệ:

Re: VB6 nhận kết quả của môi trường Dos

Gửi bàigửi bởi DiodeZ » T.Sáu 21/08/2009 11:40 am

có cách nào ẩn cửa sổ cmd khi dùng wscript.shell ko bác Phú?

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

Re: VB6 nhận kết quả của môi trường Dos

Gửi bàigửi bởi truongphu » T.Sáu 21/08/2009 1:04 pm

DiodeZ đã viết:có cách nào ẩn cửa sổ cmd khi dùng wscript.shell ko bác Phú?

Không có cách nào cả!

1- Để DiodeZ khỏi thất vọng, tôi tặng bạn nhúm code sau (Code nầy cũng Ping, nhưng không liên quan môi trường Dos như tiêu đề, tuy nhiên sử dụng thì tuyệt!):

Mã: Chọn hết

  1. Private Sub Command2_Click()
  2. 'truongphu
  3. Set objWMI = GetObject("winmgmts:\root\cimv2")
  4.     Set colPings = objWMI.ExecQuery _
  5.     ("Select * from Win32_PingStatus Where Address = '203.162.0.11'")
  6.     For Each objPing In colPings
  7.     If objPing.StatusCode = 0 Then
  8.         ThôngBáo = ThôngBáo & "Responding Address: " & objPing.ProtocolAddress & vbCrLf
  9.         ThôngBáo = ThôngBáo & "Bytes Sent: " & objPing.BufferSize & vbCrLf
  10.         ThôngBáo = ThôngBáo & "Time: " & objPing.ResponseTime & " ms" & vbCrLf
  11.         ThôngBáo = ThôngBáo & "TTL: " & objPing.ResponseTimeToLive & " seconds" & vbCrLf
  12.       End If
  13.     Next
  14. MsgBox ThôngBáo
  15. End Sub


2- lệnh ping ta có thể gọi trực tiếp, khỏi thông qua Cmd, như thế các câu lệnh WScript.Shell được sửa lại:

Mã: Chọn hết

  1. a = objShell.Exec("ping caulacbovb.com").StdOut.ReadAll

Riêng câu lệnh Shell, vì có xuất ra file là chức năng của Cmd nên không rút gọn được

3- Bù lại, DiodeZ giải thích thêm cho bạn taller chứ ?
taller đã viết: :(( bài hay quả (nhưng chẳn hiểu gì) xin kỹ hơn ạ
o0o--truongphu--o0o

.........
Ghé thăm:
Chuyện Linh Tinh

DiodeZ
Thành viên danh dự
Thành viên danh dự
Bài viết: 156
Ngày tham gia: T.Tư 09/04/2008 5:58 pm
Đến từ: /root
Has thanked: 1 time
Been thanked: 3 time
Liên hệ:

Re: VB6 nhận kết quả của môi trường Dos

Gửi bàigửi bởi DiodeZ » T.Hai 24/08/2009 2:12 pm

cháu muốn thực hiện lệnh trong cmd, rồi nhận kết quả trả về tức thời của cửa sổ cmd nhưng ko hiện cửa sổ này chứ ko phải riêng lệnh ping. Hình như 2 cách trên của bác ko làm được
Ví dụ như khi thực hiện lệnh chkdsk trong cmd thì làm sao để biết thời điểm hiện tại nó check được bao nhiêu % ??
truongphu đã viết:3- Bù lại, DiodeZ giải thích thêm cho bạn taller chứ ?

:-?? :-?? :-?? tiêu đề của topic nói lên tất cả rồi, biết giải thích sao nữa bây giờ

Hình đại diện của người dùng
gianghoplus
Bài viết: 2
Ngày tham gia: T.Năm 27/03/2008 4:54 pm
Đến từ: http://giangho.biz
Liên hệ:

Re: VB6 nhận kết quả của môi trường Dos

Gửi bàigửi bởi gianghoplus » T.Năm 26/11/2009 10:44 am

Có thể lấy trực tiếp nội dung trong cửa sổ Console bằng hàm API ReadConsoleOutput hoặc DirectOutput
Code chỉ một lần mà fix bug thì mãi mãi
------------------------------------
Trích: Giờ thì anh code để làm gì .....:D
http://giangho.biz


Quay về “[VB] Ứng dụng - Form và Control”

Đ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.0 khách