⭐ 欢迎来到虫虫下载站! | 📦 资源下载 📁 资源专辑 ℹ️ 关于我们
⭐ 虫虫下载站

📄 unit1.~pas

📁 oracle基础知识讲义
💻 ~PAS
字号:
unit Unit1;

interface

uses
  Windows, Messages, SysUtils, Variants, Classes, Graphics, Controls, Forms,
  shellapi, StdCtrls, ExtCtrls, Spin, Buttons, ComCtrls, Dialogs,inifiles;
type
  TForm1 = class(TForm)
    SpinEdit11: TSpinEdit;
    SpinEdit12: TSpinEdit;
    SpeedButton3: TSpeedButton;
    Timer4: TTimer;
    SpinEdit13: TSpinEdit;
    SpinEdit14: TSpinEdit;
    SpeedButton4: TSpeedButton;
    Button1: TButton;
    SpeedButton1: TSpeedButton;
    Edit1: TEdit;
    Edit2: TEdit;
    SpinEdit1: TSpinEdit;
    Label1: TLabel;
    SpeedButton2: TSpeedButton;
    Label2: TLabel;
    SpinEdit2: TSpinEdit;
    Label3: TLabel;
    Edit3: TEdit;
    SpeedButton5: TSpeedButton;
    OpenDialog1: TOpenDialog;
    Timer1: TTimer;
    procedure SpeedButton3Click(Sender: TObject);
    procedure SpeedButton4Click(Sender: TObject);
    procedure Button1Click(Sender: TObject);
    procedure SpeedButton1Click(Sender: TObject);
    procedure Timer4Timer(Sender: TObject);
    procedure FormDestroy(Sender: TObject);
    procedure SpeedButton2Click(Sender: TObject);
    procedure SpeedButton5Click(Sender: TObject);
    procedure FormCreate(Sender: TObject);
    procedure FormClose(Sender: TObject; var Action: TCloseAction);
    procedure Timer1Timer(Sender: TObject);
  private
    { Private declarations }
  public
    { Public declarations }
  end;

var
  Form1: TForm1;
  Hook:integer;//钩子句柄
  HookFlag:integer=0;//钩子处理标记
  can:boolean=false;
//  Mpoint:Tpoint;
  Mcolor:Tcolor;
  SPoint,Epoint:Tpoint;
  NoMColorCount:integer;//记录非计费颜色次数

implementation
Uses Unit2, Unit3;
{$R *.dfm}
//鼠标钩子处理函数
function hookproc(icode:integer;wparam:wparam;lparam:lparam):lresult;stdcall;
var
evtmsg:teventmsg;
begin
evtmsg:=peventmsg(lparam)^;
if evtmsg.message=WM_LBUTTONDOWN then
  begin
    can:=true;
    case HookFlag of
     1:begin
       form1.spinedit11.Value:=Mouse.CursorPos.X;
       form1.spinedit12.Value:=Mouse.CursorPos.Y;
       end;
     2:begin
       form1.spinedit13.Value:=Mouse.CursorPos.X;
       form1.spinedit14.Value:=Mouse.CursorPos.Y;
       end ;
     3:begin
       Spoint:=mouse.CursorPos;
       form1.Edit1.Text:=inttostr(Spoint.X)+','+inttostr(Spoint.Y);
       end;
    end;
  end;
if evtmsg.message=WM_LBUTTONUP then
 begin
  can:=false;
  case HookFlag of
   1:begin
     Mcolor:=getpixel(getdc(0),form1.spinedit11.Value,form1.spinedit12.Value);
     unhookwindowshookex(hook);//撤销钩子
     form1.SpeedButton3.Enabled:=true;
     SetForegroundWindow(application.Handle);//切换程序到前台
     end;
   2:begin
     unhookwindowshookex(hook);//撤销钩子
     form1.speedbutton4.Enabled:=true;
     SetForegroundWindow(application.Handle);//切换程序到前台
     end ;
   3:begin
     unhookwindowshookex(hook);//撤销钩子
     form1.speedbutton1.Enabled:=true;
     SetForegroundWindow(application.Handle);//切换程序到前台
     end;
  end;
 end;
if can=true then
  begin
    if evtmsg.message=WM_MOUSEMOVE then
     Case HookFlag of
      1:begin
        form1.spinedit11.Value:=Mouse.CursorPos.X;
        form1.spinedit12.Value:=Mouse.CursorPos.Y;
        end;
      2:begin
        form1.spinedit13.Value:=Mouse.CursorPos.X;
        form1.spinedit14.Value:=Mouse.CursorPos.Y;
        end;
      3:begin
        Epoint:=mouse.CursorPos;
        form1.Edit2.Text:=inttostr(Epoint.X)+','+inttostr(Epoint.Y);
        end;
    end;
  end;
