青青草原综合久久大伊人导航_色综合久久天天综合_日日噜噜夜夜狠狠久久丁香五月_热久久这里只有精品

Codejie's C++ Space

Using C++

LingosHook:暴力硬編碼


    上午被“美帝國主義”放了鴿子,這樣也好,把安排的review提前做完了,下午也就空了點,于是就想起了昨天的一個和LingosHook相關的問題了--不是所有單詞的查詢都是來自于鼠標方式,還有一種更加常用的方式:直接輸入查詢。應該是當時被HOOK給迷住,一門心思就想著去Hook Lingoes的消息了,完全沒有考慮實際的使用。
    于是發揚“源碼在手,天下我有”的精神,很快添加Hotkey對象用于注冊熱鍵,用于需要提取查詢結果時使用。
#ifndef __HOTKEYOBJECT_H__
#define __HOTKEYOBJECT_H__

#include 
"wx/wx.h"

class LingosHookFrame;

class CHotkeyObject
{
public:
    CHotkeyObject(LingosHookFrame
* frame);
    
virtual ~CHotkeyObject();

    
int Register(UINT mod, UINT key);

    
int MessageProc(WXUINT msg, WXWPARAM wparam, WXLPARAM lparam);
protected:
    
void Unregister();

    
int GetResult(WXWPARAM wparam, WXLPARAM lparam);
    
int GetIEDocResult(HWND hwnd);

    
static int _wincount;
    
static BOOL CALLBACK EnumChildProc(HWND hwnd, LPARAM lparam);
private:
    LingosHookFrame
* _objFrame;
    
int _id;
}
;

#endif

int CHotkeyObject::Register(UINT mod, UINT key)
{
    _id 
= ::GlobalAddAtom(_T("LingosHook"));
    
if(_id == 0)
        
return -1;
    
if(::RegisterHotKey((HWND)_objFrame->GetHWND(), _id, mod, key) != TRUE)
        
return -1;
    
return 0;
}


void CHotkeyObject::Unregister()
{
    
if(_id != 0)
    
{
        ::UnregisterHotKey((HWND)_objFrame
->GetHWND(), _id);
        _id 
= 0;
    }

}

   模塊化設計的好處就是添加新的模塊,完全不需要涉及其它模塊的代碼。新的CHotkeyObject幾乎十五分鐘就可以使用,然后模仿提取Lingoes懸浮窗口的方法,開始提取其主窗口的IE控件窗口的結果,登時傻了。其主窗口遠比懸浮窗口復雜,所使用的IE控件窗口遠不是一個。所有使用到的IE窗口都有著相同的Class - 'Internet Explorer_Server',且都沒有Title,這讓我沒法區分哪個是結果窗口。折騰了很久,耐心全部被消耗后,拿出了最終的方法來 -- 硬編碼!這種方法對我來說,有些像原子彈--反對使用,但卻很有效。 怎么個硬編碼,看下面代碼就知道了。
BOOL CALLBACK CHotkeyObject::EnumChildProc(HWND hwnd, LPARAM lparam)
{
    
++ _wincount;

    
if(_wincount == 0x24)
    
{
        
*(HWND*)lparam = hwnd;
        
return FALSE;
    }

    
return TRUE;
}
    看出來了嗎?0x24!就是直接找主窗口上的第36個子窗口(控件)就是需要的結果窗口。。。
    緊接著在結果的處理上,我原以為通過兩種方式得到的TEXT結果應該是一樣,使用原有的CDictionaryObject應該可以正常工作,然而實際情況確實兩者差了一個\r\n,導致無法解析。看來使用TEXT解析結果的方法不能再使用,只有HTML方式才是靠譜。但想起前面被0x24的折磨,頓時“老羞成怒”,不再考慮什么使用“優雅”的方式分解HTML,比如寫一個好看的CHtmlAnalseObject什么的,直接來硬的吧 --把HTML當TEXT使用 --
