Được rồi, sẽ không nói dối. Tôi đã thấy điều này trên stackoverflow và nghĩ rằng đó là một câu hỏi đầy thách thức. Tôi chỉ mất 2 giờ để viết một số mã. Và đây là ....
Sau khi làm theo các bước dưới đây, bạn có thể nhập "Nhiệm vụ đóng notepad.exe" sau khi nhấn "Bắt đầu" và nó sẽ tự động lưu tất cả các tệp notepad không có giấy tờ vào máy tính để bàn. Nó sẽ tự động đóng chrome.exe và lưu các cài đặt khôi phục.
Bạn có thể thêm và xóa cài đặt bổ sung cho các ứng dụng khác trong điều kiện if. Ví dụ:
If InStr(SINGLECLOSEAPPS, WScript.arguments(0)) Then
SmartSendKeys strOutput,"bypass","%{F4}"
ElseIf InStr(AUTOCLOSEAPPS, WScript.arguments(0)) Then
SmartSendKeys strOutput,"","%{F4}|%s|{autoname}.txt|%s"
'Example 1: =============================================
ElseIf InStr(WScript.arguments(0), "outlook") Then
SmartSendKeys strOutput,"","%{F4}" 'Activate Alt+4
'========================================================
'Example 2: =============================================
ElseIf InStr(WScript.arguments(0), "notepad") Then 'I know, already in my autoapps
SmartSendKeys strOutput,"","%{F4}|%s|{autosave}.txt" 'Activate Alt+4 + Save File + {AutoSave} = autoincrement filename
'========================================================
Else
SmartSendKeys strOutput,"bypass","%{F4}"
End If
Các tập tin vbs và batch thực hiện các quy trình sau:
- Thu thập thực thi.
- Truy vấn tên ứng dụng thực thi ra khỏi danh sách tác vụ.
- Thực hiện quy trình "Alt + TAB (x)" cho đến khi xác minh cửa sổ đang mở.
- Sau đó, thực thi các lệnh cán cho dù đó là "Alt + F4" hoặc thậm chí trong trường hợp cực đoan
- Alt + F4
- Kích hoạt Lưu
- Tên tệp AutoIncrememnt
- Ứng dụng xuất cảnh.
ReturnAppList.bat: cài đặt trong "C: \ windows \ system32 \"
for /f "tokens=10 delims=," %%F in ('tasklist /v /fi "imagename eq %1" /fo csv') do @echo %%~F >>result.txt
TaskClose.bat: cài đặt trong "C: \ windows \ system32 \" VÀ "C: \ Users \ YourUserName \"
C:\windows\system32\wscript.exe c:\windows\system32\taskclose.vbs %1
TaskClose.vbs: cài đặt trong "C: \ windows \ system32 \"
Set WshShell = CreateObject("WScript.Shell")
Const SINGLECLOSEAPPS = "chrome.exe|iexplore.exe|firefox.exe"
Dim DEFAULTSAVELOCATION : DEFAULTSAVELOCATION = wshshell.SpecialFolders("Desktop")
Const AUTOCLOSEAPPS = "notepad.exe"
Const WshFinished = 1
Const WshFailed = 2
strCommand = "returnapplist.bat "
Set WshShellExec = WshShell.Exec(strCommand & WScript.Arguments(0))
WScript.sleep 2000
Select Case WshShellExec.Status
Case WshFinished
strOutput = LoadStringFromFile("result.txt")
Case WshFailed
strOutput = LoadStringFromFile("result.txt")
End Select
'SmartSendKeys(application_name_array, bypassclause, additionalcommands)
'========================
If InStr(SINGLECLOSEAPPS, WScript.arguments(0)) Then
SmartSendKeys strOutput,"bypass","%{F4}"
ElseIf InStr(AUTOCLOSEAPPS, WScript.arguments(0)) Then
SmartSendKeys strOutput,"","%{F4}|%s|{autoname}.txt|%s"
Else
SmartSendKeys strOutput,"bypass","%{F4}"
End If
'SmartSendKeys(application_name_array, bypassclause, additionalcommands)
'========================
Function SmartSendkeys(fArr, LoopCount, RollCommands)
Dim x
Dim splt : splt = Split(farr, vbCrLf)
If loopcount = "bypass" Then
x = 0
Else
x = UBound(splt)
End If
a = 0
For s=0 To x
If Len(splt(s)) > 1 Then
Set objShell = WScript.CreateObject("WScript.Shell")
c = 1 : tabs = ""
Success = False
Do Until Success = True
Success = objShell.AppActivate(Trim(splt(s)))
If success <> True Then
If c = 1 Then
tabs = "{TAB}"
Else
tabs = "{TAB " & c & "}"
End If
'wscript.echo "Activating: " & "%" & tabs
WshShell.SendKeys "%" & tabs
WScript.Sleep 5000
c = c + 1
If c = 100 Then
WScript.echo "App not found"
Exit Function
End If
End If
Loop
Dim cmds : cmds = Split(rollcommands, "|")
For Each cm In cmds
If InStr(cm, "{autoname}") Then
Dim file_ext : file_ext = Split(cm, ".")
cm = DEFAULTSAVELOCATION & "autosave" & a & "." & file_ext(1)
a = a + 1
End If
WshShell.SendKeys cm
WScript.sleep 500
Next
End If
Next
End Function
Function LoadStringFromFile(filename)
Const fsoForReading = 1
Const fsoForWriting = 2
Dim fso, f
Set fso = CreateObject("Scripting.FileSystemObject")
Set f = fso.OpenTextFile(filename, fsoForReading)
Dim fulltext : fulltext = f.ReadAll
LoadStringFromFile = fulltext
f.Close
fso.DeleteFile(filename)
End Function
Điều này thật thú vị để viết và tôi hạnh phúc hơn khi hoàn thành nó hơn là thực sự hiển thị câu trả lời. Có một tuần tuyệt vời!