用APIHOOK屏幕取词的时候宋体会出现乱码(200分)

  • 主题发起人 主题发起人 devil_li
  • 开始时间 开始时间
D

devil_li

Unregistered / Unconfirmed
GUEST, unregistred user!
我用APIHOOK的方式写了一个屏幕取词的程序,但是当挂接的是unicode函数比如TextOutW的时候,传过来的参数Text:PWideChar,Text的字体如果是宋体(或者其他一些字体,如Arial)的时候Text是乱码,不知道有没有高手碰到过这个问题,如何解决?谢谢!
 
我以前见到过这方面的源代码!<br>网上应该有,楼主可以参考人家的代码<br>
 
WideCharToString
 
没有用的,我用的就是WideCharToString<br>一样是乱码<br>关键是如果是Fixedsys,MS Sans Serif这些字体就不是乱码!<br>别人的程序也参考了很多,都是用这种方法实现的,都会有乱码!!
 
我的程序大概是这样的:<br>TGlobalData = record<br>&nbsp; &nbsp;...<br>&nbsp; &nbsp;Buffer : array [0..1023] of Char;<br>&nbsp; &nbsp;...<br>&nbsp;end;<br><br><br>function NewExtTextOutW(DC: HDC; X, Y: Integer; Options: Longint;<br>&nbsp; Rect: PRect; Str: PWideChar; Count: Longint; Dx: PInteger): BOOL; stdcall;<br>begin<br>&nbsp; UnInstallAPIHOOK;<br>&nbsp; ...<br>&nbsp; &nbsp; if inRange() then<br>&nbsp; &nbsp; begin<br>&nbsp; &nbsp; &nbsp; StrCopy(GlobalData.Buffer, PChar(WideCharToString(Str)));<br>&nbsp; &nbsp; &nbsp; SendMessage(GlobalData^.CallBackHandle, idMsg, 0, 0);<br>&nbsp; &nbsp; end; &nbsp;<br>&nbsp; ...<br>&nbsp; Result := ExtTextOutW(DC, X, Y, Options, Rect, Str, Count, Dx);<br>&nbsp; InstallAPIHOOK;<br>end;
 
不会吧·
 
比如TButton,TBitButton,TRadioBox.设置字体为宋体,CharSet GB2312<br>返回来的就是乱码,比如这样一段二进制码:<br>24 11 6B 30 B7 09 0B 00 03 00 2C 00 0C 00 21 00 21 00
 
怀疑你把TextOutA也用NewTextOutW替换了
 
乱码让人很烦啦!!
 
http://www.delphibbs.com/delphibbs/dispq.asp?lid=1123349
 
我也对屏幕取词技术有点研究。<br>低价转让win98,win2k,winxp 屏幕取词原代码,如果感兴趣,请联系我 linsen633@sohu.com
 
低价转让win98,win2k,winxp 屏幕取词原代码,如果感兴趣,请联系我 linsen633@sohu.com &nbsp;
 
后退
顶部