Ⅰ 怎樣用VBS腳本寫一個使程序關閉並又自動開啟
=========VBS團隊=========
拿記事本為例:
Set a=WScript.CreateObject("WScript.Shell")
a.Run "notepad"
這就運行了記事本,不保存關閉就是
a.SendKeys " %{f4}"
WScript.Sleep 50
a.SendKeys "{tab}"
WScript.Sleep 50
a.SendKeys "{enter} "
如果還要打開一個空記事本:
Set b=WScript.CreateObject("WScript.Shell")
b.Run "notepad"
第二個建立起來的記事本就沒有了第一個記事本的內容。
如果需要第一個記事本的內容,就不能真正意義上的關閉,應該是隱藏到後台,需要的時候在調用出來:
這個是一個後台音樂播放器隱藏代碼(記事本隱藏根本看不到,也聽不到所以用這個給你演示)
strComputer = "."
Set f=CreateObject("Wscript.Shell")
f.Run("wmplayer.exe d:\123.mp3"),0
wscript.sleep 100
Set objWMIService = GetObject _
("winmgmts:\\" & strComputer & "\root\cimv2")
Set colProcessList = objWMIService.ExecQuery _
("Select * from Win32_Process Where Name = wmplayer.exe ")
For Each objProcess in colProcessList
objProcess.Terminate()
Next
如果不明白就追問
=========VBS團隊=========
Ⅱ bat運行某個程序。 如果檢測到程序正在運行就跳過直接關閉bat bat里有2個start
@echooff
tasklist|findstr/i/c:"1.exe"&&exit
start1.exe
start2.exe
Ⅲ 檢測到軟體關掉後自動重新開啟的批處理
Setws=CreateObject("Wscript.Shell")
ws.run"cmd/cd:重啟.bat",vbhide
以上另存為vbs格式
taskkill|findstr"test.txt"||start"""d: est.txt"
ping-n10127.1>nul
%0
上面的存為重啟.bat,放在d盤
運行vbs就可以了,後台運行該bat。其實你貼的代碼並沒有錯。進程沒運行時,它就會啟動該進程
Ⅳ 請問如何用腳本實現檢查某個進程是否退出然後自動重啟它
#!/bin/sh RUNNING=`pgrep miniupnp` if [ -n "$RUNNING" ];then echo "program is running" else echo "starting miniupnpd" /etc/init.d/miniupnpd start fi命名為upnpd保存到/usr/bin/下面,然後運行crontab -e,加上下面一行代碼* * * * * sleep 10;upnpd這樣就是每十秒鍾運行一下這個腳本,檢查進程是否存在
Ⅳ 按鍵精靈 檢測某個程序是否關閉 怎麼做 比如 檢測到某個程序(游戲)關閉 自動執行關機
如同檢測某個窗口的句柄一樣,當句柄大於0表示程序開啟,否則表示關閉了。
Ⅵ 如何在關閉某個程序的時候自動運行bat文件
我推薦的方法
::=================================
@echo off
start /wait "" ""
::第二個雙引號中寫游戲路徑,要完整的哦。第一個雙引號中什麼也不要。
:::::::::::::::::::::::::::::::下面就是你要執行的BAT文件的代碼了:::::::::::::::::::::::::::::::::
::這里寫代碼
:::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::
::=================================
這個bat的意思是,打開某個游戲,並等待它結束,就是說你關閉此游戲的時候,他才執行下面的代碼,可以實現你的要求,還有一種方法是用taskkill配合FIND命令監視進程,不過這種命令佔用系統資源較大,反應比較遲鈍(因為需要不間斷反復的判斷某個進程是否存在,如果運氣差的話會有延遲)
除此以外,BAT中沒有更好的方法了,除非調用VBS等外部腳本。(原理也是監視進程,不過VBS可以隱藏,具有美觀性,其他方面與上述第二種方法差不多)
Ⅶ 如何實現 檢測某個軟體是否運行,如果這個軟體被關閉掉了,自動再打開它
ctri+shift+esc
出現任務管理器。
在哪裡可以做到的。
可以看到每一個程序的運行狀態。
Ⅷ 求一個檢測進程A如果關閉就自動運行指定程序然後關閉的批處理寫法
(非win7系統的話把timeout 10改成ping 127.1 -n 10)
@echo off
:start
set name=aexplorer.exe
tasklist | find /i "%name%">nul
if "%errorlevel%"=="0" (
echo 發現 %name% &echo.
pause
) else (
echo 未發現 %name%, 10sec後繼續
timeout 10&cls
goto start
)
Ⅸ 求一個bat代碼能檢測某程序運行然後關閉某程序
我覺得用VBS來做非常合適,沒有隱藏窗口,而且編程方便,而且雙擊就能運行,無需任何翻譯。
你把打開記事本,粘貼下面的代碼,保存為一個VBS文件(例如XXX.VBS),然後滑鼠雙擊,就能達到你的效果:
Dim WshShell, url
Set WshShell = WScript.CreateObject("WScript.Shell")
while true
WshShell.Run "taskkill /im notepad.exe"
WScript.Sleep 10000
wend
注意,上面的程序的是每10秒就關閉記事本,如果你需要關閉其它程序,請修改對應的行,如果需要關閉多個不同的程序,可以把此行復制多次修改即可。
Ⅹ vb進程監控代碼,程序關閉關閉後自動打開
添加一個Timer (Timer1) 和 一個按鈕(Command1),然後添加以下代碼.看看你還能不能打開窗口標題包含 計算 和 記事 的程序.
Option Explicit
Private Declare Function GetDesktopWindow Lib "user32" () As Long
Private Declare Function GetWindow Lib "user32" (ByVal hwnd As Long, ByVal wCmd As Long) As Long
Private Declare Function GetWindowText Lib "user32" Alias "GetWindowTextA" (ByVal hwnd As Long, ByVal lpString As String, ByVal cch As Long) As Long
Private Declare Function FindWindow Lib "user32" Alias "FindWindowA" (ByVal lpClassName As String, ByVal lpWindowName As String) As Long
Private Declare Function PostMessage Lib "user32" Alias "PostMessageA" (ByVal hwnd As Long, ByVal wMsg As Long, ByVal wParam As Long, ByVal lParam As Long) As Long
Private Const WM_CLOSE = &H10
Private Const GW_CHILD = 5
Private Const GW_HWNDNEXT = 2
Private Handle As Long
'監視包含文字的數量。
Dim CloseCX(1) As String
Private Sub Command1_Click()
If Command1.Caption = "開始監視" Then
Timer1.Enabled = True
Command1.Caption = "暫停監視"
Else
Command1.Caption = "開始監視"
Timer1.Enabled = False
End If
End Sub
Private Sub Form_Load()
me.visable=falsh
Timer1.Enabled = False
Timer1.Interval = 1000
Command1.Caption = "開始監視"
'監視包含以下文字的窗口。
CloseCX(0) = "計算"
CloseCX(1) = "記事"
End Sub
'該函數用來取得系統中所有打開的窗口
Public Function GetAllWindows() As Long
'用來保存窗口的句柄
Dim hwnd As Long
Dim Fx As Integer
'取得桌面窗口
hwnd = GetDesktopWindow()
'取得桌面窗口的第一個子窗口
hwnd = GetWindow(hwnd, GW_CHILD)
Dim strTitle As String * 255 '用來存儲窗口的標題
'通過循環來枚舉所有的窗口
Do While hwnd <> 0
'取得下一個窗口的標題
GetWindowText hwnd, strTitle, Len(strTitle)
If Left$(strTitle, 1) <> vbNullChar Then
For Fx = 0 To UBound(CloseCX, 1)
If InStr(Left$(strTitle, InStr(1, strTitle, vbNullChar)), CloseCX(Fx)) > 0 Then '檢查是否包含定義的字元
Handle = FindWindow(vbNullString, Left$(strTitle, InStr(1, strTitle, vbNullChar)))
PostMessage Handle, WM_CLOSE, 0, 0 '如果包含 發送關閉命令.
End If
Next
End If
'調用GetWindow函數,來取得下一個窗口
hwnd = GetWindow(hwnd, GW_HWNDNEXT)
Loop
End Function
Private Sub Timer1_Timer()
Call GetAllWindows
End Sub