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

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>
            日韩视频免费看| 美女尤物久久精品| 影音先锋亚洲视频| 一区二区三区高清| 亚洲高清不卡在线观看| 久久一区二区三区av| 亚洲第一在线综合网站| 快射av在线播放一区| 亚洲女性裸体视频| 性色av一区二区三区在线观看| 亚洲成人自拍视频| 亚洲精品久久久久久一区二区| 欧美激情五月| 亚洲一区区二区| 久久久久国产成人精品亚洲午夜| 欧美在线观看视频| 欧美日韩三级一区二区| 国产麻豆日韩欧美久久| 在线日本高清免费不卡| 亚洲私人影吧| 蜜桃av综合| 欧美一区中文字幕| 麻豆精品精华液| 欧美成人中文| 国产精品入口66mio| 欧美成人日本| 欧美在线看片| 欧美丰满高潮xxxx喷水动漫| 在线电影国产精品| 亚洲欧美国产精品va在线观看 | 国产精品久久久久久久久久免费| 亚洲卡通欧美制服中文| 亚洲一区影院| 夜久久久久久| 欧美专区18| 亚洲黄色在线| 免费久久精品视频| 日韩视频一区| 免费在线亚洲欧美| 国产综合久久| 久久国产日本精品| 欧美中文在线观看国产| 欧美韩日一区二区| 久久久www成人免费毛片麻豆| 国产精品热久久久久夜色精品三区| 99视频+国产日韩欧美| 亚洲精品在线视频观看| 欧美激情免费观看| 麻豆精品在线视频| 在线观看视频一区| 欧美成人黄色小视频| 欧美a级片网| 亚洲天堂激情| 久久成人18免费网站| 亚洲国产精品一区二区第一页 | 久久婷婷av| 亚洲大片在线| av成人福利| 国产伦精品一区二区三区| 欧美在线播放一区| 欧美精选一区| 久久精品理论片| 欧美日韩一二三区| 久久一二三区| 国产精品欧美精品| 亚洲国产清纯| 国产一区二区欧美| 亚洲综合色视频| 夜夜精品视频| 麻豆国产精品va在线观看不卡| 亚洲一二三区精品| 久久久久久亚洲精品中文字幕| 亚洲欧美中文字幕| 男同欧美伦乱| 亚洲福利视频二区| 亚洲精品黄色| 免播放器亚洲| 欧美三级在线播放| 亚洲人成久久| 99人久久精品视频最新地址| 亚洲美女精品一区| 激情久久综合| 亚洲自拍偷拍福利| 男同欧美伦乱| 国产精品久久久久77777| 小辣椒精品导航| 亚洲桃花岛网站| 午夜日韩福利| 国产欧美日韩视频| 欧美风情在线| 蜜臀久久99精品久久久画质超高清| 亚洲人午夜精品免费| 欧美激情91| 欧美国产日韩视频| 欧美暴力喷水在线| 亚洲国产成人tv| 免费日韩视频| 亚洲国产高清aⅴ视频| 美腿丝袜亚洲色图| 欧美激情视频在线播放| 欧美激情第4页| 美国成人直播| 亚洲激情成人| 亚洲伊人伊色伊影伊综合网| 亚洲天堂第二页| 欧美一区二区三区视频| 亚洲欧洲三级| 91久久久久久| 亚洲精品资源| 99国产精品久久久久久久久久 | 国产精品久久看| 欧美国产视频一区二区| 亚洲黄色免费| 亚洲国产精品va在线看黑人动漫| 黄色精品一区| 欧美日韩亚洲不卡| 国产精品一区亚洲| 国产亚洲午夜| 伊人精品在线| 亚洲午夜精品在线| 欧美永久精品| 久久精品毛片| 亚洲国产成人午夜在线一区| 欧美一区免费视频| 欧美影片第一页| 蜜桃久久av一区| 亚洲日本中文字幕| 小处雏高清一区二区三区| 久久久美女艺术照精彩视频福利播放| 欧美**字幕| 国产人成一区二区三区影院| 亚洲欧美在线高清| 一本色道久久综合亚洲91| 欧美高清在线一区二区| 亚洲美女视频在线免费观看| 久久久久久久久久久久久9999| 美女脱光内衣内裤视频久久影院 | 欧美一级网站| 国产一区二区三区在线播放免费观看| 亚洲天堂第二页| 欧美成人午夜剧场免费观看| 99国产精品久久久久久久久久| 免费在线观看精品| 最新日韩精品| 亚洲三级网站| 国产精品久久二区二区| 欧美在线观看一二区| 欧美在线91| 欧美偷拍另类| 亚洲欧美日韩一区二区三区在线| 欧美亚洲第一区| 久久久久国内| 麻豆精品视频| 欧美日韩国产成人在线免费| 欧美激情一二三区| 欧美精品日韩精品| 欧美日韩精品一区二区天天拍小说| 久久婷婷色综合| 欧美日韩精品二区第二页| 国产精品久久久久久久久免费樱桃 | 久久久亚洲国产美女国产盗摄| 欧美私人啪啪vps| 亚洲人体一区| 午夜久久久久久| 欧美调教vk| 亚洲国产欧美在线人成| 亚洲精品一区久久久久久 | 老司机一区二区| 久久精品国产亚洲高清剧情介绍| 欧美激情精品久久久久久蜜臀 | 夜夜精品视频| 亚洲国产va精品久久久不卡综合| 欧美色网一区二区| 久久av老司机精品网站导航| 亚洲一区视频| 欧美日韩伦理在线免费| 日韩视频亚洲视频| 一本大道久久a久久精二百| 夜夜夜久久久| 性欧美暴力猛交另类hd| 一本色道久久99精品综合 | 一本色道久久综合亚洲精品不| 国产精品v欧美精品v日韩精品| 欧美中文在线观看国产| 亚洲美女少妇无套啪啪呻吟| 在线视频你懂得一区| 久久成人综合视频| 一区国产精品| 日韩一区二区精品视频| 久久黄色网页| 国产日产欧产精品推荐色 | 最新亚洲激情| 久久疯狂做爰流白浆xx| 亚洲欧美国产精品va在线观看| 欧美偷拍一区二区| 亚洲一级高清| 亚洲国产精品久久精品怡红院| 欧美成年人网| 日韩一级大片| 亚洲国产综合91精品麻豆|