javascript利用控制項對windows的操作實現原理與應用

來源:互聯網
上載者:User

複製代碼 代碼如下://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}"); //相當於按 Ctrl + ESC 鍵
wsh.sendKeys("U~"); //按 U 鍵斷行符號
wsh.sendKeys("S~"); //按 S 鍵斷行符號
</script>

sendKeys(args[])方法詳解(VB):
vb.net中使用sendkeys遙控:
大家在vb6中都用過sendkeys,幕通過發送鍵盤的事件間接地控制外部程式,是有遙控之說。
我在vb7中卻發現這個不能用了, 也就不了了之,後來一次在查閱msdn的時候竟看到了這個,是以嘗試了一下,竟然舊貌新顏,還是一樣好用。

主要是在system.winforms族中找到sendkeys 使用方法同vb6
鍵:一般的字元鍵如下輸入”a” “b” “c”………………”z”等,如果要連續按下兩個以上就使用”ab”的形式如果同步選取ab就使用括弧如”(ab)”
如果是功能鍵,就放到大括弧中如“{f4}” 另:用+代表shift,用^代表ctrl,用%代表alt
如“+a”表示按下shift同時按a
下面是一個例子
dim sdstr as system.winforms.sendkeys
sdstr.send("%{f4}") 發送alt+f4
下面這個代碼在按下button2以後轉移焦點到下一個控制項,使按鈕能按下又不能按受焦點. 複製代碼 代碼如下: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,使用的方法同上,不過執行這個過程會等待到發送的鍵執行完成以後,再繼續執行後面的代碼. 複製代碼 代碼如下: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調用外部程式: 複製代碼 代碼如下:shell(pathname as string,[style as
microsoft.visualbasic.appwinstyle=2],[wait as
boolean=false],[timeout as integer=-1]) as integer

調用資源管理員 複製代碼 代碼如下:dim pid as integer
pid = shell("explorer.exe http://vbnetcn.126.com",
microsoft.visualbasic.appwinstyle.normalfocus, true)

調用預設程式 複製代碼 代碼如下:dim pid as integer
pid = shell("start.exe mailto:vbnetcn@163.com",
microsoft.visualbasic.appwinstyle.hide, true)

使用microsoft.visualbasic.appwinstyle.hide參數是為了隱藏程式
運行時跳出的dos視窗。

sendkeys是個類比鍵盤訊息的函數,我們暫且不談windows訊息驅動來單純的考慮sendkey這個函數
sendkeys既然類比的是鍵盤訊息,那麼他就只能類比鍵盤上能輸入的訊息,比如說
sendkeys("abcd")
其實並不是這個指令碼把"abcd"這個字串發出去
而是類比鍵盤的輸入,相當於鍵盤先點擊了a再點擊了b在點擊了c。。。。。
加入發送的按鍵訊息被qq的聊天框受到了,那麼我們都知道他的處理方法是把英文字母顯示到聊天框中
但是我們發現,加入用sendkey類比輸入漢字的話,似乎就不現實了,因為鍵盤上沒有中文按鍵。。。。
但是我們有想輸入我們漢字的聊天內容,那麼我們可以怎麼辦呢?

從原理說起哈,sendkey其實就是個在windows中發送特定訊息的一個函數(我猜他發送的是WM_SYSKEYDOWN的訊息,我沒有測試過哈^_^)

我們假如要發送漢字的聊天框的內容的話,我們也要從windows訊息機制下手,先找到聊天訊息的控制代碼(可以利用findwindow函數或者用spy工具哈),然後在找到上面的聊天框的控制代碼,接著我們就可以想這個控制代碼發送WM_SETTEXT的訊息了。
粗略的

相關文章

聯繫我們

該頁面正文內容均來源於網絡整理,並不代表阿里雲官方的觀點,該頁面所提到的產品和服務也與阿里云無關,如果該頁面內容對您造成了困擾,歡迎寫郵件給我們,收到郵件我們將在5個工作日內處理。

如果您發現本社區中有涉嫌抄襲的內容,歡迎發送郵件至: info-contact@alibabacloud.com 進行舉報並提供相關證據,工作人員會在 5 個工作天內聯絡您,一經查實,本站將立刻刪除涉嫌侵權內容。

A Free Trial That Lets You Build Big!

Start building with 50+ products and up to 12 months usage for Elastic Compute Service

  • Sales Support

    1 on 1 presale consultation

  • After-Sales Support

    24/7 Technical Support 6 Free Tickets per Quarter Faster Response

  • Alibaba Cloud offers highly flexible support services tailored to meet your exact needs.