首页
社区
课程
招聘
[求助]Delphi程序源代码做程序?
发表于: 2008-5-25 23:18 5550

[求助]Delphi程序源代码做程序?

2008-5-25 23:18
5550
找个Delphi程序源代码可不知道怎么用,请高手帮忙做程序谢谢了...
  以下给出这个Delphi小程序的源代码

//++++++++++++++++++++ 程序源代码开始 ++++++++++++++++++++++++++++++

unit Unit1;

interface

uses
     Windows, Messages, SysUtils, Variants, Classes, Graphics, Controls, Forms,
     Dialogs, StdCtrls, ExtCtrls, ComCtrls, TlHelp32, Registry;

type
     TForm1 = class(TForm)
         Button2: TButton;
         Button3: TButton;
         Timer1: TTimer;
         Label1: TLabel;
         Edit1: TEdit;
         Edit2: TEdit;
         Label2: TLabel;
         Label3: TLabel;
         Panel1: TPanel;
         Button1: TButton;
         Button4: TButton;
     Check: TCheckBox;
         procedure Timer1Timer(Sender: TObject);
         procedure Button2Click(Sender: TObject);
         procedure Button3Click(Sender: TObject);
         procedure FormCreate(Sender: TObject);
         procedure Button1Click(Sender: TObject);
         procedure FormKeyDown(Sender: TObject; var Key: Word;
             Shift: TShiftState);
         procedure FormCloseQuery(Sender: TObject; var CanClose: Boolean);
         procedure Button4Click(Sender: TObject);
     procedure CheckClick(Sender: TObject);
     private
         procedure MinAllWindows;
         procedure ToDblClick;
         procedure AutoRun(Flag: Boolean);
     public
         { Public declarations }
     end;

var
     Form1: TForm1;
     iTime: integer; //累计时间;
     s: string; //密码
     Locked: Boolean; //是否锁定
implementation

{$R *.dfm}

{ TForm1 }

function CheckTask(ExeFileName: string): Boolean; //检测XX进程是否存在函数
const
     PROCESS_TERMINATE = $0001;
var
     ContinueLoop: BOOL;
     FSnapshotHandle: THandle;
     FProcessEntry32: TProcessEntry32;
begin
     result := False;
     FSnapshotHandle := CreateToolhelp32Snapshot(TH32CS_SNAPPROCESS, 0);
     FProcessEntry32.dwSize := Sizeof(FProcessEntry32);
     ContinueLoop := Process32First(FSnapshotHandle, FProcessEntry32);
    while integer(ContinueLoop) <> 0 do begin
        if ((UpperCase(ExtractFileName(FProcessEntry32.szExeFile)) = UpperCase(ExeFileName))
            or (UpperCase(FProcessEntry32.szExeFile) = UpperCase(ExeFileName))) then
             result := True;
         ContinueLoop := Process32Next(FSnapshotHandle, FProcessEntry32);
     end;
end;

function KillTask(ExeFileName: string): integer; // 把XX进程结束掉的函数
const
     PROCESS_TERMINATE = $0001;
var
     ContinueLoop: Boolean;
     FSnapshotHandle: THandle;
     FProcessEntry32: TProcessEntry32;
begin
     result := 0;
     FSnapshotHandle := CreateToolhelp32Snapshot(TH32CS_SNAPPROCESS, 0);
     FProcessEntry32.dwSize := Sizeof(FProcessEntry32);
     ContinueLoop := Process32First(FSnapshotHandle, FProcessEntry32);
    while integer(ContinueLoop) <> 0 do begin
        if ((UpperCase(ExtractFileName(FProcessEntry32.szExeFile)) =
             UpperCase(ExeFileName)) or (UpperCase(FProcessEntry32.szExeFile) =
             UpperCase(ExeFileName))) then
             result := integer(TerminateProcess(
                 OpenProcess(PROCESS_TERMINATE,
                BOOL(0),
                 FProcessEntry32.th32ProcessID),
                 0));
         ContinueLoop := Process32Next(FSnapshotHandle, FProcessEntry32);
     end;
     CloseHandle(FSnapshotHandle);
end;

procedure TForm1.MinAllWindows; //最小化所有窗口的过程,有两招哦。
var h: HWnd;
begin
    //Form1.WindowState:=wsMinimized;
    // 第一招,检测当前所有可视窗口,逐一最小化。
     h := Handle;
    while h > 0 do begin
        if IsWindowVisible(h) then
             Postmessage(h, WM_SYSCOMMAND, SC_MINIMIZE, 0);
         h := GetnextWindow(h, GW_HWNDNEXT);
     end;

    //还有一招,直接给操作系统发送一个 Win + D 组合键,轻松搞定。

     keybd_event(91, MapVirtualKey(91, 0), 0, 0); //    win    键按下
     keybd_event(77, MapVirtualKey(77, 0), 0, 0); //    M    键按下
     keybd_event(77, MapVirtualKey(77, 0), KEYEVENTF_KEYUP, 0); //    M    键抬起
     keybd_event(91, MapVirtualKey(91, 0), KEYEVENTF_KEYUP, 0); //    win    键抬起
end;

procedure TForm1.ToDblClick;
begin
     SetCursorPos(strtoint(Edit1.Text), strtoint(Edit2.Text));
     mouse_event(MOUSEEVENTF_LEFTDOWN, 0, 0, 0, 0);
     mouse_event(MOUSEEVENTF_LEFTUP, 0, 0, 0, 0);
     mouse_event(MOUSEEVENTF_LEFTDOWN, 0, 0, 0, 0);
     mouse_event(MOUSEEVENTF_LEFTUP, 0, 0, 0, 0);
     SendMessage(Form1.Handle, WM_LBUTTONDBLCLK, 0, 0);
