html 與 ahk 偽通訊

來源:互聯網
上載者:User

最近幫朋友搞一個東西, 用 ahk 做的殼(全屏無標題置頂視窗, 用 ahk 比較容易實現), 內容是載入的 html (裡麵包括一些 flash, 和 flash 與 html 的通訊), 但這都不是要說的重點, 重點是後來要求 html(js/flash) 控制關閉 ahk, 這個需求難著了我了, 一直沒想到如何?.

今天無意間又看了一下 ahk 協助文檔關於 activeX 的部分, 發現例子裡有關於用 ComObjConnect 處理對象公開事件的方法, 於是想到了一個比較巧妙的方法, 實現非常簡單, 以至雩都不好意思寫一篇文章來介紹這個方法, 但還是記錄一下, 因為確實很好用.

ahk 代碼:

#NoEnv#SingleInstance focusGui, Add, ActiveX, w700 h400 vWB, Shell.ExplorerWB.Navigate(A_ScriptDir . "\index.html"); 重點來了ComObjConnect(WB, WB_events) Gui, ShowReturnclass WB_events{    ; 處理方法, 當然也可以監聽其他事件    ; 參考: http://msdn.microsoft.com/en-us/library/aa768334    NavigateComplete2(wb, url)    {        ; 用 SplitPath 簡單解析一下很方便        SplitPath, url, fullCmd, DISCARD, opt, cmd        if (cmd == "test")        {            traytip, Test, This is "test" command.        }        else if (cmd == "__CLOSE__" )        {            ExitApp        }        else        {            traytip, %fullCmd%, cmd: %cmd%`, opt: %opt%        }    }}GuiEscape:GuiClose:exitapp

html 代碼:

<ul>    <li ><a href="test" target="_cp" >test</a></li>    <li ><a href="command.options" target="_cp" >aaa.bbb</a></li>    <li ><a href="__CLOSE__" target="_cp" >close</a></li></ul><iframe name="_cp" src="about:blank" style="display:none;"></iframe>

簡要說明:

其實就是在 html 裡放一個用來接收"命令" 的 iframe, 將需要發送的"命令"寫在連結上, ahk 中監聽 NavigateComplete2 事件, 處理函數中解析 url (格式自己隨便定義了, 我想到個簡單規則就是 command.options, 這樣很容易利用 SplitPath 方法把各部分解析出來加以利用, 接下來做什麼就全交給 ahk 了

聯繫我們

該頁面正文內容均來源於網絡整理,並不代表阿里雲官方的觀點,該頁面所提到的產品和服務也與阿里云無關,如果該頁面內容對您造成了困擾,歡迎寫郵件給我們,收到郵件我們將在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.