博客
关于我
强烈建议你试试无所不能的chatGPT,快点击我
非QQ会员突破会员限制进行QQ表情编辑
阅读量:4149 次
发布时间:2019-05-25

本文共 6027 字,大约阅读时间需要 20 分钟。

 好象Delphi版现在是越来越少的人气了啊!郁闷的紧张啊!都没人来看哈,莫非现在都处在高端层面?

得想个法子来提升一下人气。怎么提呢?就从QQ开刀吧!哈哈。

  最新版的QQ出来了一个新的特性,就是可以编辑QQ表情,向其中添加一些自己要说的话语。

但是这个特性好象需要开通会员吧!想想腾讯的策划部到是会抓商机呢。下面我将说说怎样使用非会员来使用QQ表情的编辑工具呢。

  我们打开QQ表情编辑的那个对话框,可以看出,他根本不会触发任何的网络的消息出去! 只是在最开始打开的时候会判断一下当前

用户是否为会员,如果不是的话,那么很多项目则不可用,我们可以很轻易的想到一个API函数EnableWindow函数可以解除那些Enable

为false的控件(只要知道他的消息句柄则可)。现在我们先假定一下,QQ表情编辑在编辑好了之后,用户点完成不会向腾讯服务器发送

询问的(想想他应该不会抠门到这个程度吧!搞个编辑也要发个会员验证),先用Spy++一下,可以轻易的找到那些Enable为false的消息句柄,那 么现在就好办了,直接使用enableWindow(Handle),看一下则解除禁止了。很简单。然后测试一下效果,果然可以。呵呵。那么我们只用写个 代码来找句柄,然后在Enable他,则完了。

{代码中使用了Raize控件包,如果有兴趣的话,自己写一个HOOK挂到QQ进程,这样就不用每次打开都去点一下解除禁止了。}

代码如下:

 

