转至繁体中文版     | 网站首页 | 图文教程 | 资源下载 | 站长博客 | 图片素材 | 武汉seo | 武汉网站优化 | 
最新公告:     敏韬网|教学资源学习资料永久免费分享站!  [mintao  2008年9月2日]        
您现在的位置: 学习笔记 >> 图文教程 >> 软件开发 >> Delphi程序 >> 正文
攻破“金山词霸”的技术堡垒!         ★★★★

攻破“金山词霸”的技术堡垒!

作者:闵涛 文章来源:闵涛的学习笔记 点击数:4744 更新时间:2009/4/23 18:44:47
; len: Integer;
                        TabCount: Integer; TabPositions: PInteger; TabOrigin: Integer): Integer; stdcall;
Var s: AnsiString;
begin
  try
    if Len<0 then Len:=strlen(text);
    if Len>0 then begin
      SetLength(s,len);
      FillChar(s[1],len+1,0);
      Move(text^,s[1],len);
      if @ConvertTextFunction<>nil then
        s:=ConvertTextFunction(s);
      if @OldTabbedTextOutA<>nil then

Result:=OldTabbedTextOutA(hdc,x,y,PAnsiChar(s),length(s),TabCount,TabPositions,TabOrigin)

      else Result:=0;
    end else
Result:=OldTabbedTextOutA(hdc,x,y,text,0,TabCount,TabPositions,TabOrigin);

  except
    Result:=0;
  end;
end;

function NewTabbedTextOutW(hdc: HDC; x,y: Integer; text: PWideChar; len: Integer;
                        TabCount: Integer; TabPositions: PInteger; TabOrigin: Integer): Integer; stdcall;
Var s: WideString;
begin
  try
    if Len<0 then Len:=strlenW(text);
    if Len>0 then begin
      SetLength(s,len);
      FillChar(s[1],len*2+2,0);
      Move(text^,s[1],len*2);
      if @ConvertTextFunction<>nil then
        s:=ConvertTextFunction(s);
      if @OldTabbedTextOutW<>nil then
Result:=OldTabbedTextOutW(hdc,x,y,PWideChar(s),length(s),TabCount,TabPositions,TabOrigin)

      else Result:=0;
    end else
Result:=OldTabbedTextOutW(hdc,x,y,text,0,TabCount,TabPositions,TabOrigin);

  except
    Result:=0;
  end;
end;

function NewPolyTextOutA(hdc: HDC; pptxt: PPOLYTEXTA; count: Integer): BOOL; stdcall;
Var s: String; i: Integer; ppnew: PPOLYTEXTA;
begin
  ppnew:=nil;
  try
    Result:=False;
    if Count<0 then exit;
    if Count=0 then begin Result:=True; exit; end;
    GetMem(ppnew,count*sizeof(TPOLYTEXTA));
    For i:=1 to count do begin
      ppnew^:=pptxt^;
      if ppnew^.n<0 then ppnew^.n:=strlen(ppnew^.PAnsiChar);
      if ppnew^.n>0 then begin
        SetLength(s,ppnew^.n);
        FillChar(s[1],ppnew^.n+1,0);
        Move(ppnew^.PAnsiChar,s[1],ppnew^.n);
        if @ConvertTextFunction<>nil then
          s:=ConvertTextFunction(s);
        ppnew^.PAnsiChar:=PAnsiChar(s);
        ppnew^.n:=length(s);
        if @OldPolyTextOutA<>nil then
          Result:=OldPolyTextOutA(hdc,ppnew,1);
      end;
      Inc(pptxt);
    end;
  except
    Result:=False;
  end;
  if ppnew<>nil then FreeMem(ppnew);
end;

function NewPolyTextOutW(hdc: HDC; pptxt: PPOLYTEXTW; count: Integer): BOOL; stdcall;
begin
  Result:=OldPolyTextOutW(hdc,pptxt,count);
end;

function NewGetTextExtentExPointA(hdc: HDC; text: PAnsiChar; len: Integer;
        maxExtent: Integer; Fit: PInteger; Dx: PInteger; Size: Pointer): BOOL; stdcall;
Var s: AnsiString;
begin
  try
    if Len<0 then Len:=strlen(text);
    if Len>0 then begin
      SetLength(s,len);
      FillChar(s[1],len+1,0);
      Move(text^,s[1],len);
      if @ConvertTextFunction<>nil then
        s:=ConvertTextFunction(s);
      if @OldGetTextExtentExPointA<>nil then

Result:=OldGetTextExtentExPointA(hdc,PAnsiChar(s),length(s),maxExtent,Fit,Dx,Size)

      else Result:=False;
    end else
Result:=OldGetTextExtentExPointA(hdc,text,0,maxExtent,Fit,Dx,Size);  except
    Result:=False;
  end;
end;

Function NewGetTextExtentExPointW(hdc: HDC; text: PWideChar; len: Integer;
  maxExtent: Integer; Fit: PInteger; Dx: PInteger; Size: Pointer): BOOL; stdcall;
