开机自启动并关闭窗口(向日葵简约版)
0x00 前言
? ? ? ? 原文:開機自啟動并關閉窗口(向日葵簡約版)_reven-h的博客-CSDN博客
????????為方便指導我父親使用電腦,我在他的電腦上裝了向日葵簡約版,為方便我進行連接,我需要它能夠自啟動,為不讓開機自啟時總是彈出向日葵界面,我需要讓它啟動后馬上關閉窗口,到最小化托盤。
0x01 實現自啟動
?1、首先下載向日葵簡約版
https://dl-cdn.oray.com/sunlogin/windows/SunloginClientLite_1.0.2_x64.exe
2、將exe復制到啟動目錄,啟動目錄打開方式:開始->所有程序->啟動 (右鍵->打開)
一般啟動目錄的絕對路徑如下:
C:\Users\{用戶名}\AppData\Roaming\Microsoft\Windows\Start Menu\Programs\Startup
3、復制完成后就可以自啟動了,但是每次都會彈出向日葵的主體窗口,還得手動關閉,很煩。
0x02 啟動后自動關閉窗口
????????這個簡約版點擊關閉按鈕后,會在后臺運行,圖標在右下角托盤中顯示,而不會結束進程。這邊可以用taskkill來實現同樣的效果,命令如下:
taskkill ?/FI "WINDOWTITLE eq SunLogin*"
????????這條命令的作用是向符合條件的進程發送終止信號,至于進程會不會自殺就不強制了,至少向日葵沒自殺,只是最小化到托盤。
????????如果加個 /F 參數,表示強制結束進程,這就由不得向日葵不想死了。由于這邊條件是窗口標題匹配”向日葵“,所以只殺死了它的主進程,剩下兩個子進程依然存活。如果也想一并殺死,可以加個 /T 參數,表示連帶子進程一并干掉,這不是本文的目的,有興趣的同學自己研究,反正我不加 /F /T 。
?
????????目前的實現思路是用創建個批處理文件,同樣放在啟動目錄下,持續執行關閉命令,如果執行成功,則退出腳本,否則繼續循環。批處理腳本如下:
@echo off :loop taskkill /FI "WINDOWTITLE eq 向日葵*"|findstr "PID" ::這里使用findstr去匹配"PID"是為了使用errorlevel來判斷命令是否執行成功,沒有找到"PID"說明沒找到對應進程,findstr輸出空,errorlevel=1。 if %errorlevel%==0 (goto succeed) else ( goto loop):succeed????????但是實際運行過程中發現,在命令行中運行得好好的,一到實際開機啟動的場景,就一直無法執行成功,猜測是“向日葵”這三個中文編碼有問題,嘗試切ascii或utf-8都沒用 ,最終將編碼修改為GB2312才行。
?0x03 后臺運行批處理
? ? ? ? 批處理執行過程中會出現一個黑色的命令行執行窗口,在向日葵還沒被殺之前,這個黑色窗口都會一直存在,很討厭。于是我們可以通過在批處理腳本中添加以下命令讓它在后臺執行:
@echo off if "%1"=="h" goto begin start mshta vbscript:createobject("wscript.shell").run("""%~0"" h",0)(window.close)&&exit :begin ::在下面放我們要執行的代碼?0x04 完整代碼
@echo off if "%1"=="h" goto begin start mshta vbscript:createobject("wscript.shell").run("""%~0"" h",0)(window.close)&&exit :begin :looptaskkill /FI "WINDOWTITLE eq 向日葵*" |findstr "PID" if %errorlevel%==0 (goto succeed) else (goto loop):succeed? ? ? ?
總結
以上是生活随笔為你收集整理的开机自启动并关闭窗口(向日葵简约版)的全部內容,希望文章能夠幫你解決所遇到的問題。
- 上一篇: 图神经网络——node2vec
- 下一篇: 理工科硕士自学ICEM网格划分的思考和感