當前位置:編程學習大全網 - 編程語言 - 怎樣用批處理完成和"桌面右擊刷新"壹樣的功能的刷新?

怎樣用批處理完成和"桌面右擊刷新"壹樣的功能的刷新?

加個自動刷新功能還要調用嗎?

是不是先建立xxx.bat?再建壹個xxx.vbs?這樣做的目的是什麽呢?是不是多此壹舉了?其實很多人不明白F5按壹下鍵的事為什麽還要多此壹舉弄個自動刷新,其實問這個問題的人很聰明。我來給妳們說壹說,vbs自動刷新的作用。

首先,我們在執行壹系列的命令之後,可能有些東西從視覺上不能實時生效,但是呢為了保證後續壹系列的命令100%順利執行,那麽就需要自動刷新壹下來解決,當然,這整個腳本都必須是在隱藏命令窗口的條件下,自動刷新才能生效,因為我們要保證此時我們的鼠標指針是處在桌面上的,當我們從桌面打開這個批處理文件的時候就意味著它已經處於桌面,如果是顯窗執行,那麽刷新代碼是會跑空的;此外刷新命令還有壹個作用,比方說,我正在運行壹個不是實時更新的通訊窗口(這個通訊窗口壹定是要支持F5鍵物理刷新的),兩個人的信息交流每次都要對窗口手動刷新壹下,那麽只要我們處於通訊窗口,可以開壹個每x秒刷新壹次的vbs腳本;此外,比如我們向某壹個服務端提交通訊數據之後需要刷新查看反饋結果是否成功,也可以應用這個批處理自動刷新功能,比方說,我現在要向壹個服務端每3分鐘提交壹次訊息,每提交壹次等待3秒刷新壹下通訊窗口防止鏈接中斷或者對方的回復無法更新到我們的對話窗口,那麽我就會寫壹個固定的提交列表,每壹次提角做壹個定時器,那麽和自動刷新組合起來就是:定時信息內容+定時刷新的壹個組合循環。所以說,不要小看壹句簡單的自動刷新句子,它的應用場景非常廣泛,就是看妳會不會活用。樓主的想法或是應用這個功能的意圖是不是我所說的呢?

這裏給妳句子:

Set?Shell=WScript.CreateObject("WScript.Shell")?

WScript.Sleep?0

Shell.SendKeys?"{F5}"

第壹行:調用模擬按鍵

第二行:定時器,每1000=1秒,0=不定時,不定時可以直接去掉這壹行

第三行:模擬按下F5鍵位

順便提壹下:VBS中是不能用@ECHO?OFF語句的,可能會報錯,VBS默認是無框執行的。

最佳答案的方法是通過隱藏運行的bat批處理調用自動刷新vbs文件來實現的,既然vbs自身能直接實現,為什麽不直接用vbs編譯呢?然後,如果妳中間需要執行的文件特別多,最好是通過vbs調用bat來做,因為bat的命令相對來說隨性壹點,但是有很多必要的東西放在bat中是不能實現的。比方說,如果妳最終想利用bat和vbs組合出來壹個小工具,然後封包成EXE來執行,以好壓自解壓封包為例。那麽,妳需要做的是隱藏命令窗口,但是壹旦隱藏了命令窗口,這意味著妳在bat中編寫的對話框全部都會失效。而通過vbs制作的對話框以及彈窗則不會被隱藏,所以建議使用vbs調用bat來寫東西,當然這只是壹個點,還有更多的差異這裏就不多說了。我給個實例如下:

通過vbs調用bat,然後封包成exe

vbs示例代碼如下:

msgbox?"大家好,我系渣渣輝",title,"貪玩藍耶!"

msgbox?"裝備全靠打",title,"壹鍵回收"

msgbox?"跟我壹起行動吧!",title,"爆將備啦!"

Set?ws?=?CreateObject("Wscript.Shell")?

ws.run?"cmd?/c?Cout1.bat",vbhide,True?

Set?Shell=WScript.CreateObject("WScript.Shell")?

WScript.Sleep?3000

Shell.SendKeys?"{F5}"

msgbox?"幹掉大BOSS",title,"趕緊回血!"

Set?ws?=?CreateObject("Wscript.Shell")?

ws.run?"cmd?/c?Cout2.bat",vbhide,True?

Set?Shell=WScript.CreateObject("WScript.Shell")?

WScript.Sleep?3000

Shell.SendKeys?"{F5}"

msgbox?"終於幹掉啦!",title,"妳心動了嗎"

CreateObject("scripting.filesystemobject").deletefile?wscript.scriptfullname

“True”表示執行完同壹行中調用的命令關閉之後才往下執行,如果想幾個bat命令同時執行,我們可以直接去掉,那麽會同時打開多個bat腳本執行,但是,如果兩個或多個bat命令同時對壹個文件執行,必然會出錯。

最後壹句是在用戶解壓運行之後程序自殺,等於在bat中的句子“del?%0”

補充內容:利用好壓或者winrar將批處理組合封包成exe的方法

首先,我們在做封包之前需要明白,自解壓的exe不管是什麽內容,只要自定義圖標了,都是在安全軟件的查殺標準安全範圍之外的,幾乎所有殺軟都不承認自解壓打包的exe可執行文件的安全性。如果妳不是很在意這個很煩的提示,那麽就按照下面的方法去做,如果先不然安全軟件查殺,那麽就需要使用exe電子書工具生成的界面,然後將所有批處理文件打包到電子書附件中去,然後通過按鈕鏈接到附件就能夠實現不報毒,在壓縮時不修改圖標也不會報毒,出這兩種方法之外,還可以使用易語言或其他簡易的編程工具做壹個簡單的界面,然後將所有原始格式(bat/vbs)批處理文件放到同壹個文件夾下,然後通過按鈕簡單的調用。以下只列舉以好壓為例的打包方法:

以下是壹個簡單的vbs+bat組合小工具的文件內容截圖

大家可以註意到兩個地方,壹個是上面提及的自我刪除語句,第二個就是在bat文件中用到的ping語句,這裏其實是可以不用的,之所以會每隔壹道命令就ping1秒,是為了不導致卡窗口,當然隱藏執行的情況下就算是卡窗口也看不見,但是壹旦卡住就會瞬間占用系統內存資源,雖然命令都是從上往下執行的,但是如果不ping壹下,就是壹瞬間彈壹堆窗口,主要是cmd命令執行間隙非常短。除了這樣,我們也可以利用在vbs中的執行等待語句“True”來解決,那麽我們就要把每壹條bat命令分別做成壹個bat批處理文件,有多少命令就做多少個文件,在vbs調用中,依然是下面這道命令:

Set?ws?=?CreateObject("Wscript.Shell")?

ws.run?"cmd?/c?某某文件的前綴.某某文件的後綴",vbhide,True

很明顯,這樣就顯得很煩瑣了,那麽還是用PING吧,當然,對批處理用到出神入化的人可能會想到更合理的方案。但是,以上的兩個方案對新手而言還是比較容易上手的。

接下來我就要將這兩個文件用好壓封包成exe了:

接下來是選擇配置方案第壹頁:

然後是自解壓選項配置,安裝向導模塊選圖形界面自解壓(通過後面的設置可以隱藏掉)分別對下圖中被框選的選項卡進行配置:

請看三個選項卡的配置:

然後點擊確定,關閉選項卡,開始壓縮,結果如下圖:

那麽,我們來測試壹下這個exe文件的運行是否成功:

那麽本次制作的小工具是成功的,這裏順便把實例的兩個文件代碼貼這裏,分別以記事本保存為vbs/bat後綴即可,有興趣的朋友可以試試!

xxx.vbs

msgbox?"本工具可修復的問題包括:"+chr(13)+"1.鼠標指針長時間無響應;"+chr(13)+"2.鼠標雙擊失靈;"+chr(13)+"3.鼠標左鍵點擊彈出屬性;"+chr(13)+"4.剪切板失效;"+chr(13)+"5.其他更多鼠標故障。",title,"感謝您使用!"

msgbox?"即將為您修復鼠標故障!請點擊確定繼續!",title,"溫馨提示"

msgbox?"請您在每次彈出對話框之後點擊“確定”!",title,"溫馨提示"

Set?ws?=?CreateObject("Wscript.Shell")?

ws.run?"cmd?/c?Cut.bat",vbhide,True?

msgbox?"修復工作執行完畢!請稍後嘗試問題是否解決!",title,"修復完成"

msgbox?"如果問題尚未解決,請聯反饋給我免費協助您處理!",title,"如果修復失敗怎麽辦"

CreateObject("scripting.filesystemobject").deletefile?wscript.scriptfullname

xxx.bat

regsvr32?urlmon.dll

ping?-n?1?127.0.0.1?

regsvr32?actxprxy.dll

ping?-n?1?127.0.0.1

regsvr32?oleaut32.dll?

ping?-n?1?127.0.0.1?

regsvr32?shell32.dll

ping?-n?1?127.0.0.1?

regsvr32?jscript.dll

ping?-n?1?127.0.0.1

regsvr32?msi.dll

ping?-n?1?127.0.0.1

cd?C:/Progra~1/Common~1/System/Ole?DB/regsvr32?oledb32.dll

ping?-n?1?127.0.0.1

regsvr32?C:/Progra~1/Common~1/System/ado/msado15.dll?

del?%0

至於這個問題:

無論是bat還是vbs腳本語言都只能做到模擬鍵盤按鍵,而鼠標不同,光標的位置是不確定的,如果說我們想要實現模擬鼠標的右鍵功能,那麽前提就是我們必須獲取到鼠標當前的坐標,然後需要將鼠標切換到指定的需要執行刷新窗體或桌面,也就是說,我們無論是模擬按鍵F5還是模擬鼠標右鍵刷新,都需要保證讓工作界面處於我們需要做刷新動作的界面。註意前面的那壹句話:“獲取光標當前的坐標”,這需要我們創建壹個數據傳遞結構的框架來獲取實時的坐標信息,然後才能判斷出對應的菜單項所處的位置,而鼠標右鍵菜單又有壹個特性,那就是可以由用戶自行添加或減少右鍵菜單的快捷鍵,但用戶又不能控制自行添加的快捷鍵所處的排序位置,刷新菜單項有可能會被頂掉,當然通常情況下不會影響到刷新按鈕的排序位置,因為它排在第三,比較靠前。就算我們能夠獲取鼠標的精準坐標,如果妳此時同時在操作鼠標,那麽這個位置就不對了,所以簡單的vbs和bat理論上是無法實現模擬鼠標右鍵刷新的,至少我不會!但是在其他語言中,例如C#/C++/VB/DELPHI等編程語言中,可以實現極為短暫鎖定鼠標-讀取坐標-刷新-解除鎖定。那麽,按照妳的意願可以通過以上的調用形式,通過其它高級編程語言先將刷新動作寫成可執行文件exe或者msi都是可以的,相對繁瑣很多,不過妳可以去下載壹個別人做好的刷新動作可執行文件,然後再從腳本語言中調用,碼字不易,希望能幫到妳!我是壹個不為懸賞作答的人,因為妳已經采納過了,因為我也比較喜歡空閑時倒騰這些東西,算得上壹種業余愛好吧!

  • 上一篇:求 口袋妖怪綠寶石493的 所有PM捕捉地點
  • 下一篇:蘭州理工大學軟件職業技術學院的辦學特色
  • copyright 2024編程學習大全網