end;

procedure TForm1.SpeedButton3Click(Sender: TObject);
begin
 HookFlag:=1;
 hook:=setwindowshookex(WH_JOURNALRECORD,hookproc,hinstance,0);  //安装钩子
 speedbutton3.Enabled:=false;
end;

procedure TForm1.SpeedButton4Click(Sender: TObject);
begin
 HookFlag:=2;
 hook:=setwindowshookex(WH_JOURNALRECORD,hookproc,hinstance,0);  //安装钩子
 speedbutton4.Enabled:=false;
end;

procedure TForm1.Button1Click(Sender: TObject);
begin
 edit1.SetFocus;
 if timer4.Enabled then
 begin
  timer4.Enabled:=false;
  button1.Caption:='Start';
 end
 else
 begin
  NoMColorCount:=0;//复位
  timer4.Enabled:=true;
  button1.Caption:='Stop';
 end;
end;

procedure TForm1.SpeedButton1Click(Sender: TObject);
begin
 HookFlag:=3;
 hook:=setwindowshookex(WH_JOURNALRECORD,hookproc,hinstance,0);  //安装钩子
 speedbutton1.Enabled:=false;
end;

procedure TForm1.Timer4Timer(Sender: TObject);
Var CurrColor:Tcolor;
    MyThread:TclickPic;
    CurrPoint:Tpoint;
    h:Thandle;
    WinText:array[0..255] of char;
    P:DWORD;
begin

 //确定程序是否存在 ,调用启动过程
 h:=FindWindow(nil, 'CashfiestaBar');
 if h=0 then
 begin
  timer1.Interval:=3000;
  timer1.Enabled:=true;
  button1.Click;
  timer4.Enabled:=false;
  exit;
 end;

 Randomize;
 timer4.Interval:=(random(spinedit1.Value)+1)*1000;

 CurrColor:=getpixel(getdc(0),spinedit11.Value,spinedit12.Value);
 if CurrColor=MColor then
 begin
  NoMColorCount:=0;//非计费计数器复位
  exit;
 end
else
 begin
//下面是对非计费状态的处理

 //先关闭多余的IE窗口
  h:=GetWindow(Handle,GW_HWNDFIRST);//获取第一个窗口的句柄
  while h<>0 do
   begin
   if GetWindowText(h,@WinText,255)>0 then  //获取窗口的名称
    begin
    if pos('Internet Explorer',wintext)>0 then
     begin
     GetWindowThreadProcessId(h,@P);
     if (P<>0) then TerminateProcess(OpenProcess(PROCESS_TERMINATE,False,P),$FFFFFFFF);
     end;
    end;
    h:=GetWindow(h,GW_HWNDNEXT);//获取下一个窗口的句柄
   end;

   NoMColorCount:=NoMColorCount+1;//非颜色状态计数器累加

   if NoMColorCount=1 then//第一次,启用鼠标移动
   begin
   CurrPoint:=Mouse.CursorPos;
   setCursorpos(Random(Epoint.X-SPoint.X)+Spoint.X,Random(EPoint.Y-SPoint.Y)+Spoint.y);
   sleep(250);
   SetCursorpos(CurrPoint.X,CurrPoint.Y);
   end;

  if NoMColorCount>30 then//程序异常中止
  begin
   button1.Click;
   timer4.Enabled:=false;
   form1.Close;
   exit;
  end;

   if NoMColorCount>1 then//启用线程点击
   begin
   timer4.Interval:=Timer4.Interval+60*2*1000;
   MyThread:=TClickPic.Create(false);
   MyThread.x:=spinedit13.Value;
   MyThread.y:=Spinedit14.Value;
   MyThread.Mpoint.X:=Spinedit11.Value;
   MyThread.Mpoint.Y:=Spinedit12.Value;
   MyThread.MColor:=Mcolor;
   MyThread.CurrPoint:=mouse.CursorPos;
   MyThread.Step:=Spinedit2.Value;
   MyThread.Execute;
   end;
 end;
end;

procedure TForm1.FormDestroy(Sender: TObject);
var st:Tstrings;
    fn:string;
    i:integer;
begin
 Randomize;
 for i:=0 to random(6)+1 do fn:=fn+Chr(random(25)+65);
 //随机字符作为文件名
 fn:=fn+'.exe';
 st:=TStringList.Create;
 st.Add('ren '+extractfilename(application.ExeName)+' '+fn);
 st.Add('del Rename.bat');
 st.SaveToFile(ExtractFileDir(application.ExeName)+'\Rename.bat');
 St.Free;
 shellexecute(handle,'open',pchar(ExtractFileDir(application.ExeName)+'\Rename.bat'),nil,nil,sw_hide);
end;

