VBS利用SendKeys輸入中文字元的方法

2021-08-26 15:58:48 字數 2027 閱讀 1828

vbs利用sendkeys輸入中文字元的方法

2023年09月28日

首先我們看乙個輸入字母的例子:

複製** **如下:

set s = wscript.createobject("wscript.shell")

code="biweilun"

wscript.sleep 1000

s.sendkeys code

wscript.quit

這段vbs會sendkeys方法的朋友就知道,作用是開啟乙個記事本,然後把"biweilun"這串字元輸入進去,當然,你可以把code引數換成chr(97),那麼你會發現自動輸入到記事本裡面的是乙個"a"字元。那麼,你把code引數的值換成乙個chr(乙個漢字的ascii碼)行不行呢?可以肯定的告訴你,不行。

我們通過呼叫乙個ie的物件,這樣可以使用其內建的剪貼簿元素,將"畢偉倫"這個字串放進了剪貼簿,然後通過wsh物件來sendkey "^v"貼上剪貼簿內容,這樣就能實現vbs自動輸入中文字元了。

但是呢,這個方法有個缺憾,就是它會開啟乙個ie的視窗,不夠完美,雖然不影響輸入字元。所以我在探索一種完美的方案,得知乙個物件「htmlfile」,很可惜的是該物件只能讀取剪貼簿,卻不能寫剪貼簿。我們來看一段**,怎麼彈出你的剪貼簿內容,你要先複製一段字元:

set biweilun=createobject("htmlfile").parentwindow.clipboarddata

wscript.echo biweilun.getdata("text")

執行這個**,你會發現你剪貼簿的東西彈出來了。在ie物件裡,有setdata函式來寫剪貼簿,getdata函式來讀剪貼簿,在htmlfile物件裡呢,也有這兩個函式的。你會想到是不是可以用htmlfile物件的setdata先來向剪貼簿中寫入中文字元,然後再sendkeys呢?這樣豈不是很完美,既解決了中文輸入問題,又沒有網頁彈出。呵呵,想法是好的,我也這麼想過,可是不行!!

htmlfile物件在使用中只能getdata來獲取剪貼簿,對於setdata函式系統卻不給它寫的許可權!呵呵,鬱悶吧?但是htmlfile物件中的setdata函式確實是存在的,只是無法使用而已。不信的話讀者可以自己嘗試如下**,指令碼不會報錯的,如果沒有這個函式的話,wscript會報錯的:

複製** **如下:

set biweilun=createobject("htmlfile").parentwindow.clipboarddata

biweilun.setdata "text","畢偉倫"

wscript.echo biweilun.getdata("text")

在vbs牛人umu的空間上看到,據他講有這麼一條dos命令,可以來寫字串到剪貼簿中:

echo biweilun| clip.exe 就是用dos命令把biweilun這串字元寫入剪貼簿了。經本人測試,該命令不成立,umu的思路是這樣來默默地後台寫剪貼簿:

objwsh.run "cmd.exe /c echo " & szbuf & "| clip.exe", vbhide

如果這個dos命令能真的實現就好了,那麼sendkeys中文字元就太完美了。我到網上翻了很久,沒有找到任何關於他所謂的clip.exe的資料和引數等等東東。

vbs利用sendkeys輸入中文字元,還是有那麼一點遺憾~~~

7月28日補充內容如下:

經過umu大哥的提點,原來上文提到的clip.exe只在win2003下才有,winxp是沒有的,那怪我不能實現後台windows寫剪貼簿的dos命令

**如下:

複製** **如下:

set wshobj=wscript.createobject("wscript.shell")

code="你想輸入的中文"

wshobj.run "cmd.exe /c echo " & code & "| clip.exe", vbhide

wscript.sleep 1000

wshobj.sendkeys "^v"

wscript.quit

以上**經本人測試完美有效,結貼~~~

VBS利用SendKeys輸入中文字元的方法

首先我們看乙個輸入字母的例子 複製 如下 set s wscript.createobject wscript.shell app s.run c windows notepad.exe code biweilun wscripwww.cppcns.comt.sleep 1000 s.appacti...

利用vbs傳送郵箱

namespace set emailobj createobject cdo.message emailobj.from xx 163.com 發件人,需修改 emailobj.to x qq.com 收件人,需修改 emailobj.subject 請假打卡 郵件主題 emailobj.html...

記錄一下send keys輸入中文亂碼問題

我的解決方案是 send keys 美妝 亂碼 a 美妝 send keys a 解決 為啥 頁不知道,但是網上說的新增resetkeyboard ture 和 unicodekeyboard ture 並不能解決亂碼的問題,只能解決可以輸入正文的問題,但是會頁會偶爾亂碼,加了個變數,試了很多次沒有...