亚洲欧美第一页_禁久久精品乱码_粉嫩av一区二区三区免费野_久草精品视频

? 歡迎來(lái)到蟲(chóng)蟲(chóng)下載站! | ?? 資源下載 ?? 資源專輯 ?? 關(guān)于我們
? 蟲(chóng)蟲(chóng)下載站

?? getword.~pas

?? “屏幕抓字”技術(shù)在電子字典中得到廣泛地應(yīng)用
?? ~PAS
字號(hào):
unit GetWord;

interface

uses
  SysUtils,
  windows,
  messages;

const NHD_GETWORD_TIMER = 2;
const NHD_MAX_TEXTLEN = 1024;
const NHD_WIN_INITPOSX = -1;
const NHD_WIN_INITPOSY = -1;
const NHD_FLYWIN_WIDTH = 1;
const NHD_FLYWIN_HEIGHT = 1;
const NHD_CLASSNAME_LEN	= 256;
const NHD_GW_WAITING_TIME = 200;   //get word waiting time;

  (*設(shè)置屏幕抓取函數(shù)*)
 type TBL_SetFlag32 = function (nFlag : word;    //設(shè)置是否取詞
                             hNotifyWnd : HWND;    //當(dāng)取詞后得窗口句柄
                             MouseX : integer;    //X坐標(biāo)
                             MouseY : integer): DWORD;stdcall;    //Y坐標(biāo)
(*   功能:
	啟動(dòng)或停止取詞。
   參數(shù):
       nFlag
              [輸入] 指定下列值之一:
              GETWORD_ENABLE: 開(kāi)始取詞。在重畫(huà)被取單詞區(qū)域前設(shè)置此標(biāo)志。nhw32.dll是通過(guò)
                              重畫(huà)單詞區(qū)域,截取TextOutA, TextOutW, ExtTextOutA,
                              ExtTextOutW等Windows API函數(shù)的參數(shù)來(lái)取詞的。
              GETWORD_DISABLE: 停止取詞。
       hNotifyWnd
              [輸入] 通知窗口句柄。當(dāng)取到此時(shí),向該通知窗口發(fā)送一登記消息:GWMSG_GETWORDOK。
       MouseX
		[輸入] 指定取詞點(diǎn)的X坐標(biāo)。
       MouseY
              [輸入] 指定取詞點(diǎn)的Y坐標(biāo)。
    返回值:
       可忽略。
*)
type TLPRECT = ^TRECT;  (*定義指針先*)
 type TBL_GetText32 = function(lpszCurWord : pchar;
                             nBufferSize : integer;
                             lpWordRect : TLPRECT ): DWORD;stdcall;
    (*功能:
	從內(nèi)部緩沖區(qū)取出單詞文本串。對(duì)英語(yǔ)文本,該函數(shù)最長(zhǎng)取出一行內(nèi)以空格為界的三個(gè)英文單詞串,遇空格,非英文字母及除'-'外的標(biāo)點(diǎn)符號(hào),則終止取詞。對(duì)漢字文本,該函數(shù)最長(zhǎng)取出一行漢字串,遇英語(yǔ)字母,標(biāo)點(diǎn)符號(hào)等非漢語(yǔ)字符,則終止取詞。該函數(shù)不能同時(shí)取出英語(yǔ)和漢語(yǔ)字符。
    參數(shù):
       lpszCurWord
              [輸入] 目的緩沖區(qū)指針。
       nBufferSize
              [輸入] 目的緩沖區(qū)大小。
       lpWordRect
              [輸出] 指向 RECT 結(jié)構(gòu)的指針。該結(jié)構(gòu)定義了被取單詞所在矩形區(qū)域。
    返回值:
        當(dāng)前光標(biāo)在全部詞中的位置。*)

 type   TSetNHW32 = function(): boolean; stdcall;
 (*
     功能:
        Win NT/2000 環(huán)境下的初始化函數(shù)。一般在程序開(kāi)始時(shí),調(diào)用一次。
    參數(shù):
        無(wú)。
    返回值:
        如果成功 TRUE ,失敗 FALSE 。
 *)

 type  TResetNHW32= function():boolean; stdcall;
