Làm sao để đóng chương trình Skype bằng lệnh VBA (1 người xem)

Liên hệ QC

Người dùng đang xem chủ đề này

Quang_Hải

Thành viên gạo cội
Tham gia
21/2/09
Bài viết
6,070
Được thích
7,994
Nghề nghiệp
Làm đủ thứ
Để mở chương trình Skype bằng lệnh VBA thì mình thí nghiệm thế này đã chạy được, nhưng giờ muốn đóng 1 chương trinh Skype thì không biêt làm thế nào
Mong các anh chị giúp đở. Hiện tại mình sử dụng Win 7 nên có thêm (x86)

CreateObject("Shell.Application").Open "C:\Program Files (x86)\Skype\Phone\skype.exe"
 
Để mở chương trình Skype bằng lệnh VBA thì mình thí nghiệm thế này đã chạy được, nhưng giờ muốn đóng 1 chương trinh Skype thì không biêt làm thế nào
Mong các anh chị giúp đở. Hiện tại mình sử dụng Win 7 nên có thêm (x86)

CreateObject("Shell.Application").Open "C:\Program Files (x86)\Skype\Phone\skype.exe"

Cứ viết nhăng thế này xem Shell "taskkill /F /IM skype.exe", 0
 
Upvote 0
Bái phục thật, phục anh sát đất. Chạy ngon lành.

Lệnh DOS thôi, có quỷ gì ghê gớm đâu
Từ lệnh TASKKILL, bạn có thể chế tác ra cả "rừng" ứng dụng khác tùy thích (mục đích để kill ứng dụng, kể cả file Excel đang chứa code)
Ẹc... Ẹc...
 
Upvote 0
Để mở chương trình Skype bằng lệnh VBA thì mình thí nghiệm thế này đã chạy được, nhưng giờ muốn đóng 1 chương trinh Skype thì không biêt làm thế nào
Mong các anh chị giúp đở. Hiện tại mình sử dụng Win 7 nên có thêm (x86)

CreateObject("Shell.Application").Open "C:\Program Files (x86)\Skype\Phone\skype.exe"

XP không có taskkill.

Trong XP có thể thử code
Mã:
Shell "tskill iexplore /A"
Shell "tskill notepad /A"
Shell "tskill excel /A"
...

Nhưng ta phải ý thức được là đã KILL tức là "một nhát dao vào tim", "nạn nhân" không có cơ hội để làm những việc cần làm trước khi "ra đi".
Cách chuẩn và lịch sự vẫn là thông điệp. Thông báo cho "người ta": Đã đến lúc đóng cửa hàng rồi ông ạ (đã đến lúc "ra đi" rồi ông ạ). Hãy ghi sổ sách và khóa cửa cẩn thận nhé ông (hãy viết di chúc cho con cháu nhé ông). Để "người ta" biết và "dọn dẹp" trước khi ra đi.

Về thông điệp thì nếu CT có cửa sổ thì ví dụ:
Mã:
Private Const WM_CLOSE As Long = &H10
Private Declare Function FindWindow Lib "user32.dll" Alias "FindWindowA" (ByVal lpClassName As String, ByVal lpWindowName As String) As Long
Private Declare Function SendMessage Lib "user32.dll" Alias "SendMessageA" (ByVal hwnd As Long, ByVal wMsg As Long, ByVal wParam As Long, ByRef lParam As Any) As Long
...
'    h = FindWindow("MozillaWindowClass", vbNullString) ' Firefox
'    h = FindWindow("notepad", vbNullString) ' notepad
    h = FindWindow("OpusApp", vbNullString) ' WORD
    SendMessage h, WM_CLOSE, 0, 0

Cũng có thể thử PostMessage, SendMessageTimeout

Mã:
Private Const SMTO_ABORTIFHUNG As Long = &H2
Private Const SMTO_NORMAL As Long = &H0

SendMessageTimeout h, WM_CLOSE, 0, 0, SMTO_ABORTIFHUNG or SMTO_NORMAL, 5000, result

Nếu CT trước khi đóng cần ghi dữ liệu, những văn bản chưa save thì nhắc user save thì khi dùng thông điệp CT sẽ làm tất cả những việc đó. Dùng KILL là "chết đột ngột", không cho "người ta" cơ hội từ dã bạn bè người thân.

Nếu CT không có cửa sổ thì có thể dùng PostThreadMessage
 
Upvote 0
Web KT

Bài viết mới nhất

Back
Top Bottom