⭐ 欢迎来到虫虫下载站! | 📦 资源下载 📁 资源专辑 ℹ️ 关于我们
⭐ 虫虫下载站

📄 unit1.pas

📁 “屏幕抓字”技术在电子字典中得到广泛地应用
💻 PAS
字号:
unit Unit1;

interface

uses
  Windows, Messages, SysUtils, Classes, Graphics, Controls, Forms, Dialogs,
  StdCtrls, Buttons, Menus, ExtCtrls;

const GETWORD_ENABLE=1001;
const GETWORD_DISABLE=1002;
const NHD_WM_GETWORD_OK=WM_USER + 1011;
const IDM_ABOUTBOX=9999;

type
  Tfrm_main = class(TForm)
    Label1: TLabel;
    Edit1: TEdit;
    Timer1: TTimer;
    Label2: TLabel;
    Edit2: TEdit;
    procedure FormCreate(Sender: TObject);
    procedure FormDestroy(Sender: TObject);
    procedure Timer1Timer(Sender: TObject);
  private 
    procedure AppOnMessage(var Msg: TMsg;var Handled : Boolean);
    procedure GetWordFromBuffer(var message: tmessage); message NHD_WM_GETWORD_OK;
    { Private declarations }
  public
    { Public declarations }
  end;



var
  frm_main: Tfrm_main; 

implementation

uses about,GetWord;

{$R *.DFM}


procedure Tfrm_main.FormCreate(Sender: TObject);
var
  pSysMenu : HMENU;
begin

 //SetWindowPos((Sender as TForm).handle,HWND_TOPMOST,(Sender as TForm).Left,(Sender as TForm).Top,(Sender as TForm).Width,(Sender as TForm).Height,SWP_NOSIZE);

 Application.OnMessage := AppOnMessage;

  pSysMenu := GetSystemMenu(handle,FALSE);
  if pSysMenu <> 0 then begin
    AppendMenu(pSysMenu,MF_SEPARATOR,0,nil);
    AppendMenu(pSysMenu, MF_STRING ,IDM_ABOUTBOX, '有关屏幕取词...');
  end;

  pSysMenu := GetSystemMenu(Application.handle,FALSE);
  if pSysMenu <> 0 then begin
    AppendMenu(pSysMenu,MF_SEPARATOR,0,nil);
    AppendMenu(pSysMenu, MF_STRING ,IDM_ABOUTBOX, '有关屏幕取词...');
  end;

  if NHD_InitGetWords(application.handle,handle)=0 then begin
    messagebox(application.handle,'初始化屏幕取词动态链接库失败!','信息',MB_OK or MB_APPLMODAL or MB_ICONWARNING);
    application.Terminate;
    exit;
  end;   
end;

procedure Tfrm_main.FormDestroy(Sender: TObject);
begin
 NHD_ExitGetWords(); 
end;

procedure Tfrm_main.GetWordFromBuffer(var message: tmessage);
begin
  (*从缓冲区里面取词*)
 // ZeroMemory(@qcbuffer,sizeof(qcbuffer));   (*清空内存*)
  if BL_GetText32(g_TextBuffer,sizeof(g_TextBuffer),@G_Rect)>0
    then Edit1.Text := strpas(g_TextBuffer)
    else Edit1.Text := '';
end;

procedure Tfrm_main.AppOnMessage(var Msg: TMsg;var Handled : Boolean);  
begin
  if Msg.WParam=IDM_ABOUTBOX then begin
    frm_about.showmodal;
  end;

  (*if (Msg.message=WM_KEYDOWN) and (Msg.wParam = VK_CONTROL) then begin
          //press Ctrl key

    ptMousePos.x := 0;
    ptMousePos.y := 0;

    if (GetCursorPos(ptMousePos)) then begin
       NHD_BeginGetWord(ptMousePos);
    end;
  end;*)
end;

procedure Tfrm_main.Timer1Timer(Sender: TObject);
var
   ptMousePos : TPOINT; 
begin
  ptMousePos.x := 0;
  ptMousePos.y := 0;

  if (GetCursorPos(ptMousePos)) then begin
     NHD_BeginGetWord(ptMousePos);
  end;
end;

end.

⌨️ 快捷键说明

复制代码 Ctrl + C
搜索代码 Ctrl + F
全屏模式 F11
切换主题 Ctrl + Shift + D
显示快捷键 ?
增大字号 Ctrl + =
减小字号 Ctrl + -