(*    功能:
        Win NT/2000 環(huán)境下的去初始化函數(shù)。一般在程序結(jié)束時(shí)調(diào)用。
    參數(shù):
        無(wú)。
    返回值:
        如果成功 TRUE ,失敗 FALSE 。*)



function NHD_FlyWndProc(hWnd, Msg,wParam,lParam: Integer): Integer; stdcall;
function NHD_CreateWindow(hInst: Integer): HWND;
procedure NHD_BeginGetWord(ptMousePos: TPOINT);

function NHD_ExitGetWords(): boolean;
function NHD_DestroyWindow(): boolean;
procedure NHD_FreeLoadedLib();
function NHD_InitGetWords(hInst: THANDLE; hwnd: HWND): HWND;
function NHD_LoadGetWordLib(): boolean;

var
  WinClass: TWndClassA;
  Inst: Integer;
  Msg: TMsg;

  g_TextBuffer : array[0..1024] of char;

  g_hFlyWin : HWND;
  g_nGWTimerID : word;
  
  g_hGetWordInst : Integer;
  BL_SetFlag32 : TBL_SetFlag32;
  BL_GetText32 : TBL_GetText32;
  SetNHW32 : TSetNHW32;
  ResetNHW32 : TResetNHW32;
  g_hNHMainWin : HWND;
  
  g_WM_GetWordOk:WORD;
  g_bInGetWord : boolean;
  currpoint:Tpoint;
  G_Rect : TRECT;
implementation

uses unit1;

function NHD_CreateWindow(hInst: Integer): HWND;
var
   hwnd : LongWord;
   wc : TWndClassA;
begin
  if hInst = 0 then begin
    result :=0;
    exit;
  end;

  with wc do
  begin
    style              := WS_EX_TOPMOST;
    lpfnWndProc        := @NHD_FlyWndProc;  (*消息處理函數(shù)*)
    hInstance          := hInst;
    hbrBackground      := color_btnface + 1;
    lpszClassname      := 'NHD_FLYWIN_DEMO';
    hicon              := 0;
    hCursor            := 0;
    cbClsExtra         := 0;
    cbWndExtra         := 0;
  end;
  RegisterClass(wc);

  hwnd := CreateWindowEx (WS_EX_TOPMOST or WS_EX_TOOLWINDOW,
                           'NHD_FLYWIN_DEMO',
                           'NHD_FlyWindow_Demo',
                           WS_POPUP or WS_VISIBLE,
                           NHD_WIN_INITPOSX,
                           NHD_WIN_INITPOSY,
                           NHD_FLYWIN_WIDTH,
                           NHD_FLYWIN_HEIGHT,
                           0,  
                           0,
                           hInst,
                           nil);
    
  result := hwnd;
end;

function NHD_FlyWndProc(hWnd, Msg,wParam,lParam: Integer): Integer; stdcall;
begin
  //Unhook textout when reveived msg from getword;
  if msg = g_WM_GetWordOk then begin
    if g_bInGetWord then begin
      g_bInGetWord := FALSE;
      KillTimer(g_hFlyWin, NHD_GETWORD_TIMER);
      g_nGWTimerID := 0;
      BL_SetFlag32(GETWORD_DISABLE, 0, 0, 0);

      if wParam = 0 then begin
        BL_GetText32(@g_TextBuffer, sizeof(g_TextBuffer), @G_Rect);
      end;

      PostMessage(g_hNHMainWin, NHD_WM_GETWORD_OK, 0, 0);
      result := 0;
      exit;
    end;
  end;

  result := DefWindowProc(hWnd, msg, wParam, lParam);
end;

