
批處理遠程調用appactivate失敗的問題誠心求助!本人最近在寫遠程批量關閉應用的腳本,由于該應用不可強殺,需要觸發其關閉后輸入密碼,故調用了sendkeys去輸入密碼;然而用命令行觸發應用關閉后,由于焦點的偏移,sendkeys無法將密碼正確傳輸到應用中。后來我又使用了appactivate,在輸入密碼前將焦點轉移到應用內,至此在本機上測試成功。然而當我嘗試在別的機器上遠程start該bat腳本時,發現跟在本機使用腳本不一樣,焦點無法轉移到應用內。以下是我部署在遠程機器上的,用來關閉該應用的bat腳本:
最后我是在別的機器上用plink去遠程調用上面腳本的:start plink -ssh -pw xxx [email protected] .close.batnclick="copycode($('code0'));">復制代碼
- @if (@CodeSection == @Batch) @then
- ::@echo off
- if %1==h goto begin
- :begin
- SET SendKeys=Cscript //nologo //E:Jscript %~F0
- set /a n=0
- for /f delims= %%a in ('tasklist^|findstr /i 應用名') do set /a n+=1
- if %n% gtr 0 goto kill_menu
- if %n% equ 0 goto end
- :kill_menu
- for /f tokens=2 %%i in ('tasklist ^| findstr 應用名')doecho %%i > pid.txt
- for /f %%a in (pid.txt) do (
- if %%~za equ 0 (
- GOTO end ) else (
- taskkill /pid %%a
- )
- )
- echo CreateObject(Wscript.Shell).Appactivate(應用名) > tmp.vbs
- start tmp.vbs
- ping 127.0.0.1 > nul
- %SendKeys% password
- %SendKeys% {ENTER}
- del tmp.vbs
- del pid.txt
- GOTO begin
- @end
- // Jscript section
- var WshShell = Wscript.CreateObject(Wscript.Shell);
- WshShell.SendKeys(Wscript.Arguments(0));0