Var s: WideString;
begin
  try
    if Len<0 then Len:=strlenW(text);
    if Len>0 then begin
      SetLength(s,len);
      FillChar(s[1],len*2+2,0);
      Move(text^,s[1],len);
      if @ConvertTextFunction<>nil then
        s:=ConvertTextFunction(s);
      if @OldGetTextExtentExPointW<>nil then

Result:=OldGetTextExtentExPointW(hdc,PWideChar(s),length(s),maxExtent,Fit,Dx,Size)

      else Result:=False;
    end else
Result:=OldGetTextExtentExPointW(hdc,text,0,maxExtent,Fit,Dx,Size);  except
    Result:=False;
  end;
end;

function NewGetTextExtentPoint32A(hdc: HDC; text: PAnsiChar; len: Integer; Size: Pointer): BOOL; stdcall;
Var s: AnsiString;
begin
  try
    if Len<0 then Len:=strlen(text);
    if Len>0 then begin
      SetLength(s,len);
      FillChar(s[1],len+1,0);
      Move(text^,s[1],len);
      if @ConvertTextFunction<>nil then
        s:=ConvertTextFunction(s);
      if @OldGetTextExtentPoint32A<>nil then

Result:=OldGetTextExtentPoint32A(hdc,PAnsiChar(s),length(s),Size)      else Result:=False;
    end else Result:=OldGetTextExtentPoint32A(hdc,text,0,Size);
  except
    Result:=False;
  end;
end;

function NewGetTextExtentPoint32W(hdc: HDC; text: PWideChar; len: Integer; Size: Pointer): BOOL; stdcall;
Var s: WideString;
begin
  try
    if Len<0 then Len:=strlenW(text);
    if Len>0 then begin
      SetLength(s,len);
      FillChar(s[1],len*2+2,0);
      Move(text^,s[1],len);
      if @ConvertTextFunction<>nil then
        s:=ConvertTextFunction(s);
      if @OldGetTextExtentPoint32W<>nil then

Result:=OldGetTextExtentPoint32W(hdc,PWideChar(s),length(s),Size)      else Result:=False;
    end else Result:=OldGetTextExtentPoint32W(hdc,text,0,Size);
  except
    Result:=False;
  end;
end;
function NewGetTextExtentPointA(hdc: HDC; text: PAnsiChar; len: Integer; Size: Pointer): BOOL; stdcall;
Var s: AnsiString;
begin
  try
    if Len<0 then Len:=strlen(text);
    if Len>0 then begin
      SetLength(s,len);
      FillChar(s[1],len+1,0);
      Move(text^,s[1],len);
      if @ConvertTextFunction<>nil then
        s:=ConvertTextFunction(s);
      if @OldGetTextExtentPointA<>nil then
        Result:=OldGetTextExtentPointA(hdc,PAnsiChar(s),length(s),Size)      else Result:=False;
    end else Result:=OldGetTextExtentPointA(hdc,text,0,Size);
  except
    Result:=False;
  end;
end;


function NewGetTextExtentPointW(hdc: HDC; text: PWideChar; len: Integer; Size: Pointer): BOOL; stdcall;
Var s: WideString;
begin
  try
    if Len<0 then Len:=strlenW(text);
    if Len>0 then begin
      SetLength(s,len);
      FillChar(s[1],len*2+2,0);
      Move(text^,s[1],len);
      if @ConvertTextFunction<>nil then
        s:=ConvertTextFunction(s);
      if @OldGetTextExtentPoint32W<>nil then
        Result:=OldGetTextExtentPointW(hdc,PWideChar(s),length(s),Size)      else Result:=False;
    end else Result:=OldGetTextExtentPointW(hdc,text,0,Size);
  except
    Result:=False;
  end;
end;

上一页  [1] [2] [3] [4] [5] [6]  下一页


没有相关教程
教程录入:mintao    责任编辑:mintao 
  • 上一篇教程:

  • 下一篇教程:
  • 【字体: 】【发表评论】【加入收藏】【告诉好友】【打印此文】【关闭窗口
      注:本站部分文章源于互联网,版权归原作者所有!如有侵权,请原作者与本站联系,本站将立即删除! 本站文章除特别注明外均可转载,但需注明出处! [MinTao学以致用网]
      网友评论:(只显示最新10条。评论内容只代表网友观点,与本站立场无关!)

    同类栏目
    · C语言系列  · VB.NET程序
    · JAVA开发  · Delphi程序
    · 脚本语言
    更多内容
    热门推荐 更多内容
  • 没有教程
  • 赞助链接
    更多内容
    闵涛博文 更多关于武汉SEO的内容
    500 - 内部服务器错误。

    500 - 内部服务器错误。

    您查找的资源存在问题,因而无法显示。

    | 设为首页 |加入收藏 | 联系站长 | 友情链接 | 版权申明 | 广告服务
    MinTao学以致用网

    Copyright @ 2007-2012 敏韬网(敏而好学,文韬武略--MinTao.Net)(学习笔记) Inc All Rights Reserved.
    闵涛 投放广告、内容合作请Q我! E_mail:admin@mintao.net(欢迎提供学习资源)

    站长:MinTao ICP备案号:鄂ICP备11006601号-18

    闵涛站盟:医药大全-武穴网A打造BCD……
    咸宁网络警察报警平台