procedure NHD_GetWordTimerProc(hwnd: HWND; msg: word; idTimer: word; dwTime: DWORD);stdcall;
begin
	//may be proior finished by Getword message;
  if g_bInGetWord then begin
    g_bInGetWord := FALSE;
    //UnHook TextOut;
    BL_SetFlag32(GETWORD_DISABLE, 0, 0, 0);
    BL_GetText32(g_TextBuffer, NHD_MAX_TEXTLEN, @G_Rect);
  end;

  KillTimer(g_hFlyWin, NHD_GETWORD_TIMER);
  g_nGWTimerID := 0;

  PostMessage(g_hNHMainWin, NHD_WM_GETWORD_OK, 0, 0);
end;

procedure NHD_BeginGetWord(ptMousePos: TPOINT);
var
  szAppClassName : array [0..NHD_CLASSNAME_LEN] of char;
  hAppWin : LongWord;
  nFlyWinLeft : integer;
  nFlyWinWidth : integer;
  rcAppWin : TRECT ;
  cmpstr : string;
begin

	//get window from mouse point;
	hAppWin := WindowFromPoint(ptMousePos);

	//check if the app window is EDIT, if it is, redraw whole line;
	GetClassName(hAppWin, szAppClassName, NHD_CLASSNAME_LEN);

	(*DbgPrintf("hAppWin: %x\n", hAppWin);
	DbgPrintf("ClassName: %s\n", szAppClassName);*)
	cmpstr := trim(strpas(szAppClassName));
        Frm_main.Edit2.text := cmpstr;

	if ((cmpstr = 'Edit') or						//NotePad
	   (cmpstr = 'Internet Explorer_Server') or //IE4.0
	   (cmpstr = 'RichEdit') or					//
	   (cmpstr = 'RichEdit20A') or				//WordPad
	   (cmpstr = 'RichEdit20W')	 or				//WordPad
	   (cmpstr = 'HTML_Internet Explorer')	 or	//IE3.0
	   (cmpstr = 'ThunderTextBox')	 or			//VB Edit
	   (cmpstr = 'ThunderRT5TextBox') or		//VB Edit
	   (cmpstr = 'ThunderRT6TextBox') or		//VB Edit
	   (cmpstr = 'EXCEL<')	or		//Excel 2000
	   (cmpstr = 'EXCEL7')  or		//Excel 2000
	   (cmpstr = 'EXCEL6') or					//Excel 2000
	   (cmpstr = 'ConsoleWindowClass') or		//NT V86
	   (cmpstr = 'Edit') or
	   (cmpstr = 'tty')  or
	   (cmpstr = 'ttyGrab'))						//Word97
	then begin
		GetWindowRect(hAppWin, rcAppWin);
		nFlyWinLeft := rcAppWin.left - 4;
		nFlyWinWidth := rcAppWin.right - rcAppWin.left - 8;

		//don't not repaint whole line if too long;
		if (ptMousePos.x - nFlyWinLeft) > 200 then begin
			nFlyWinLeft := ptMousePos.x - 200;
		end;

		//DbgPrintf("!!!!tty window");
	end else begin
		nFlyWinLeft := ptMousePos.x;
		nFlyWinWidth := NHD_FLYWIN_WIDTH;
	end;

	//note: move the flywin to cursor pos "x - 1" to aviod mouse shape changing between ARROW and EDIT in edit area;
	//use SetWindowPos instead of MoveWindow, for MoveWindow can not make menu item redraw.
	SetWindowPos(g_hFlyWin, HWND_TOPMOST, 
			     nFlyWinLeft, 
				 ptMousePos.y - 1 ,
				 nFlyWinWidth,
				 NHD_FLYWIN_HEIGHT,
				 SWP_NOACTIVATE or SWP_NOREDRAW);
	
	//set flag to avoid re-entry;
	g_bInGetWord := TRUE;

	//hook TextOut;
	BL_SetFlag32(GETWORD_ENABLE, g_hFlyWin, ptMousePos.x, ptMousePos.y);

	MoveWindow(g_hFlyWin, -1, -1, NHD_FLYWIN_WIDTH, NHD_FLYWIN_HEIGHT, TRUE);

	g_nGWTimerID := SetTimer(g_hFlyWin, NHD_GETWORD_TIMER, NHD_GW_WAITING_TIME, @NHD_GetWordTimerProc);
