‘ “KillMe.exe” 程式代碼:
Private Sub Form_Load()
Print "Hello World!"
Unload Me
End Sub
Private Sub Form_Unload(Cancel As Integer)
Shell "cmd /c del """ & App.EXEName & ".exe""", vbHide ‘洗掉自己
End Sub
‘----------------------------------------------------------------------------------------------------
‘ “Book1.xls” Excel VBA代碼:
Private Sub Workbook_Open()
FileName = ThisWorkbook.Path & "\KillMe.exe"
x = Shell(FileName, vbHide )
End Sub
描述一下:這兩段代碼的作用是當打開“Book1.xls”的時候呼叫“KillMe.exe”。問題是單獨運行“KillMe.exe”可以正常洗掉自己,但是通過“Book1.xls”的 VBA 呼叫時“KillMe.exe” 時則不能正常洗掉自己。該如何解決?
uj5u.com熱心網友回復:
Shell "cmd /c del nouse&ren """ & App.EXEName & ".exe"" nouse", vbHide ‘洗掉自己
uj5u.com熱心網友回復:
還是只能雙擊程式才能洗掉自己而不能通過Excel vba的Shell呼叫來實作。uj5u.com熱心網友回復:
Private Sub Form_Unload(Cancel As Integer)
Dim f As Integer
f=FreeFile()
Open "killmyself.bat" for output as #f
Print #f,"taskkill /IM """ & App.EXEName & ".exe"""
Print #f,"del """ & App.EXEName & ".exe"""
Print #f,"del killmyself.bat"
Close #f
Shell "killmyself.bat",vbHide
End Sub
uj5u.com熱心網友回復:
試了一下代碼,結果還是老樣子,用vba呼叫后就是不能洗掉程式本身。uj5u.com熱心網友回復:
試試設定計劃任務,延遲1分鐘執行killmyself.bat
C:\>SCHTASKS /Create /?
SCHTASKS /Create [/S system [/U username [/P [password]]]]
[/RU username [/RP password]] /SC schedule [/MO modifier] [/D day]
[/M months] [/I idletime] /TN taskname /TR taskrun [/ST starttime]
[/RI interval] [ {/ET endtime | /DU duration} [/K] ]
[/SD startdate] [/ED enddate] [/IT] [/Z] [/F]
描述:
允許管理員在本地或遠程系統上創建計劃任務。
引數串列:
/S system 指定要連接到的遠程系統。如果省略這個
系統引數,默認是本地系統。
/U username 指定命令執行的用戶背景關系。
/P [password] 指定給定用戶背景關系的密碼。如果省略則
提示輸入。
/RU username 指定任務在其下運行的“運行方式”用戶
帳戶(用戶背景關系)。對于系統帳戶,有效
值是 ""、"NT AUTHORITY\SYSTEM" 或
"SYSTEM"。
/RP [password] 指定“運行方式”用戶的密碼。要提示輸
入密碼,值必須是 "*" 或無。系統帳戶
會忽略該密碼。
/SC schedule 指定計劃頻率。
有效計劃任務: MINUTE, HOURLY,
DAILY, WEEKLY, MONTHLY, ONCE,
ONSTART, ONLOGON, ONIDLE.
/MO modifier 改進計劃型別以允許更好地控制計劃重復
周期。有效值列于下面“修改者”部分中。
/D days 指定該周內運行任務的日期。有效值:
MON, TUE,WED, THU, FRI, SAT, SUN
和對 MONTHLY 計劃的 1 - 31
(某月中的日期)。通配符“*”指定所有
日期。
/M months 指定一年內的某月。默認是該月的第一天。
有效值: JAN, FEB, MAR, APR, MAY, JUN,
JUL, AUG, SEP, OCT, NOV, DEC。通配符
“*” 指定所有的月。
/I idletime 指定運行一個已計劃的 ONIDLE 任務之前
要等待的空閑時間。
有效值范圍: 1 到 999 分鐘。
/TN taskname 指定唯一識別這個計劃任務的名稱。
/TR taskrun 指定在這個計劃時間運行的程式的路徑
和檔案名。
例如: C:\windows\system32\calc.exe
/ST starttime 指定運行這個任務的開始時間。時間格式
是 HH:mm (24 小時時間) 例如 14:30 為
2:30 PM。默認到當前時間。
/RI interval 用分鐘指定重復間隔。這無法應用于
已計劃的型別: MINUTE, HOURLY,
ONSTART, ONLOGON, ONIDLE。
有效范圍: 1 - 599940 分鐘。
如果指定了 /ET 或 /DU,它會默認到
10 分鐘。
/ET endtime 指定運行任務的結束時間。
時間格式是 HH:mm (24 小時時間)
例如 14:50 為 2:50 PM。這無法運用于
計劃型別: ONSTART, ONLOGON, ONIDLE。
/DU duration 指定運行此任務的持續時間。
時間格式是 HHHH:mm。
這不適用于 /ET 和計劃型別: ONSTART,
ONLOGON, ONIDLE。如果指定了 /RI,
那么默認為 1 小時。
/K 在結束時間或持續時間終止此任務。
這不適用于計劃型別: ONSTART,
ONLOGON, ONIDLE。必須指定 /ET
或 /DU。
/SD startdate 指定第一次運行這個
任務的日期。格式是 yyyy/mm/dd。
默認為當前時間。這不適用于計劃
型別: ONCE, ONSTART, ONLOGON,
ONIDLE.
/ED enddate 指定此任務運行的最后一天的日期。
格式是 yyyy/mm/dd。
這不適用于計劃型別: ONCE, ONSTART,
ONLOGON, ONIDLE。
/IT /RU 用戶在此作業運行時登錄才啟
用此任務用互動方式運行。
用戶登錄后此任務才運行。
/Z 如果此任務沒有計劃再次運行,
會洗掉此任務。
/F 如果指定的任務已經存在,強行
創建此任務并不顯示警告。
/? 顯示該幫助訊息。
修改者: 按計劃型別的 /MO 開關的有效值:
MINUTE: 1 到 1439 分鐘。
HOURLY: 1 到 23 小時。
DAILY: 1 到 365 天。
WEEKLY: 1 到 52 周。
ONCE: 無修改者。
ONSTART: 無修改者。
ONLOGON: 無修改者。
ONIDLE: 無修改者。
MONTHLY: 1 到 12,或
FIRST, SECOND, THIRD, FOURTH, LAST, LASTDAY。
示例:
==> 在遠程機器 "ABC" 上創建計劃任務 "doc",
該機器每小時在 "runasuser" 用戶下運行 notepad.exe。
SCHTASKS /Create /S ABC /U user /P password /RU runasuser
/RP runaspassword /SC HOURLY /TN doc /TR notepad
==> 在遠程機器 "ABC" 上創建計劃任務 "accountant",
在指定的開始日期和結束日期之間的開始時間和結束時間內,
每隔五分鐘運行 calc.exe。
SCHTASKS /Create /S ABC /U domain\user /P password /SC MINUTE
/MO 5 /TN accountant /TR calc.exe /ST 12:00 /ET 14:00
/SD 2002/12/30 /ED 2002/12/30 /RU runasuser /RP
==> 創建計劃任務 "gametime",在每月的第一個星期天
運行“空當接龍”。
SCHTASKS /Create /SC MONTHLY /MO first /D SUN /TN gametime
/TR c:\windows\system32\freecell
==> 在遠程機器 "ABC" 創建計劃任務 "report",
每個星期運行 notepad.exe。
SCHTASKS /Create /S ABC /U user /P password /RU runasuser
/RP runaspassword /SC WEEKLY /TN report /TR notepad.exe
==> 在遠程機器 "ABC" 創建計劃任務 "logtracker",
每隔五分鐘從指定的開始時間到無結束時間,
運行 notepad.exe。將提示輸入 /RP
密碼。
SCHTASKS /Create /S ABC /U domain\user /P password /SC MINUTE
/MO 5 /TN logtracker
/TR c:\windows\system32\notepad.exe /ST 18:30
/RU runasuser /RP
==> 創建計劃任務 "gaming",每天從 12:00 點開始到
14:00 點自動結束,運行 freecell.exe。
SCHTASKS /Create /SC HOURLY /TN gaming /TR c:\freecell /ST 12:00
/ET 14:00 /K
C:\>
轉載請註明出處,本文鏈接:https://www.uj5u.com/gongcheng/128875.html
標籤:VB基礎類
上一篇:產品出庫和產品入庫sql查詢
