求一个简单的delphi计划任务程序

求一个简单的delphi计划任务程序很简单的,希望高手们给写下程序。谢谢了。该程序就像屏保一样。1,在检测键鼠无人操作达3分钟时,运行C:\WINDOWS\system3... 求一个简单的delphi计划任务程序

很简单的,希望高手们给写下程序。谢谢了。

该程序就像屏保一样。

1,在检测键鼠无人操作达3分钟时,运行C:\WINDOWS\system32\cmd.exe
2,检测到有键鼠操作时,强制关闭进程中的cmd.exe

此计划任务程序启动后不显示界面,最好在托盘区或者或直接在进程中

拜托给位大侠了,把所有的分都给你。邮箱viirus@163.com
展开
 我来答
CJYl0571
2011-02-01 · TA获得超过530个赞
知道小有建树答主
回答量:131
采纳率:0%
帮助的人:151万
展开全部
unit Unit1;

interface

uses
Windows, Messages, SysUtils, Variants, Classes, Graphics, Controls, Forms,
Dialogs , ShellApi, Tlhelp32, ExtCtrls ;

type
TForm1 = class(TForm)
Timer1: TTimer;
procedure Timer1Timer(Sender: TObject);
procedure FormCreate(Sender: TObject);
private
{ Private declarations }
public
old_x : integer ;
old_y : integer ;

iStopSec : integer ;
sFilename : string ;
bRunState : Boolean ;

{ Public declarations }
end;

var
Form1: TForm1;

implementation

{$R *.dfm}

function KillProcess(ExeFileName:string):boolean;
const
PROCESS_TERMINATE = $0001;
var
ContinueLoop: BOOLean;
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 := TerminateProcess(
OpenProcess(PROCESS_TERMINATE,
False,
FProcessEntry32.th32ProcessID),
0);
ContinueLoop := Process32Next(FSnapshotHandle, FProcessEntry32);
end;
CloseHandle(FSnapshotHandle);
end;

function FindProcess(AFileName:string):boolean;
var
hSnapshot:Thandle;
lppe:TProcessEntry32;
Found:Boolean;
begin
Result:=False;
hSnapshot:=CreateToolhelp32Snapshot(TH32CS_SNAPPROCESS,0);
lppe.dwSize:=SizeOf(TProcessEntry32);
Found:=Process32First(hSnapshot,lppe);
while Found do
begin
if((UpperCase(ExtractFileName(lppe.szExeFile))=UpperCase(AFileName)) or (UpperCase(lppe.szExeFile )=UpperCase(AFileName))) then
begin
Result:=True;
end;
Found:=Process32Next(hSnapshot,lppe);
end;
CloseHandle(hSnapshot) ;
end ;

procedure TForm1.Timer1Timer(Sender: TObject);
begin
// 定时器每秒检查一下鼠标的位置

if (old_x = Mouse.CursorPos.X) and (old_y = Mouse.CursorPos.y ) then
begin

Inc( iStopSec );

end else
begin
iStopSec := 0;
old_x := Mouse.CursorPos.X;
old_y := Mouse.CursorPos.y;

if bRunState then
begin
// 查找进程是否存在
if FindProcess(sFilename) then
begin
// 如果进程存在,就杀掉进程
KillProcess(sFilename);

end;
bRunState := false;
end;
end;

// 如果3分钟没动 ,执行 CMD.EXE
if iStopSec >= 3 * 60 then
begin
ShellExecute( Application.Handle , 'open' , Pchar( sFilename ) , '' , Pchar(sFilename) , SW_SHOW );
bRunState := true;
end;

end;

procedure TForm1.FormCreate(Sender: TObject);
begin
old_x := Mouse.CursorPos.X;
old_y := Mouse.CursorPos.y;
iStopSec := 0;

// 你也可以根据需要,写成动态配置,执行其它应用程序。
sFilename := 'C:\WINDOWS\system32\cmd.exe';
end;
end.

//以上是没有托盘功能的。其实要实现托盘功能并不难。有现成的控件。
已赞过 已踩过<
你对这个回答的评价是?
评论 收起
匿名用户
2011-02-02
展开全部
已发送。ID是XXXXjaok
本回答被提问者采纳
已赞过 已踩过<
你对这个回答的评价是?
评论 收起
闽江之家
2011-01-31 · TA获得超过456个赞
知道小有建树答主
回答量:429
采纳率:75%
帮助的人:222万
展开全部
API函数大全,查一下。
已赞过 已踩过<
你对这个回答的评价是?
评论 收起
mit1208
2011-01-31 · TA获得超过2347个赞
知道大有可为答主
回答量:2743
采纳率:0%
帮助的人:1856万
展开全部
1.截获键盘或鼠标消息
2.结束进程与托盘区代码可以查看TrayIcon使用方法
已赞过 已踩过<
你对这个回答的评价是?
评论 收起
收起 3条折叠回答
推荐律师服务: 若未解决您的问题,请您详细描述您的问题,通过百度律临进行免费专业咨询

为你推荐:

下载百度知道APP,抢鲜体验
使用百度知道APP,立即抢鲜体验。你的手机镜头里或许有别人想知道的答案。
扫描二维码下载
×

类别

我们会通过消息、邮箱等方式尽快将举报结果通知您。

说明

0/200

提交
取消

辅 助

模 式