end;

procedure TForm1.Timer1Timer(Sender: TObject);
begin //计时器的步长为6秒触发一次,每分钟触发10次,

     iTime := iTime + 1; //每触发一次,iTime加1

    if not CheckTask('shua.exe') then begin // 没有检测到进程,则模拟双击。
         MinAllWindows; //最小化所有窗口
         sleep(2000);
         ToDblClick; //模拟双击
         sleep(4000);
     end;

    //每 XXX 分钟主动把进程结束,并重新运行,保证不出错。
    if (iTime >= 300) then begin             // 知道 300 是多长时间吧,自己算算
         KillTask('shua.exe'); //结束进程
         iTime := 0;
         sleep(2000);
     end;
     Panel1.Caption := '正在运行...';
end;

procedure TForm1.Button2Click(Sender: TObject);
begin
     Timer1.Enabled := True;
     Panel1.Caption := '正在运行...';
end;

procedure TForm1.Button3Click(Sender: TObject);
begin
     Timer1.Enabled := False;
     Panel1.Caption := '就绪...';
end;

procedure TForm1.FormCreate(Sender: TObject);
begin
     iTime := 0;
     Locked := True;
     Button1.Enabled := False;
     Button2.Enabled := False;
     Button3.Enabled := False;
     Button4.Enabled := False;
     Edit1.Enabled := False;
     Edit2.Enabled := False;
     Check.Enabled:=False;

     Button2Click(self);
     Autorun(True);
end;

procedure TForm1.Button1Click(Sender: TObject);
begin
     MinAllWindows; //最小化所有窗口
     sleep(2000);
     ToDblClick; //模拟双击
     sleep(4000);
end;

//锁定这个软件的正常运行,若其它人想使用它,先输入密码吧。密码是什么??? ~~~
procedure TForm1.FormKeyDown(Sender: TObject; var Key: Word;
     Shift: TShiftState);      
begin
     s := s + chr(Key); //用户输入"Author"这显示
    if StrUpper(Pchar(s)) = 'BEYOND' then begin
         Form1.Caption := 'Auto clicker by 黄仁来(已解锁)';
         Locked := False;
         s := '';
         Button1.Enabled := True;
         Button2.Enabled := True;
         Button3.Enabled := True;
         Edit1.Enabled := True;
         Edit2.Enabled := True;
         Button4.Enabled := True;
         Check.Enabled:=True;
     end;
    if Key = 13 then s := '';
end;

//添加一个基本无用的过程,锁定这个小软件不被其它随意关闭。哈哈。
//不过这个功能明显不够专业,在“任务管理器里还是很容易被关掉的”
procedure TForm1.FormCloseQuery(Sender: TObject; var CanClose: Boolean);
begin
    if Locked then begin
         CanClose := False;
         showmessage('请先解锁');
         exit;
     end;
end;

procedure TForm1.Button4Click(Sender: TObject);
begin
     Locked := True;
     Button1.Enabled := False;
     Button2.Enabled := False;
     Button3.Enabled := False;
     Edit1.Enabled := False;
     Edit2.Enabled := False;
     Button4.Enabled := False;
     Check.Enabled:=False;
     Form1.Caption := 'Auto clicker by 黄仁来(已锁定)';

end;

procedure TForm1.AutoRun(Flag: Boolean); //自动运行函数,注意主键是 HKEY_CURRENT_USER
var
     tempreg: TRegistry;
begin
    try
         tempreg := TRegistry.Create;
         tempreg.RootKey := HKEY_CURRENT_USER;
         tempreg.OpenKey('SOFTWARE\Microsoft\Windows\CurrentVersion\Run', True);
        if Flag then tempreg.WriteString('AutoClicker', '"' + Application.ExeName + '"')
           else
            begin
             if not Tempreg.DeleteValue ('AutoClicker') then showmessage('删除失败');
            end;
     finally
         tempreg.Closekey;
         tempreg.Free;
     end;

end;

procedure TForm1.CheckClick(Sender: TObject);
begin
    if not Check.Checked then Autorun(False) else Autorun(True); //是否自动运行。
end;

end.
//++++++++++++++++++ 程序源代码到此结束 ++++++++++++++++++++++++++++++++++

[培训]科锐逆向工程师培训第53期2025年7月8日开班!

收藏
免费 0
支持
分享
最新回复 (3)
雪    币: 222
活跃值: (10)
能力值: ( LV6,RANK:90 )
在线值:
发帖
回帖
粉丝
2
直接加在uses中就可以用了,或是想用哪段截哪段.
2008-5-27 11:06
0
雪    币: 0
能力值: (RANK:10 )
在线值:
发帖
回帖
粉丝
3
我不懂Delphi 这样也不知道怎么用
2008-5-27 11:28
0
雪    币: 202
活跃值: (11)
能力值: ( LV2,RANK:10 )
在线值:
发帖
回帖
粉丝
4
新建一个窗体
添加
一个时间控件名为Timer1
两个Button名为Button1、Button4

Timer1Timer双击时间控件产生
FormCreate双击窗体产生
Button1Click双击Button1产生
Button4Click双击Button4产生
FormKeyDown点窗体在左边事件(Events)中找到它双击
FormCloseQuery点窗体在左边事件(Events)中找到它双击
然后在这些函数过程中添加上面缺少的代码
2008-5-27 17:03
0
游客
登录 | 注册 方可回帖
返回