javascript利用控件對windows的操作實(shí)現(xiàn)原理與應(yīng)用
//windows 98
<script language=javascript>
//var wsh = new ActiveXObject("WScript.Shell");
//wsh.Run("rundll32.exe user.exe,exitWindows");
</script>
//win2000 or xp
<script language=javascript>
var wsh = new ActiveXObject("WScript.Shell");
wsh.sendKeys("^{ESC}"); //相當(dāng)于按 Ctrl + ESC 鍵
wsh.sendKeys("U~"); //按 U 鍵回車
wsh.sendKeys("S~"); //按 S 鍵回車
</script>
sendKeys(args[])方法詳解(VB):
vb.net中使用sendkeys遙控:
大家在vb6中都用過sendkeys,幕通過發(fā)送鍵盤的事件間接地控制外部程序,是有遙控之說。
我在vb7中卻發(fā)現(xiàn)這個(gè)不能用了, 也就不了了之,后來一次在查閱msdn的時(shí)候竟看到了這個(gè),是以嘗試了一下,竟然舊貌新顏,還是一樣好用。
主要是在system.winforms族中找到sendkeys 使用方法同vb6
鍵:一般的字符鍵如下輸入”a” “b” “c”………………”z”等,如果要連續(xù)按下兩個(gè)以上就使用”ab”的形式如果同時(shí)按下ab就使用括號(hào)如”(ab)”
如果是功能鍵,就放到大括號(hào)中如“{f4}” 另:用+代表shift,用^代表ctrl,用%代表alt
如“+a”表示按下shift同時(shí)按a
下面是一個(gè)例子:
dim sdstr as system.winforms.sendkeys
sdstr.send("%{f4}") 發(fā)送alt+f4
下面這個(gè)代碼在按下button2以后轉(zhuǎn)移焦點(diǎn)到下一個(gè)控件,使按鈕能按下又不能按受焦點(diǎn).
protected sub button2_click(byval sender as object, byval e
as system.eventargs)
dim sdstr as system.winforms.sendkeys
sdstr.send("{tab}")
end sub
下面使用sendwait,使用的方法同上,不過執(zhí)行這個(gè)過程會(huì)等待到發(fā)送的鍵執(zhí)行完成以后,再繼續(xù)執(zhí)行后面的代碼.
protected sub button2_click(byval sender as object, byval e
as system.eventargs)
dim sdstr as system.winforms.sendkeys
'sdstr.send("{tab}")
sdstr.sendwait("{tab}")
end sub
vb.net中使用shell調(diào)用外部程序:
shell(pathname as string,[style as
microsoft.visualbasic.appwinstyle=2],[wait as
boolean=false],[timeout as integer=-1]) as integer
調(diào)用資源管理器
dim pid as integer
pid = shell("explorer.exe http://vbnetcn.126.com",
microsoft.visualbasic.appwinstyle.normalfocus, true)
調(diào)用默認(rèn)程序
dim pid as integer
pid = shell("start.exe mailto:vbnetcn@163.com",
microsoft.visualbasic.appwinstyle.hide, true)
使用microsoft.visualbasic.appwinstyle.hide參數(shù)是為了隱藏程序
運(yùn)行時(shí)跳出的dos窗口。
sendkeys是個(gè)模擬鍵盤消息的函數(shù),我們暫且不談windows消息驅(qū)動(dòng)來單純的考慮sendkey這個(gè)函數(shù)
sendkeys既然模擬的是鍵盤消息,那么他就只能模擬鍵盤上能輸入的消息,比如說
sendkeys("abcd")
其實(shí)并不是這個(gè)腳本把"abcd"這個(gè)字串發(fā)出去
而是模擬鍵盤的輸入,相當(dāng)于鍵盤先點(diǎn)擊了a再點(diǎn)擊了b在點(diǎn)擊了c。。。。。
加入發(fā)送的按鍵消息被qq的聊天框受到了,那么我們都知道他的處理方法是把英文字母顯示到聊天框中
但是我們發(fā)現(xiàn),加入用sendkey模擬輸入漢字的話,似乎就不現(xiàn)實(shí)了,因?yàn)殒I盤上沒有中文按鍵。。。。
但是我們有想輸入我們漢字的聊天內(nèi)容,那么我們可以怎么辦呢?
從原理說起哈,sendkey其實(shí)就是個(gè)在windows中發(fā)送特定消息的一個(gè)函數(shù)(我猜他發(fā)送的是WM_SYSKEYDOWN的消息,我沒有測試過哈^_^)
我們假如要發(fā)送漢字的聊天框的內(nèi)容的話,我們也要從windows消息機(jī)制下手,先找到聊天消息的句柄(可以利用findwindow函數(shù)或者用spy工具哈),然后在找到上面的聊天框的句柄,接著我們就可以想這個(gè)句柄發(fā)送WM_SETTEXT的消息了。
粗略的
相關(guān)文章
微信小程序登錄態(tài)和檢驗(yàn)注冊過沒的app.js寫法
這篇文章主要介紹了小程序登錄態(tài)和檢驗(yàn)注冊過沒的app.js寫法, 本文通過實(shí)例代碼給大家介紹的非常詳細(xì),具有一定的借鑒價(jià)值,需要的朋友可以參考下2019-05-05關(guān)于使用 jBox 對話框的提交不能彈出問題解決方法
在 ASP.NET Form 中使用 jBox 的時(shí)候,在按鈕注冊的客戶端點(diǎn)擊事件中,會(huì)發(fā)現(xiàn)不能彈出對話框問題2012-11-11ES6中Set和Map數(shù)據(jù)結(jié)構(gòu),Map與其它數(shù)據(jù)結(jié)構(gòu)互相轉(zhuǎn)換操作實(shí)例詳解
這篇文章主要介紹了ES6中Set和Map數(shù)據(jù)結(jié)構(gòu),Map與其它數(shù)據(jù)結(jié)構(gòu)互相轉(zhuǎn)換操作,結(jié)合實(shí)例形式詳細(xì)分析了ES6中的Set和Map數(shù)據(jù)結(jié)構(gòu)的概念、原理、遍歷、去重等操作,以及Map與其它數(shù)據(jù)結(jié)構(gòu)互相轉(zhuǎn)換操作,需要的朋友可以參考下2019-02-02javascript基于定時(shí)器實(shí)現(xiàn)進(jìn)度條功能實(shí)例
這篇文章主要介紹了javascript基于定時(shí)器實(shí)現(xiàn)進(jìn)度條功能,簡單分析了javascript定時(shí)器的功能、使用方法并給出了基于定時(shí)器實(shí)現(xiàn)的進(jìn)度條功能實(shí)例,需要的朋友可以參考下2017-10-10ES6學(xué)習(xí)筆記之字符串、數(shù)組、對象、函數(shù)新增知識(shí)點(diǎn)實(shí)例分析
這篇文章主要介紹了ES6學(xué)習(xí)筆記之字符串、數(shù)組、對象、函數(shù)新增知識(shí)點(diǎn),結(jié)合實(shí)例形式分析了ES6字符串、數(shù)組、對象、函數(shù)新增知識(shí)點(diǎn)、使用技巧與操作注意事項(xiàng),需要的朋友可以參考下2020-01-01javascript實(shí)現(xiàn) 百度翻譯 可折疊的分享按鈕列表
這篇文章主要介紹了javascript實(shí)現(xiàn) 百度翻譯 可折疊的分享按鈕列表的方法,需要的朋友可以參考下2015-03-03JS中如何判斷傳過來的JSON數(shù)據(jù)中是否存在某字段
這篇文章主要介紹了JS中如何判斷傳過來的JSON數(shù)據(jù)中是否存在某字段,需要的朋友可以參考下2014-08-08