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

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 閱讀(552) 評論(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>
            亚洲午夜国产一区99re久久| 欧美成年人网站| 欧美一区二区| 久久久爽爽爽美女图片| 亚洲永久免费视频| 性色av一区二区三区在线观看| 亚洲免费观看高清在线观看| 亚洲人成艺术| 国产欧美日韩亚洲一区二区三区| 欧美天天综合网| 久久精品一区二区三区中文字幕 | 欧美成人亚洲成人| 欧美黑人国产人伦爽爽爽| 亚洲电影网站| 午夜欧美电影在线观看| 香蕉国产精品偷在线观看不卡| 国模精品一区二区三区| 在线观看免费视频综合| 国产精品乱人伦中文| 国产午夜精品全部视频在线播放| 久久在线视频在线| 亚洲最新视频在线播放| 亚洲影院色无极综合| 亚洲黄色尤物视频| 亚洲久久一区二区| 欧美肥婆在线| 中日韩午夜理伦电影免费| 亚洲欧美综合精品久久成人| 一本大道久久精品懂色aⅴ| 亚洲少妇最新在线视频| 在线看一区二区| 一本久久综合亚洲鲁鲁| 久久噜噜噜精品国产亚洲综合 | 99re8这里有精品热视频免费| 久久久精品五月天| 亚洲一区3d动漫同人无遮挡| 亚洲欧洲日韩综合二区| 国产欧美一区二区三区视频| 欧美日韩p片| 黑人极品videos精品欧美裸| 红桃视频一区| 亚洲一区欧美二区| 亚洲电影自拍| 久久国产精品高清| 国产精品久久久爽爽爽麻豆色哟哟 | 亚洲黄色三级| 久久嫩草精品久久久久| 国产精品免费久久久久久| 亚洲精品影视在线观看| 久久久水蜜桃av免费网站| 久久天天躁夜夜躁狠狠躁2022| 亚洲人成人一区二区在线观看 | 亚洲午夜精品| 一本久久综合| 欧美激情第1页| 亚洲大片免费看| 亚洲国产精品高清久久久| 激情校园亚洲| 亚洲福利视频二区| 久久久青草青青国产亚洲免观| 在线中文字幕日韩| 欧美日韩在线播放一区| 99riav1国产精品视频| 亚洲精美视频| 亚洲一区二区三区欧美| 欧美日韩成人免费| 亚洲午夜日本在线观看| 久久黄色小说| 午夜精品久久久久久久男人的天堂 | 欧美午夜激情小视频| 欧美日韩一区二区三区视频| 欧美日韩一区在线观看| 99在线热播精品免费99热| 亚洲国产视频a| 亚洲视频碰碰| 国产精品久久久久久久久久ktv| 欧美日韩午夜剧场| 在线一区二区三区做爰视频网站| 午夜精品电影| 亚洲小视频在线| 国产一区二区精品久久99| 久久精品免费播放| 老司机精品视频一区二区三区| 欧美日韩一区二区三区视频 | 99精品免费网| 亚洲专区在线| 在线观看三级视频欧美| 一区二区日韩精品| 一区二区三区精品久久久| 午夜视频在线观看一区二区三区| 国产亚洲成精品久久| 亚洲最新在线视频| 亚洲欧美精品在线观看| 免费不卡在线观看av| 国产精品久久久久久亚洲毛片| 欧美亚洲一区二区在线观看| 亚洲国产精品一区制服丝袜 | 国产精品久久久久9999吃药| 久久精品综合一区| 在线中文字幕日韩| 狠狠色狠狠色综合| 9l视频自拍蝌蚪9l视频成人| 免费毛片一区二区三区久久久| 国产精品日本精品| 欧美91大片| 久久成人免费视频| 99re6热在线精品视频播放速度| 亚洲视频狠狠| 国产精品mv在线观看| 亚洲精品黄网在线观看| 亚洲视频综合在线| 国产精品hd| 欧美激情四色| 欧美h视频在线| 国产午夜亚洲精品理论片色戒| 欧美韩日一区二区| 狠狠久久亚洲欧美专区| 久久精品五月| 欧美日韩麻豆| 亚洲第一二三四五区| 国产婷婷色一区二区三区四区| 亚洲欧美激情一区二区| 欧美成人午夜激情在线| 久久免费视频这里只有精品| 欧美亚洲三区| 韩国一区二区三区在线观看| 午夜在线成人av| 欧美日韩精品一本二本三本| 99国产一区| 欧美aa国产视频| 亚洲狼人综合| 欧美日韩在线看| 一区二区三区四区蜜桃| 免费欧美在线| 国产精品亚洲片夜色在线| 亚洲欧美日韩在线不卡| 久久色中文字幕| 国产精品三上| 一区二区三区国产盗摄| 国产精品社区| 亚洲丝袜av一区| 亚洲欧美亚洲| 国产精品久久久久久影视| 日韩视频在线免费| 在线亚洲免费| 欧美在线在线| 久久久久久69| 亚洲茄子视频| 亚洲字幕一区二区| 小黄鸭精品密入口导航| 国产乱码精品一区二区三区不卡| 亚洲欧美中文日韩在线| 亚洲日本激情| 欧美日韩一区二区三区在线观看免 | 国产日韩欧美在线| 欧美大片免费观看在线观看网站推荐 | 午夜一区在线| 中文高清一区| 欧美主播一区二区三区| 牛牛精品成人免费视频| 亚洲免费网站| 国产欧美91| 久久精品在线视频| 亚洲专区在线| 国产色产综合产在线视频| 久久一区亚洲| 亚洲人成高清| 欧美一区二区三区四区高清| 久久不见久久见免费视频1| 国产精品免费aⅴ片在线观看| 久久成人免费网| 亚洲高清毛片| 亚洲天堂激情| 欧美1区3d| 亚洲精品免费在线| 国语精品一区| 一区二区三区国产在线观看| 欧美www在线| 一区二区三区欧美| 久久久999精品免费| 国产精品视频大全| 欧美激情aaaa| 国产精品三级视频| 久久久久99| 欧美专区日韩视频| 国产精品私拍pans大尺度在线 | 国内外成人免费激情在线视频| 久久精品在线| 欧美精品九九| 亚洲一区二区三区欧美| 久久久人人人| 欧美色区777第一页| 亚洲成人资源| 亚洲视频一区二区| 久久精品国产在热久久| 亚洲国产成人久久综合| 久久国产福利| 一本色道久久综合亚洲精品高清 | 欧美黄网免费在线观看| 欧美在线一二三四区|