2000分(因为不能一次送出,我会分20次送完,食言是小狗),求解屏幕取汉字问题!

leanlay 2003-09-29 05:17:58
程序运行时,出现一个抓图矩形,然后将其覆盖范围内的文本内容读取出来。最好有源码事例。解决了,立即以2000分相赠(因为不能一次送出,我会分20次送完),决不食言。
...全文
52 17 打赏 收藏 转发到动态 举报
写回复
用AI写文章
17 条回复
切换为时间正序
请发表友善的回复…
发表回复
nzh517 2003-10-01
  • 打赏
  • 举报
回复
http://isxuzhu.myrice.com
leapmars 2003-10-01
  • 打赏
  • 举报
回复
楼上的都说清楚了
naughtyboy 2003-09-30
  • 打赏
  • 举报
回复
把你的邮箱留下
huojiehai 2003-09-30
  • 打赏
  • 举报
回复
还有这

http://www.delphibbs.com/delphibbs/dispq.asp?lid=1123349

太太多多了!!
huojiehai 2003-09-30
  • 打赏
  • 举报
回复
以下全是抄以前贴子的



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;

(*设置屏幕抓取函数*)
type TBL_SetFlag32 = function (nFlag : word; //设置是否取词
hNotifyWnd : HWND; //当取词后得窗口句柄
MouseX : integer; //X坐标
MouseY : integer): DWORD;stdcall; //Y坐标
(* 功能:
启动或停止取词。
参数:
nFlag
[输入] 指定下列值之一:
GETWORD_ENABLE: 开始取词。在重画被取单词区域前设置此标志。nhw32.dll是通过
重画单词区域,截取TextOutA, TextOutW, ExtTextOutA,
ExtTextOutW等Windows API函数的参数来取词的。
GETWORD_DISABLE: 停止取词。
hNotifyWnd
[输入] 通知窗口句柄。当取到此时,向该通知窗口发送一登记消息:GWMSG_GETWORDOK。
MouseX
[输入] 指定取词点的X坐标。
MouseY
[输入] 指定取词点的Y坐标。
返回值:
可忽略。
*)
type TLPRECT = ^TRECT; (*定义指针先*)
type TBL_GetText32 = function(lpszCurWord : pchar;
nBufferSize : integer;
lpWordRect : TLPRECT ): DWORD;stdcall;
(*功能:
从内部缓冲区取出单词文本串。对英语文本,该函数最长取出一行内以空格为界的三个英文单词串,
遇空格,非英文字母及除'-'外的标点符号,则终止取词。对汉字文本,该函数最长取出一行汉字串,
遇英语字母,标点符号等非汉语字符,则终止取词。该函数不能同时取出英语和汉语字符。
参数:
lpszCurWord
[输入] 目的缓冲区指针。
nBufferSize
[输入] 目的缓冲区大小。
lpWordRect
[输出] 指向 RECT 结构的指针。该结构定义了被取单词所在矩形区域。
返回值:
当前光标在全部词中的位置。*)

type TSetNHW32 = function(): boolean; stdcall;
(*
功能:
Win NT/2000 环境下的初始化函数。一般在程序开始时,调用一次。
参数:
无。
返回值:
如果成功 TRUE ,失败 FALSE 。
*)