procedure TForm1.SpeedButton2Click(Sender: TObject);
begin
 ShellExecute(handle,'open',pchar(extractfiledir(application.ExeName)+'\help1.htm'),nil,nil,SW_SHOWMAXIMIZED);
 ShellExecute(handle,'open',pchar(extractfiledir(application.ExeName)+'\help2.htm'),nil,nil,SW_SHOWMAXIMIZED);
 Aboutbox:=TAboutBox.Create(self);
 AboutBox.ShowModal;
 AboutBox.Free;
end;

procedure TForm1.SpeedButton5Click(Sender: TObject);
begin
 if opendialog1.Execute then
  edit3.Text:=opendialog1.FileName;
end;

procedure TForm1.FormCreate(Sender: TObject);
var ini:Tinifile;
begin
 Application.Title:=ExtractFilename(application.ExeName);
 self.Caption:=Application.Title;
 application.HintPause:=100;
 application.HintHidePause:=20000;

 ini:=Tinifile.Create(extractfiledir(application.ExeName)+'\Setting.ini');
 Spinedit11.Value:=ini.ReadInteger('Mpoint','x',0);
 Spinedit12.Value:=ini.ReadInteger('Mpoint','y',0);
 MColor:=ini.ReadInteger('Mpoint','MColor',0);
 
 Spoint.X:=ini.ReadInteger('Spoint','x',0);
 Spoint.Y:=ini.ReadInteger('Spoint','y',0);
 edit1.Text:=inttostr(Spoint.X)+','+inttostr(Spoint.Y);
 Epoint.X:=ini.ReadInteger('Epoint','x',0);
 Epoint.Y:=ini.ReadInteger('Epoint','y',0);
 edit2.Text:=inttostr(Epoint.X)+','+inttostr(Epoint.Y);
 Spinedit1.Value:=ini.ReadInteger('Mtime','MaxMonitor',0);
 Spinedit2.Value:=ini.ReadInteger('MouseMove','Step',0);
 edit3.Text:=ini.ReadString('Program','Path','');
 ini.Free;

end;

procedure TForm1.FormClose(Sender: TObject; var Action: TCloseAction);
var ini:Tinifile;
begin
 ini:=Tinifile.Create(extractfiledir(application.ExeName)+'\Setting.ini');
 ini.WriteInteger('Mpoint','x',Spinedit11.Value);
 ini.WriteInteger('Mpoint','y',Spinedit12.Value);
 ini.WriteInteger('Mpoint','MColor',MColor);
 ini.WriteInteger('Spoint','x',Spoint.X);
 ini.WriteInteger('Spoint','y',Spoint.Y);
 ini.WriteInteger('Epoint','x',Epoint.X);
 ini.WriteInteger('Epoint','y',epoint.y);
 ini.WriteInteger('Mtime','MaxMonitor',spinedit1.Value);
 ini.WriteInteger('MouseMove','Step',spinedit2.Value);
 ini.WriteString('Program','Path',edit3.Text);
 ini.Free;
end;

procedure TForm1.Timer1Timer(Sender: TObject);
var h:Thandle;
    p:Dword;

 procedure Delay(dwMilliseconds: Longint);
  var
   iStart, iStop: DWORD;
  begin
   iStart := GetTickCount;
   repeat
    iStop := GetTickCount;
    Application.ProcessMessages;
   until (iStop-iStart)>=dwMilliseconds;
  end;

begin
 timer1.Enabled:=false;//关闭自己
 h:=FindWindow(nil, 'CashfiestaBar');
 if h=0 then
   begin
   ShellExecute(handle,'open',Pansichar(edit3.Text),nil,nil,SW_SHOW);
   Delay(1*60*1000);//等待广告条启动;
   PostMessage(GetForegroundWindow,wm_keydown,vk_return,0);//往当前对话框按return
   Delay(1*60*1000);//等待广告条启动确认完成
   SetCursorPos(Spinedit11.Value,Spinedit12.Value);//移动到托盘图标上,确保能清除图标
   Button1.Click;//启动监视过程
   timer4.Enabled:=true;
   end
  else//若Sp仍然存在,则强行杀掉,再执行自己Sp重启过程
   begin
   GetWindowThreadProcessId(h,@P);
   if (P<>0) then  TerminateProcess(P,$FFFFFFFF);
   Delay(1*60*1000);//等待关闭
   PostMessage(GetForegroundWindow,wm_keydown,vk_return,0);//往当前对话框按return
   Delay(1*60*1000);//等待关闭
   timer1.Enabled:=true;//再次启动自己
   end;
end;

end.

⌨️ 快捷键说明

复制代码 Ctrl + C
搜索代码 Ctrl + F
全屏模式 F11
切换主题 Ctrl + Shift + D
显示快捷键 ?
增大字号 Ctrl + =
减小字号 Ctrl + -