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

2022-09-21 14:15:09 字數 2403 閱讀 7542

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

複製** **如下:

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

app=s.run ("c:\windows\notepad.exe")

code="biweilun"

wscripwww.cppcns.comt.sleep 1000

s.appactivate app

s.sendkeys code

wscript.quit

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

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

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

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.clipboarddat程式設計客棧a

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

wscript.echo biweilun.getdata("text")

&n程式設計客棧bsp;      

在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命令 

現將win200程式設計客棧3中的clip.exe上傳上來,請大家首先**clip.rar   **後解壓縮,把得到的clip.exe複製到 %systemroot%\system32資料夾下面即可。現在vbs用sendkeys輸入中文字元的問題得以完美解決了,前提是有clip.exe的支撐。

**如下:

複製** **如下:

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

code="你想輸入的中文" 

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

app=wshobj.run ("c:\windows\notepad2.exe") 

wscript.sleep 1000 

wshobj.appactivate app 

wshobj.sendkeys "^v" 

wscript.quit 

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

本文標題: vbs利用sendkeys輸入中文字元的方法

本文位址:

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

vbs利用sendkeys輸入中文字元的方法 2011年09月28日 首先我們看乙個輸入字母的例子 複製 如下 set s wscript.createobject wscript.shell code biweilun wscript.sleep 1000 s.sendkeys code wscr...

利用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 並不能解決亂碼的問題,只能解決可以輸入正文的問題,但是會頁會偶爾亂碼,加了個變數,試了很多次沒有...