end;

function NHD_CopyWordsTo(szBuffer: pchar; nBufferSize: Integer):Boolean;
var
 nLen : integer;
begin
  nLen := sizeof(g_TextBuffer);
  if(nLen + 1) > nBufferSize
  then begin
    result := false;
    exit;
  end;

  ZeroMemory(szBuffer,nBufferSize);
  CopyMemory(szBuffer, @g_TextBuffer, nLen);

  result := true;
 end;

function NHD_ExitGetWords(): boolean;
begin
  //free libarys:
  NHD_FreeLoadedLib();

  NHD_DestroyWindow();

  result := TRUE;
end;

function NHD_DestroyWindow(): boolean;
begin
  if g_hFlyWin<>0 then begin
          DestroyWindow(g_hFlyWin);
          g_hFlyWin := 0;
  end;

  result := TRUE;
end;

procedure NHD_FreeLoadedLib();
begin
  if g_hGetWordInst<>0 then begin
    //only valid in windows NT enviroment

    if @ResetNHW32<>nil then begin
            ResetNHW32();
    end;

    FreeLibrary(g_hGetWordInst);
    //g_hGetWordInst = 0;
  end;
end;

function NHD_InitGetWords(hInst: THANDLE;  hwnd: HWND): HWND;
begin
  //save NH main window to send run time error messages:
  g_hNHMainWin := hwnd;

  if NHD_LoadGetWordLib=false then begin
          NHD_FreeLoadedLib();
          result := 0;
          exit;
  end;

  //Create fly_window (cause paint) and show text window;
  g_hFlyWin := NHD_CreateWindow(hInst);
  if g_hFlyWin=0 then begin
          NHD_FreeLoadedLib();
          result := 0;
          exit;
  end;

  g_WM_GetWordOk := RegisterWindowMessage('BL_HASSTRING');
  if g_WM_GetWordOk=0 then begin
          NHD_FreeLoadedLib();
          result := 0;
          exit;
  end;

  result := g_hFlyWin;
end;

function NHD_LoadGetWordLib(): boolean;
begin
  g_hGetWordInst := LoadLibrary('nhw32.dll');
  if g_hGetWordInst=0 then begin
          messagebox(0,'裝載動(dòng)態(tài)鏈接庫(kù)失敗','警告',mb_ok or mb_iconwarning or mb_applmodal);
          result := FALSE;
          exit;
  end;

  @BL_SetFlag32 := GetProcAddress(g_hGetWordInst,'BL_SetFlag32');
  if @BL_SetFlag32=nil then begin
   messagebox(0,'裝載屏幕取詞動(dòng)態(tài)鏈接庫(kù)函數(shù): BL_SetFlag32失敗!','信息',MB_OK or MB_APPLMODAL or MB_ICONWARNING);
   result := false;
   exit;
  end;

  @BL_GetText32 := GetProcAddress(g_hGetWordInst,'BL_GetText32');
  if @BL_GetText32=nil then begin
   messagebox(0,'裝載屏幕取詞動(dòng)態(tài)鏈接庫(kù)函數(shù): BL_GetText32失敗!','信息',MB_OK or MB_APPLMODAL or MB_ICONWARNING);
   result := false;
   exit;
  end;

  @SetNHW32 := GetProcAddress(g_hGetWordInst,'SetNHW32');
  if @SetNHW32=nil then begin
   messagebox(0,'裝載屏幕取詞動(dòng)態(tài)鏈接庫(kù)函數(shù): SetNHW32失敗!','信息',MB_OK or MB_APPLMODAL or MB_ICONWARNING);
   result := false;
   exit;
  end;

  @ResetNHW32 := GetProcAddress(g_hGetWordInst,'ResetNHW32');
  if @ResetNHW32=nil then begin
   messagebox(0,'裝載屏幕取詞動(dòng)態(tài)鏈接庫(kù)函數(shù): ResetNHW32失敗!','信息',MB_OK or MB_APPLMODAL or MB_ICONWARNING);
   result := false;
   exit;
  end;

  if SetNHW32()=false then begin
   messagebox(0,'無(wú)法設(shè)置屏幕取詞!','信息',MB_OK or MB_APPLMODAL or MB_ICONWARNING);
   result := false;
   exit;
  end;

 result := true;
