C#屏幕定点取词

panda3033 2008-03-10 10:05:39
C#屏幕定点取词
初学c#,我想用c#实现屏幕的某一固定坐标点的取词
在网上搜索后(http://www.cnblogs.com/tuyile006/archive/2006/12/05/582381.html)可以用金山词霸中的XdictGrb.dll组件取鼠标下的词语,可我希望能实现固定坐标点下的取词,用nhw32.dll后一直不能成功,

1. DWORD WINAPI BL_SetFlag32(UINT nFlag,
HWND hNotifyWnd,
int MouseX,
int MouseY)
功能:
启动或停止取词。
参数:
nFlag
[输入] 指定下列值之一:
GETWORD_ENABLE: 开始取词。在重画被取单词区域前设置此标志。nhw32.dll是通过
重画单词区域,截取TextOutA, TextOutW, ExtTextOutA,
ExtTextOutW等Windows API函数的参数来取词的。
GETWORD_DISABLE: 停止取词。
hNotifyWnd
[输入] 通知窗口句柄。当取到此时,向该通知窗口发送一登记消息:GWMSG_GETWORDOK。(难道还要用到消息???)
MouseX
[输入] 指定取词点的X坐标。
MouseY
[输入] 指定取词点的Y坐标。


希望能有大大给指点指点
...全文
1003 45 打赏 收藏 转发到动态 举报
写回复
用AI写文章
45 条回复
切换为时间正序
请发表友善的回复…
发表回复
lxinjing2009 2010-03-12
  • 打赏
  • 举报
回复
请问老大:是否能提供一个ndw32.dll呢?多谢。
panda3033 2008-03-17
  • 打赏
  • 举报
回复
结贴了 虽然还是取不到词
谢谢shrinerain 及大家
panda3033 2008-03-14
  • 打赏
  • 举报
回复
还是取不词
还有没有帮帮忙的啊
xuxiaoman0430 2008-03-13
  • 打赏
  • 举报
回复
高薪急招聘PHP软件开发工程师 2人(一个口语必须好,另一个口语其次但是读写要好)

•正规院校计算机专业本科以上学历;大学英语4级以上;
•精通PHP, AJAX;
•具有计算机PHP,AJAX软件2年以上开发经验,1年以上欧美外包项目开发工作经验;
•良好的英语口语和书面沟通技能;
•具备团队合作精神、抗压能力强、工作有激情;


请发送简历至 yuping.chen@egensource.com,欢迎随时与我联系——陈小姐
地点:西直门附近
电话:82355443-18
MSN:deepblue419@hotmail.com
E-mail:yuping.chen@egensource.com
公司网址:http://www.egensource.com
panda3033 2008-03-13
  • 打赏
  • 举报
回复
我手上现在都有三个版本的nhm32.dll
一个196k 一个128k 还有一个44k
现在我用128k的这个来取的时候
rect不再是0了
不过还是取不到值

sb一直是空的
skittysmile 2008-03-13
  • 打赏
  • 举报
回复
感谢搂主!
panda3033 2008-03-13
  • 打赏
  • 举报
回复
我跟踪后发现每次一运行 BL_GetText32(sb, bufSize, ref rect);
原先的rect的height width 等全部都被修改成了 0
还是取不到值
不会是dll的问题吧

可以的话能不能发你的dll我试一下
shaohj0621@163.com

xiexie
shrinerain 2008-03-13
  • 打赏
  • 举报
回复
你就用我上面那段代码就可以了.

后面的100,100表示你要取词的坐标点.
BL_SetFlag32(1001, IntPtr.Zero, 100, 100);

RECT初始化大小是无所谓的, 这个是在dll会修改.

你首先确定某个坐标点有词, 然后在调试模式下, 一步一步跟, 别太快.

另外, 最好把鼠标放在那个点上不要动.
panda3033 2008-03-13
  • 打赏
  • 举报
回复
[Quote=引用 34 楼 shrinerain 的回复:]
当然是C#, 你这个问题不是C#屏幕取词么?

如果你想用C++, 那其实更方便, 别人的源代码本来就是C++的
[/Quote]

能给我帖一下你的代码么? 我连1秒以后都取不到词
有没有用到消息啊?
非常感谢
wanabe 2008-03-13
  • 打赏
  • 举报
回复
有没有更好的DLL
shrinerain 2008-03-12
  • 打赏
  • 举报
回复
这样是不行的. 这个dll性能很差.

就算是在C++源代码中, 作者也是等待0.2秒以后才去检查缓冲区有没有词.

再加上用C#去调用这个Dll, 由于这个dll涉及到系统Hook, 因此性能和稳定性都非常差.

在我的机器上, 基本上要1秒以后再去检查缓冲区, 才有词, 而且不是每次都能取到.

你那样马上检查, 注定是取不到词的.

需要与系统底层交互的东西, C#不适合, 这是事实.

另外这个dll是开源的, 有问题你首先应该尝试自己阅读它的代码, 看它做了什么.
shrinerain 2008-03-12
  • 打赏
  • 举报
回复
C#据我所知没有这方面好的方法.
panda3033 2008-03-12
  • 打赏
  • 举报
回复
谢谢楼上的

//在我的机器上, 基本上要1秒以后再去检查缓冲区, 才有词, 而且不是每次都能取到.
你是用的c#来调用这个dll还是用的其他语言啊 ?

有没有其他好的办法能实现屏幕定点的取词(useing c#) ?

感谢
shrinerain 2008-03-12
  • 打赏
  • 举报
回复
当然是C#, 你这个问题不是C#屏幕取词么?

如果你想用C++, 那其实更方便, 别人的源代码本来就是C++的
panda3033 2008-03-12
  • 打赏
  • 举报
回复
[Quote=引用 27 楼 shrinerain 的回复:]
这样是不行的. 这个dll性能很差.

就算是在C++源代码中, 作者也是等待0.2秒以后才去检查缓冲区有没有词.

再加上用C#去调用这个Dll, 由于这个dll涉及到系统Hook, 因此性能和稳定性都非常差.

在我的机器上, 基本上要1秒以后再去检查缓冲区, 才有词, 而且不是每次都能取到.

你那样马上检查, 注定是取不到词的.

需要与系统底层交互的东西, C#不适合, 这是事实.

另外这个dll是开源的, 有问题你首先应该尝试自己阅读它…
[/Quote]

请问你的“1秒以后再去检查缓冲区, 才有词,” 用的是c# 还是c++或其他的 ?
niming520 2008-03-12
  • 打赏
  • 举报
回复
也曾找過這個,跟系統鉤子有關,鉤子也分3種啊,一般是C++的程序多,C#網上找到過,不過本人水平底沒調試出來.﹕)
期待中﹗~~
stg609 2008-03-12
  • 打赏
  • 举报
回复
路过,学习!!
panda3033 2008-03-12
  • 打赏
  • 举报
回复
非常感谢 shrinerain
firein 2008-03-11
  • 打赏
  • 举报
回复
学习
octverve 2008-03-11
  • 打赏
  • 举报
回复
@_@
加载更多回复(24)

110,538

社区成员

发帖
与我相关
我的任务
社区描述
.NET技术 C#
社区管理员
  • C#
  • Web++
  • by_封爱
加入社区
  • 近7日
  • 近30日
  • 至今
社区公告

让您成为最强悍的C#开发者

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