if(html.find("<

    唉,又是硬編碼了,太暴力了。。。但誰叫Lingoes招惹我呢?!(。。。)


<---自我原諒的分割線---->
    
    硬編碼是編程中非常不好的習慣和做法,但這種方法實際在被經常使用著,比如我們常說的‘魔數’。硬編碼的一個主要害處就是使代碼失去了靈活性和可讀性。
    這里使用硬編碼是么辦法啊,不過再說了,LingosHook本身使用Hook方式就已經失去了自身的靈活了,完全和Lingoes的實現息息相關了。當前Lingoes版本是2.6.3,懸浮只有一個IE窗口,使用WM_COPYDATA消息,結果是HTML格式的,等等等等,隨便一個因素稍微的變化,都會導致LingosHook的無法使用。

posted on 2010-01-28 16:11 codejie 閱讀(550) 評論(0)  編輯 收藏 引用 所屬分類: C++隨筆而已

公告

Using C++

導航

統計

留言簿(73)

隨筆分類(513)

積分與排名

最新評論

閱讀排行榜

評論排行榜

青青草原综合久久大伊人导航_色综合久久天天综合_日日噜噜夜夜狠狠久久丁香五月_热久久这里只有精品
  • <ins id="pjuwb"></ins>
    <blockquote id="pjuwb"><pre id="pjuwb"></pre></blockquote>
    <noscript id="pjuwb"></noscript>
          <sup id="pjuwb"><pre id="pjuwb"></pre></sup>
            <dd id="pjuwb"></dd>
            <abbr id="pjuwb"></abbr>
            久久最新视频| 久久久久久有精品国产| 欧美视频免费看| 亚洲欧美卡通另类91av| 亚洲无玛一区| 国产自产女人91一区在线观看| 欧美中在线观看| 久久久噜噜噜久噜久久| 亚洲激情小视频| 一区二区三区 在线观看视频| 欧美午夜精品| 久久免费午夜影院| 老司机精品导航| 亚洲午夜免费福利视频| 亚洲欧美国产毛片在线| ●精品国产综合乱码久久久久| 亚洲电影免费观看高清完整版在线| 欧美电影打屁股sp| 亚洲欧洲av一区二区三区久久| 久久国产精彩视频| 99re这里只有精品6| 亚洲少妇诱惑| 在线看日韩欧美| 亚洲视频在线观看网站| 在线观看三级视频欧美| 999在线观看精品免费不卡网站| 国产婷婷色综合av蜜臀av | 国产日产欧美精品| 欧美成人性生活| 国产精品久线观看视频| 亚洲成人在线视频网站| 国产精品亚洲激情| 亚洲精品1234| 精品999久久久| 一区二区欧美精品| 亚洲精品色婷婷福利天堂| 午夜国产精品视频| 一区二区三区日韩欧美精品| 久久精品视频99| 午夜精品电影| 欧美日韩高清一区| 国产欧美日韩视频在线观看| 在线观看日韩专区| 亚洲男人av电影| 亚洲剧情一区二区| 久久综合九色九九| 久久精品人人爽| 国产精品久久久久久影院8一贰佰| 免费人成精品欧美精品| 国产丝袜一区二区三区| 亚洲自拍偷拍麻豆| 亚洲与欧洲av电影| 欧美精品久久久久久久久老牛影院| 久久免费99精品久久久久久| 国产伦精品一区二区三区视频孕妇| 亚洲精品在线二区| 亚洲另类视频| 欧美aa在线视频| 欧美成人影音| 亚洲国产影院| 欧美成人免费视频| 亚洲第一在线视频| 91久久在线| 欧美激情1区2区3区| 亚洲国产成人久久| 亚洲最新中文字幕| 欧美揉bbbbb揉bbbbb| 夜夜爽99久久国产综合精品女不卡| 99精品欧美一区| 欧美日韩成人综合天天影院| 艳女tv在线观看国产一区| 亚洲一区二区三区精品在线观看 | 麻豆成人在线播放| 欧美gay视频激情| 日韩视频在线免费| 欧美性事在线| 性欧美大战久久久久久久久| 久久久久久网址| 亚洲成人自拍视频| 欧美激情一区二区三区四区| 亚洲精品久久7777| 性色av一区二区三区红粉影视| 国产日本亚洲高清| 猛男gaygay欧美视频| 91久久黄色| 欧美一级视频| 亚洲国产精品视频| 欧美调教vk| 欧美一级专区免费大片| 欧美激情在线狂野欧美精品| 亚洲午夜一区二区三区| 国产亚洲精品aa午夜观看| 久久免费高清视频| a4yy欧美一区二区三区| 久久精品亚洲一区| 日韩一级免费观看| 国产在线播精品第三| 欧美日韩成人在线播放| 小黄鸭视频精品导航| 最新高清无码专区| 久久午夜羞羞影院免费观看| 亚洲精品一区二区网址| 国产乱码精品一区二区三区忘忧草| 久久本道综合色狠狠五月| 亚洲乱亚洲高清| 久久在线视频在线| 亚洲一区久久久| 亚洲丁香婷深爱综合| 国产精品啊啊啊| 免费亚洲网站| 欧美午夜不卡影院在线观看完整版免费| 国产麻豆综合| 久热爱精品视频线路一| 在线一区二区视频| 欧美69wwwcom| 久久久久久久久综合| 亚洲天堂男人| 亚洲国产高清一区二区三区| 国产精品一区二区久久| 欧美女同在线视频| 久久免费视频网| 欧美一级久久久久久久大片| 一本到高清视频免费精品| 欧美高清视频www夜色资源网| 欧美在线地址| 亚洲欧美激情在线视频| 国产精品99久久久久久久久久久久 | 你懂的视频一区二区| 欧美一区日韩一区| 午夜欧美不卡精品aaaaa| 在线视频亚洲| 亚洲视频免费在线观看| 一区二区三区国产精华| 日韩亚洲精品电影| 亚洲伦理自拍| 亚洲精品免费在线| 亚洲精品视频啊美女在线直播| 在线观看视频亚洲| 亚洲电影一级黄| 亚洲电影欧美电影有声小说| 在线播放中文字幕一区| 狠狠色综合播放一区二区| 在线观看欧美日韩| 亚洲电影欧美电影有声小说| 亚洲国产一成人久久精品| 亚洲国产精品999| 亚洲激情成人| 夜夜嗨av一区二区三区四区| 99精品视频一区| 在线午夜精品| 亚洲一区三区电影在线观看| 亚洲免费在线视频一区 二区| 亚洲一区二区高清| 销魂美女一区二区三区视频在线| 欧美一区二区视频网站| 久久精品理论片| 免费日韩一区二区| 亚洲精品久久久久久久久| 在线亚洲国产精品网站| 性做久久久久久久久| 老牛嫩草一区二区三区日本| 欧美成人有码| 国产精品久久久久久久久搜平片| 国产视频欧美视频| 亚洲精品乱码久久久久久日本蜜臀 | 国产精品男女猛烈高潮激情| 国产乱码精品一区二区三区五月婷| 国产伊人精品| 亚洲精品视频免费观看| 亚洲欧美日本国产有色| 久久婷婷国产麻豆91天堂| 亚洲日本成人女熟在线观看| 亚洲天堂av在线免费观看| 欧美一区二区视频免费观看| 欧美成人一二三| 国产日韩欧美亚洲| 亚洲人午夜精品免费| 午夜激情综合网| 欧美国产精品一区| 亚洲一区欧美一区| 免费试看一区| 国产亚洲欧美日韩在线一区| 日韩亚洲精品视频| 久久精品日韩| 99国产精品久久久久久久| 久久九九99视频| 欧美性色视频在线| 亚洲人成7777| 国产精品二区影院| 亚洲第一视频| 欧美一区二区精美| 亚洲伦理一区| 久久综合色天天久久综合图片| 国产精品久久久久7777婷婷| 亚洲人成免费| 久久精品国产精品亚洲| 亚洲视频网站在线观看| 欧美精品色一区二区三区| 精品99一区二区三区| 欧美一二三区精品|