求一个简单的delphi计划任务程序
求一个简单的delphi计划任务程序很简单的,希望高手们给写下程序。谢谢了。该程序就像屏保一样。1,在检测键鼠无人操作达3分钟时,运行C:\WINDOWS\system3...
求一个简单的delphi计划任务程序
很简单的,希望高手们给写下程序。谢谢了。
该程序就像屏保一样。
1,在检测键鼠无人操作达3分钟时,运行C:\WINDOWS\system32\cmd.exe
2,检测到有键鼠操作时,强制关闭进程中的cmd.exe
此计划任务程序启动后不显示界面,最好在托盘区或者或直接在进程中
拜托给位大侠了,把所有的分都给你。邮箱viirus@163.com 展开
很简单的,希望高手们给写下程序。谢谢了。
该程序就像屏保一样。
1,在检测键鼠无人操作达3分钟时,运行C:\WINDOWS\system32\cmd.exe
2,检测到有键鼠操作时,强制关闭进程中的cmd.exe
此计划任务程序启动后不显示界面,最好在托盘区或者或直接在进程中
拜托给位大侠了,把所有的分都给你。邮箱viirus@163.com 展开
4个回答
展开全部
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.
//以上是没有托盘功能的。其实要实现托盘功能并不难。有现成的控件。
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
本回答被提问者采纳
已赞过
已踩过<
评论
收起
你对这个回答的评价是?
展开全部
API函数大全,查一下。
已赞过
已踩过<
评论
收起
你对这个回答的评价是?
展开全部
1.截获键盘或鼠标消息
2.结束进程与托盘区代码可以查看TrayIcon使用方法
2.结束进程与托盘区代码可以查看TrayIcon使用方法
已赞过
已踩过<
评论
收起
你对这个回答的评价是?
推荐律师服务:
若未解决您的问题,请您详细描述您的问题,通过百度律临进行免费专业咨询