DelphiCode:
unit Unit1;interfaceuses  Windows, Messages, SysUtils, Variants, Classes, Graphics, Controls, Forms,  Dialogs, StdCtrls, RzCommon,RzLabel, RzButton, ExtCtrls, RzPanel;Const  WM_DESTROYPN = WM_USER + 100;type  TRzPanel = Class(RzPanel.TRzPanel)  protected    Procedure WndProc(Var Msg: TMessage);override;  public    Constructor Create(AOwner: TComponent);override;  end;  TForm1 = class(TForm)    RzLabel1: TRzLabel;    btn1: TRzButton;    procedure btn1Click(Sender: TObject);    procedure FormClose(Sender: TObject; var Action: TCloseAction);  private    { Private declarations }    BegPos: TPoint;    EdtHandle: THandle;    Pn: TRzPanel;    procedure DestroyPn(Var Msg: TMessage);message WM_DESTROYPN;  public    { Public declarations }  end;var  Form1: TForm1;implementationvar  HsFree: Boolean=false;  HsJieChu: boolean=false;{$R *.dfm}procedure SetControlOwner(Component: TComponent;NewOwner: TComponent);var  tempOwner: ^integer;begin   tempOwner := @(integer(Component.Owner));   tempOwner^ := integer(NewOwner);end;procedure EnabledQQEdit;  procedure BlHandle(ParentHandle: THandle);  var    backHwnd,tempHwnd:hWnd;  begin    backHwnd:=Getwindow(ParentHandle,GW_CHILD);    while backHwnd<>0 do    begin      EnableWindow(backHwnd,true);      tempHwnd := backHwnd;      BlHandle(tempHwnd);      backhwnd:=Getwindow(backhwnd,GW_HWNDNEXT);    end;  end;var  FrmHandle: THandle;begin  FrmHandle := FindWindow('#32770','编辑涂鸦表情');  if FrmHandle <> 0 then  begin    SendMessage(FrmHandle,wm_settext,0,integer(Pchar('不得闲QQ表情编辑解禁!作者:不得闲!QQ: 75492895')));    Application.MessageBox('QQ表情编辑工具解除禁止成功!','消息',64);    SetForegroundWindow(FrmHandle);    BlHandle(FrmHandle);  end  else    Application.MessageBox('您没有打开QQ表情编辑工具!','消息',64);end;procedure EnabledQQEdit1;var  FrmHandle,ModHandle: THandle;  rec: TRect;  Pn: TRzPanel;  OldWidth: integer;  procedure BlHandle(ParentHandle: THandle);  var    backHwnd,tempHwnd:hWnd;  begin    backHwnd:=Getwindow(ParentHandle,GW_CHILD);    while backHwnd<>0 do    begin      EnableWindow(backHwnd,true);      tempHwnd := backHwnd;      BlHandle(tempHwnd);      backhwnd:=Getwindow(backhwnd,GW_HWNDNEXT);    end;  end;begin  FrmHandle := FindWindow('#32770','编辑涂鸦表情');  if (FrmHandle <> 0) and (not HsJieChu) then  begin    SendMessage(FrmHandle,wm_settext,0,integer(Pchar('不得闲QQ表情编辑解禁!作者:不得闲!QQ: 75492895')));    Form1.EdtHandle := FrmHandle;    GetWindowRect(FrmHandle,Rec);    Form1.BegPos.X := Rec.Right - Rec.Left;    Form1.BegPos.Y := Rec.Bottom - Rec.Top;    OldWidth := Rec.Right - Rec.Left + 2;    SetWindowPos(FrmHandle,0,0,0,48 + OldWidth,rec.Bottom - rec.Top,6);    Pn := TRzPanel.Create(nil);    HsFree := false;    Pn.Parent := Form1;    Form1.Pn := Pn;    Pn.Top :=  25;    SetParent(Pn.Handle,FrmHandle);    SetControlOwner(Pn,Pn.Parent);    FrmHandle := FindWindowEx(FrmHandle,0,'#32770','');    if FrmHandle <> 0 then    begin      GetWindowRect(FrmHandle,Rec);      Pn.Left := OldWidth - 10;      Pn.Height := rec.Bottom - rec.Top - 34;      Pn.Width := 55;      SetWindowPos(FrmHandle,0,0,0,OldWidth-2,rec.Bottom - rec.Top,6);      ModHandle := FindWindowEx(FrmHandle,0,'Edit','');      if ModHandle <> 0 then        EnableWindow(ModHandle,true);      ModHandle := FindWindowEx(FrmHandle,0,'Static','');      if ModHandle <> 0 then        EnableWindow(ModHandle,True);      ModHandle := FindWindowEx(FrmHandle,0,'Button','完成');      if ModHandle <> 0 then        EnableWindow(ModHandle,true);      ModHandle := FindWindowEx(FrmHandle,0,'Static','您还不是会员,开通QQ会员即可使用');      if ModHandle <> 0 then        SetWindowText(ModHandle,'不得闲QQ表情编辑解禁工具1.0');      Application.MessageBox('QQ表情编辑工具解除禁止成功!','消息',64);      SetForegroundWindow(FrmHandle);      HsJieChu := true;    end;  end;end;procedure TForm1.btn1Click(Sender: TObject);begin  EnabledQQEdit1end;procedure TForm1.DestroyPn(var Msg: TMessage);begin  pn := TRzPanel(Msg.WParam);  if not HsFree then  begin    HsFree := true;    HsJieChu := false;    FreeAndNil(pn);  end;end;procedure TForm1.FormClose(Sender: TObject; var Action: TCloseAction);begin  if not HsFree then  begin    HsFree := true;    Pn.Free;    SetWindowPos(EdtHandle,0,0,0,BegPos.X,BegPos.Y,6);  end;end;{ TRzPanel }constructor TRzPanel.Create(AOwner: TComponent);var  Rz1,Rz2: TRzLabel;begin  inherited Create(AOwner);  HsFree := false;  Rz1 := TRzLabel.Create(self);  Rz1.Parent := self;  Rz1.Caption :='欢'#13#10'迎'#13#10'使'#13#10'用'#13#10'QQ'#13#10'表'#13#10'情'#13#10'编 '#13#10'辑'#13#10'禁'#13#10'止'#13#10'解'#13#10'除'#13#10'工'#13#10'具 '#13#10'V1';  Rz1.Align := AlTOp;  Rz1.AutoSize := false;  Rz1.Alignment := taCenter;  Rz1.TextStyle := tsRaised;  Rz1.Height := 196;  Rz1.Font.Name := '宋体';  Rz1.Font.Charset := GB2312_CHARSET;  Rz1.Font.Size := 9;  Rz1.Transparent := true;  Rz1.Font.Color := clMaroon;  Rz1.Font.Style := [fsbold];  Width := 57;  Rz2 := TRzLabel.Create(self);  Rz2.Parent := self;  Rz2.Align := AlBottom;  Rz2.AutoSize := false;  Rz2.Caption := '作者:'#13#10' 不得闲'#13#10'QQ:'#13#10'75492895';  Rz2.Height := 57;  Rz2.Font.Assign(Rz1.Font);  Rz2.TextStyle := tsRaised;  Rz2.Transparent := true;  VisualStyle := vsGradient;  GradientColorStyle := gcsCustom;  GradientColorStart := $00FFAA55;  GradientColorStop := $00FFAA55;  BorderOuter := fsNone;end;procedure TRzPanel.WndProc(var Msg: TMessage);begin  if Msg.Msg = WM_DESTROY then    SendMessage(Form1.Handle,WM_DESTROYPN,integer(self),0);  Inheritedend;end.

转载地址:http://bhsti.baihongyu.com/

你可能感兴趣的文章
k8s web终端连接工具
查看>>
手绘VS码绘(一):静态图绘制(码绘使用P5.js)
查看>>
手绘VS码绘(二):动态图绘制(码绘使用Processing)
查看>>
基于P5.js的“绘画系统”
查看>>
《达芬奇的人生密码》观后感
查看>>
论文翻译:《一个包容性设计的具体例子:聋人导向可访问性》
查看>>
基于“分形”编写的交互应用
查看>>
《融入动画技术的交互应用》主题博文推荐
查看>>
链睿和家乐福合作推出下一代零售业隐私保护技术
查看>>
Unifrax宣布新建SiFAB™生产线
查看>>
艾默生纪念谷轮™在空调和制冷领域的百年创新成就
查看>>
NEXO代币持有者获得20,428,359.89美元股息
查看>>
Piper Sandler为EverArc收购Perimeter Solutions提供咨询服务
查看>>
RMRK筹集600万美元,用于在Polkadot上建立先进的NFT系统标准
查看>>
JavaSE_day14 集合中的Map集合_键值映射关系
查看>>
异常 Java学习Day_15
查看>>
Mysql初始化的命令
查看>>
MySQL关键字的些许问题
查看>>
浅谈HTML
查看>>
css基础
查看>>