알았어, 거짓말하지 않을거야. 나는 이것을 stackoverflow에서 보았고 그것이 어려운 질문이라고 생각했다. Soooo 방금 지난 2 시간 동안 코드를 작성했습니다. 그리고 여기 있습니다 ....
아래 단계를 수행 한 후 "시작"을 누른 후 "TaskClose notepad.exe"를 입력하면 문서화되지 않은 모든 메모장 파일이 바탕 화면에 자동 저장됩니다. chrome.exe를 자동으로 닫고 복원 설정을 저장합니다.
if 조건 하에서 다른 응용 프로그램에 대한 추가 설정을 추가 및 제거 할 수 있습니다. 예를 들어 :
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
vbs 및 배치 파일은 다음 절차를 수행합니다.
- 실행 파일을 수집합니다.
- 작업 목록에서 실행 가능한 응용 프로그램 이름을 쿼리합니다.
- 창이 열려 있는지 확인할 때까지 "Alt + TAB (x)"절차를 수행합니다.
- 그런 다음 롤링 명령이 "Alt + F4"인지 아니면 극단적 인 경우에도 실행됩니다.
- Alt + F4
- 저장 활성화
- 자동 증분 파일 이름
- 응용 프로그램을 종료하십시오.
ReturnAppList.bat : "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 : \ windows \ system32 \"및 "C : \ Users \ YourUserName \"에 설치
C:\windows\system32\wscript.exe c:\windows\system32\taskclose.vbs %1
TaskClose.vbs : "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
이것은 작성하기에 많은 즐거움이었고 실제로 답변을 보여주는 것보다 마무리하는 것이 더 행복합니다. 좋은 주 되세요!