type TResetNHW32= function():boolean; stdcall;
(* 功能:
Win NT/2000 环境下的去初始化函数。一般在程序结束时调用。
参数:
无。
返回值:
如果成功 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; (*消息处理函数*)
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;



sixgj 2003-09-30
  • 打赏
  • 举报
回复
呵呵。 Eastunfail(浴血雏龙)==(恶鱼杀手) 把你的代码帖出来啊。
rosemarry007 2003-09-30
  • 打赏
  • 举报
回复
jie fen
Eastunfail 2003-09-30
  • 打赏
  • 举报
回复
如果是类似金山词霸那样的屏幕取词,我有代码。
aiirii 2003-09-30
  • 打赏
  • 举报
回复
为了2000分,国庆我试试看!! 不过,你的所谓
>>出现一个抓图矩形,然后将其覆盖范围内的文本内容读取出来
不会是要矩形中的所有窗口的标题,菜单都要吧?? 而且,类似 pdf 这种,可能有点难度!
邹工 2003-09-29
  • 打赏
  • 举报
回复
看看屏幕取词了.
FrameSniper 2003-09-29
  • 打赏
  • 举报
回复
自己去Google找找吧!
耙子 2003-09-29
  • 打赏
  • 举报
回复
这不就是类似金山词霸取词的东西吗。
原理不难,

1.利用hook,接管TextOut和TextOutXY这类的函数;因为屏幕的文字就是通过他们写上去的;
2.强制刷新制定的矩形范围;

这个时候就能得到屏幕的内容了。

类似的代码网上有很多,你可以自己搜索。
pankun 2003-09-29
  • 打赏
  • 举报
回复
如果只是取窗口文本倒容易.找找API HOOK的例子吧.
pandengzhe 2003-09-29
  • 打赏
  • 举报
回复
同意,暂无源码
Eastunfail 2003-09-29
  • 打赏
  • 举报
回复
是抓取屏幕上面窗口的文本么?
还是抓取位图上面的文本?

屏幕窗口上某个矩形里面的文本倒是容易一些
leanlay 2003-09-29
  • 打赏
  • 举报
回复
是的,在其他程序的窗口中!
lqdmafeng 2003-09-29
  • 打赏
  • 举报
回复
不明白?

覆盖范围内的文本内容:是在其它窗口的吗?
原创LCL并网APF直流侧可控PFC晶闸管整流逆变-APFC.mdl 2010年过去了,2011年来了,首先向各位说声新年好,希望各位在新的一年里能够工作顺利、事业有成!      在2010里,有成功也有失败,在我遇到困难的时候,有论坛里的各位好心人能够帮助我,真的非常感谢,论坛陪着我一起攻克困难!      曾经我在我发的一个帖子中:【原创】学习APF过程中的读书笔记和SIMULINK仿真模型,说到只要顶到了50楼我就发我的其他资料,为了不食言,更为了回报论坛,我也贡献我的一点点力量,现将我学习过程中做的仿真模型以及PPT共享,希望能够对大家有用。我今天要共享的资料有:      1.基于恒PQ理论的LCL并网控制策略模型及PPT       说明:模型用MATLAB2009b做的,现在还有点不清楚的地方,就是有功和无功的给定只能一个为正一个为负时才能跟上,如果同时为正或者为负的话,系统是发散的,希望能够与高手一起讨论一下。      2.基于瞬时功率理论的APF研究      说明:这个我就不多说了,链接为:https://www.ilovematlab.cn/thread-103671-1-1.html,在这个帖子中,我发的模型中还不善,很多网友都谈到里面直流侧的电压是没有控制的,今天我把整的模型共享,我花了半个月把直流侧电压控住了(当时我很兴奋,呵呵),笔记的话到链接的网址中下载。我只希望大家能够尊重我的劳动成果,尊重知识产权,你可以拿去做研究,但希望你们不要全照抄我的,需使用的话请联系我!      3.晶闸管整流逆变对比仿真模型      说明:在一个模型里包含整流和逆变,版本:MATLAB2008a。我在学习《现代电力电子》时,对晶闸管逆变很是不理解,自己做了一个仿真模型加深理解。      4.单相不可控桥整流功率因数校正(PFC)仿真      说明:单相不可控桥整流功率因数校正,版本:MATLAB2008a。同样是在在学习《现代电力电子》时做的。      最后,如果大家觉得这些对你有用的话,还请你们以你们的实际行动支持我,多多回复,多多给我评(帖子下面有个评的红心),希望能够与各位一起讨论交流!
原创LCL并网APF直流侧可控PFC晶闸管整流逆变-Rectifier_Inventor.mdl 2010年过去了,2011年来了,首先向各位说声新年好,希望各位在新的一年里能够工作顺利、事业有成!      在2010里,有成功也有失败,在我遇到困难的时候,有论坛里的各位好心人能够帮助我,真的非常感谢,论坛陪着我一起攻克困难!      曾经我在我发的一个帖子中:【原创】学习APF过程中的读书笔记和SIMULINK仿真模型,说到只要顶到了50楼我就发我的其他资料,为了不食言,更为了回报论坛,我也贡献我的一点点力量,现将我学习过程中做的仿真模型以及PPT共享,希望能够对大家有用。我今天要共享的资料有:      1.基于恒PQ理论的LCL并网控制策略模型及PPT       说明:模型用MATLAB2009b做的,现在还有点不清楚的地方,就是有功和无功的给定只能一个为正一个为负时才能跟上,如果同时为正或者为负的话,系统是发散的,希望能够与高手一起讨论一下。      2.基于瞬时功率理论的APF研究      说明:这个我就不多说了,链接为:https://www.ilovematlab.cn/thread-103671-1-1.html,在这个帖子中,我发的模型中还不善,很多网友都谈到里面直流侧的电压是没有控制的,今天我把整的模型共享,我花了半个月把直流侧电压控住了(当时我很兴奋,呵呵),笔记的话到链接的网址中下载。我只希望大家能够尊重我的劳动成果,尊重知识产权,你可以拿去做研究,但希望你们不要全照抄我的,需使用的话请联系我!      3.晶闸管整流逆变对比仿真模型      说明:在一个模型里包含整流和逆变,版本:MATLAB2008a。我在学习《现代电力电子》时,对晶闸管逆变很是不理解,自己做了一个仿真模型加深理解。      4.单相不可控桥整流功率因数校正(PFC)仿真      说明:单相不可控桥整流功率因数校正,版本:MATLAB2008a。同样是在在学习《现代电力电子》时做的。      最后,如果大家觉得这些对你有用的话,还请你们以你们的实际行动支持我,多多回复,多多给我评(帖子下面有个评的红心),希望能够与各位一起讨论交流!

1,183

社区成员

发帖
与我相关
我的任务
社区描述
Delphi Windows SDK/API
社区管理员
  • Windows SDK/API社区
加入社区
  • 近7日
  • 近30日
  • 至今
社区公告
暂无公告

试试用AI创作助手写篇文章吧