end;

end.

?? 快捷鍵說(shuō)明

復(fù)制代碼 Ctrl + C
搜索代碼 Ctrl + F
全屏模式 F11
切換主題 Ctrl + Shift + D
顯示快捷鍵 ?
增大字號(hào) Ctrl + =
減小字號(hào) Ctrl + -
亚洲欧美第一页_禁久久精品乱码_粉嫩av一区二区三区免费野_久草精品视频
国产精品综合一区二区三区| 欧美一区二区视频网站| 成人精品视频.| 激情综合网av| 狠狠色综合播放一区二区| 成人看片黄a免费看在线| 成人精品视频一区二区三区尤物| 国产91清纯白嫩初高中在线观看| 国产盗摄一区二区| 成人午夜av影视| 91丨porny丨蝌蚪视频| 色综合久久中文字幕| 欧美亚男人的天堂| 6080国产精品一区二区| 日韩欧美久久久| 久久精品夜色噜噜亚洲a∨| 久久久亚洲综合| 欧美激情一区二区三区全黄| 中文字幕在线观看一区| 亚洲愉拍自拍另类高清精品| 日本欧美韩国一区三区| 狠狠色丁香婷婷综合久久片| 国产suv一区二区三区88区| 91网页版在线| 欧美精品在线观看播放| 久久综合国产精品| 国产精品第五页| 亚洲午夜视频在线观看| 麻豆91精品视频| 成人黄色综合网站| 精品视频一区二区三区免费| 精品国产一区二区三区久久影院 | 911精品国产一区二区在线| 欧美一区三区四区| 日本一二三四高清不卡| 亚洲一线二线三线久久久| 久久精品99国产国产精| 不卡一区中文字幕| 欧美日韩国产精品成人| 26uuu成人网一区二区三区| 国产精品网站在线观看| 亚洲国产sm捆绑调教视频| 国产一区二区中文字幕| 色婷婷av一区二区三区软件 | 亚洲精品一二三| 日韩成人精品视频| 成人精品国产福利| 这里只有精品视频在线观看| 日本一区二区视频在线观看| 亚洲女爱视频在线| 精品在线观看免费| 欧美亚洲一区二区在线观看| 久久久精品人体av艺术| 亚洲一区二区综合| 成人综合日日夜夜| 欧美一区二区三区人| 亚洲欧洲av色图| 看片网站欧美日韩| 欧美丝袜丝交足nylons| 欧美国产日韩a欧美在线观看| 午夜电影一区二区| av中文字幕一区| 精品国产91洋老外米糕| 午夜亚洲福利老司机| 99精品欧美一区二区三区小说| 日韩精品综合一本久道在线视频| 亚洲欧美aⅴ...| 国产精品性做久久久久久| 6080日韩午夜伦伦午夜伦| 亚洲另类在线制服丝袜| 国产高清精品在线| 日韩免费一区二区| 亚洲与欧洲av电影| 91色视频在线| 欧美经典一区二区| 国产揄拍国内精品对白| 欧美久久一二三四区| 亚洲精品乱码久久久久久久久| 国产精品白丝av| 精品国产自在久精品国产| 天天影视涩香欲综合网| 在线观看不卡一区| 亚洲欧美经典视频| 99久久婷婷国产综合精品| 久久久久亚洲综合| 国产在线精品免费av| 欧美一级片免费看| 日本不卡的三区四区五区| 欧美乱妇15p| 亚洲777理论| 欧美日韩日日骚| 亚洲国产另类av| 欧美色综合久久| 亚洲影院免费观看| 欧美日韩视频在线第一区 | 成人a级免费电影| 国产色产综合色产在线视频| 国产在线视频一区二区三区| 精品电影一区二区| 美女免费视频一区| 日韩美女视频一区二区在线观看| 青椒成人免费视频| 欧美成人精品高清在线播放| 久热成人在线视频| 精品国产免费久久| 国产馆精品极品| 中文字幕第一区| av成人动漫在线观看| 亚洲男同1069视频| 欧美日韩在线三级| 五月婷婷综合激情| 日韩视频不卡中文| 国产呦精品一区二区三区网站| 久久亚区不卡日本| 丰满亚洲少妇av| 亚洲特黄一级片| 欧美在线综合视频| 日日摸夜夜添夜夜添国产精品| 欧美一区二区女人| 国产自产2019最新不卡| 国产欧美日本一区二区三区| 成人福利视频网站| 高清免费成人av| 1024成人网色www| 欧美中文字幕不卡| 麻豆国产欧美日韩综合精品二区 | 亚洲伊人伊色伊影伊综合网| 在线播放欧美女士性生活| 久久成人麻豆午夜电影| 国产嫩草影院久久久久| 91丨porny丨户外露出| 日日摸夜夜添夜夜添精品视频| 欧美mv日韩mv国产网站app| 粉嫩av一区二区三区| 一区二区在线看| 欧美不卡视频一区| 成人ar影院免费观看视频| 亚洲一区二区五区| 26uuu国产一区二区三区| 99久久精品国产导航| 亚洲1区2区3区4区| 日本一区二区三区国色天香| 在线观看av一区| 国产一区二区在线免费观看| 亚洲免费在线播放| 日韩美女天天操| 日本久久电影网| 精品亚洲porn| 亚洲综合色视频| 久久久久久免费| 欧美日韩一区高清| 国产成人av福利| 午夜精品久久久久久久久久久 | 亚洲日本在线视频观看| 欧美一区二区在线免费播放| 国产成人啪午夜精品网站男同| 亚洲成人动漫一区| 国产精品沙发午睡系列990531| 欧美日本一区二区在线观看| 大白屁股一区二区视频| 日韩成人午夜精品| 最近中文字幕一区二区三区| 欧美大片一区二区三区| 色94色欧美sute亚洲线路一ni| 黄色日韩网站视频| 亚洲成av人在线观看| 国产精品久线观看视频| 精品久久人人做人人爰| 欧美性色aⅴ视频一区日韩精品| 国产老妇另类xxxxx| 日韩精品一级二级| 亚洲免费av观看| 日韩国产精品久久| 综合久久国产九一剧情麻豆| 精品日产卡一卡二卡麻豆| 欧美精品色综合| 91精彩视频在线观看| 国产suv一区二区三区88区| 免费在线看一区| 亚洲不卡在线观看| 亚洲免费观看高清完整版在线观看 | 国产乱码字幕精品高清av| 视频一区二区三区中文字幕| 亚洲男人的天堂av| 国产精品国产精品国产专区不片 | 一区二区三区高清| 国产精品三级在线观看| 精品国产一区a| 精品日韩一区二区三区免费视频| 欧美日韩精品综合在线| 色婷婷久久综合| 99久久99久久久精品齐齐| 粉嫩13p一区二区三区| 国产一区二区三区| 激情小说欧美图片| 麻豆91在线播放免费| 日本欧美一区二区三区| 日韩av一级片| 日本不卡123| 青青国产91久久久久久|