⭐ 欢迎来到虫虫下载站! | 📦 资源下载 📁 资源专辑 ℹ️ 关于我们
⭐ 虫虫下载站

📄 mainunit.cpp

📁 网吧电脑游戏升级系统
💻 CPP
字号:
//---------------------------------------------------------------------------

#include <vcl.h>
#pragma hdrstop

#include "MainUnit.h"
#include "PassUnit.h"
#include "ConfigUnit.h"
#include "mmsystem.h"
#include "stdio.h"
//---------------------------------------------------------------------------
#pragma package(smart_init)
#pragma resource "*.dfm"

TMainForm *MainForm;
//---------------------------------------------------------------------------
__fastcall TMainForm::TMainForm(TComponent* Owner)
    : TForm(Owner)
{
//调用API函数GetWindowLong和SetWindowLong来使应用程序窗口成为一个Tool Window
//DWORD dwExStyle = GetWindowLong(Application->Handle, GWL_EXSTYLE);
//SetWindowLong(Application->Handle,GWL_EXSTYLE,WS_EX_TOOLWINDOW);
//SetWindowLong(Application->Handle, GWL_EXSTYLE, WS_EX_WINDOWEDGE);
//   ShowWindow(Application->Handle,SW_SHOW);

   SetWindowLong(Application->Handle,GWL_EXSTYLE,WS_EX_TOOLWINDOW);

   TRegistry *Reg = new TRegistry ;
   Reg->RootKey =HKEY_LOCAL_MACHINE;//指向根目录
   Reg->OpenKey ("SOFTWARE\\MICROSOFT\\Windows\\CurrentVersion\\Run\\",false);//找到相应目录
   sAppPath=Reg->ReadString(sAppName);
   delete Reg;
   if(sAppPath=="")
   {
        sAppPath=GetCurrentDir()+ "\\" + sAppName;
   }

   FILE *EasyUpdate;
   char Buffer[256];
   strcpy(Buffer,sAppPath.c_str());
   strcat(Buffer,"\.ini");
   if ((EasyUpdate = fopen(Buffer,"r")) == NULL)
   {
        Application->MessageBox("系统启动所需文件EasyUpdate.ini丢失,系统不能启动!","错误",MB_OK | MB_ICONERROR);
        Application->Terminate(); //终止程序运行
        return;
   }
   else
   {
        fclose(EasyUpdate);
    }

    TIniFile *EUini;
    EUini = new TIniFile(AnsiString(Buffer));
    iAutoRun = EUini->ReadInteger("AUTORUN", "AutoRun",1);
    iSysTray = EUini->ReadInteger("SYSTRAY", "SysTray",1);
    iPassChick = EUini->ReadInteger("PASSCHICK", "PassChick",0);
    if(iPassChick)
    {
        sSysPass = EUini->ReadString( "SYSPASS" , "SysPass" , "" );
    }
    iAutoUpdate = EUini->ReadInteger("AUTOUPDATE", "AutoUpdate",0);//是否自动升级:1,自动升级;0,手动升级。
    if(iAutoUpdate)
    {
        sStartTime = EUini->ReadString( "STARTTIME" , "StartTime" ,"0:00:01");
        sEndTime = EUini->ReadString( "ENDTIME" , "EndTime" ,"6:00:01");
    }
    delete EUini;

    //注册系统热键
    if(!RegisterHotKey(Handle,2000,MOD_CONTROL,0x55))
        //这里注册的热键是Ctrl+U   0x55
        ShowMessage("注册热键'Ctrl+U'失败");
    if(iSysTray)
    {
        IconMessage=RegisterWindowMessage("IconNotify"); //调用RegisterWindowMessage()函数来创建一个独一无二的消息编号,以确保没有冲突
        MainForm->AddTray();//在任务栏托盘区创建图标
    }
    TimerID = 0;
    TimerID = timeSetEvent(1000, 0, (LPTIMECALLBACK)TimeProc, 0,TIME_PERIODIC|TIME_CALLBACK_FUNCTION); // 设定多媒体定时器,1000ms
    if(TimerID == 0)    {
        ShowMessage("创建系统时间失败");
    }
}
//---------------------------------------------------------------------------
void __fastcall TMainForm::AddTray()//创建任务栏托盘区图标
{
    NOTIFYICONDATA icondata; // 申请一个任务栏托盘区图标的结构变量
    memset(&icondata,0,sizeof(icondata)); //将结构变量的内容清零
    icondata.cbSize=sizeof(icondata);
    icondata.hWnd=Handle;//取得当前窗口的句柄
    strncpy(icondata.szTip,MainForm->Caption.c_str(),sizeof(icondata.szTip));//输入鼠标经过该图标时的提示字符串Application->Name.c_str(),
    icondata.hIcon=Application->Icon->Handle; //将自已所喜爱的图标文件作为任务栏托盘区的图标
    icondata.uCallbackMessage=IconMessage; //取得回调信息变量
    icondata.uFlags=NIF_MESSAGE|NIF_ICON|NIF_TIP; //当结构变量中成员hIcon、uCallbackMessage与szTip 出错时将给出错误标志
    Shell_NotifyIcon(NIM_ADD,&icondata); //用函数Shell_NotifyIcon()在任务栏托盘区产生或删除一个图标
}
//---------------------------------------------------------------------------
void __fastcall TMainForm::DeleteTray()//删除任务栏托盘区图标
{
    NOTIFYICONDATA icondata;
    memset(&icondata,0,sizeof(icondata));
    icondata.cbSize=sizeof(icondata);
    icondata.hWnd=Handle;
    Shell_NotifyIcon(NIM_DELETE,&icondata);
}
//---------------------------------------------------------------------------
void __fastcall TMainForm::WndProc(Messages::TMessage &Message)
{
    if(Message.Msg==IconMessage)//如果产生的是与该图标相关的消息
    {
        if(Message.LParam==WM_RBUTTONDOWN)//单击右键希望能弹出菜单
        {
            TPoint pt;
            GetCursorPos(&pt);
            SetForegroundWindow(Handle);
            PopupMenu->Popup(pt.x,pt.y);
            PostMessage(Handle, WM_NULL, 0,0);
        }
        if(Message.LParam==WM_LBUTTONDBLCLK)
        {
            if (!MainForm->Visible)
            {
                if(!PassForm)
                {
                    if (PassChick())
                    {
                        MainForm->Show();
                        MainForm->BringToFront();
                    }
                }
                else if(PassForm->Visible)
                {
                    PassForm->Close();
                }
                else  if (PassChick())
                {
                    MainForm->Show();
                    MainForm->BringToFront();
                }
            }
            else
            {
                MainForm->Hide();
            }
        }
        return;
    }

    if((Message.Msg == WM_SYSCOMMAND)&&(Message.WParam == SC_CLOSE))
    {
        if(Application->MessageBox("您确定要退出自动升级系统么?","确认",MB_YESNO | MB_ICONQUESTION )==IDYES)
        {
            MainForm->Close() ;
            return;
        }
        else
        {
            return;
        }
    }
    if((Message.Msg == WM_SYSCOMMAND)&&(Message.WParam == SC_MINIMIZE))
    {
        MainForm->Hide();
        return;
    }
    TForm::WndProc(Message);
}
//---------------------------------------------------------------------------
void __fastcall TMainForm::FormDestroy(TObject *Sender)
{
    if(TimerID != 0)    {
        timeKillEvent(TimerID); // 释放定时器
    }
    UnregisterHotKey(Handle, 2000);//退出程序时注销热键
    MainForm->DeleteTray(); //删除任务栏托盘区图标
    Application->Terminate(); //终止程序运行
}
//---------------------------------------------------------------------------
void __fastcall TMainForm::OnHotKey(TMessage &Message)
{
    //添加你的代码
    TForm::Dispatch(&Message);
    if (!MainForm->Visible)
    {
        if(!PassForm)
        {
            if (PassChick())
            {
                MainForm->Show();
                MainForm->BringToFront();
            }
        }
        else if(PassForm->Visible)
        {
            PassForm->Close();
        }
        else if (PassChick())
        {
                MainForm->Show();
                MainForm->BringToFront();
        }
    }
    else
    {
        MainForm->Hide();
    }
}
//---------------------------------------------------------------------------
int __fastcall TMainForm::PassChick()
{
    if (iPassChick)
    {
        iPassSuccess=0;
        if(!PassForm)
        {
            Application->CreateForm(__classid(TPassForm),&PassForm);
        }
        else if(!PassForm->Visible)
        {
            PassForm->Close();
            Application->CreateForm(__classid(TPassForm),&PassForm);
        }
        PassForm->Close();
        if(iPassSuccess)
        {
            return 1;
        }
        else
        {
            return 0;
        }
    }
    else
    {
        return 1;
    }
}
//---------------------------------------------------------------------------

void __fastcall TMainForm::MExitClick(TObject *Sender)
{
        if(Application->MessageBox("您确定要退出自动升级系统么?","确认",MB_YESNO | MB_ICONQUESTION )==IDYES)
        {
            MainForm->Close() ;
            return;
        }
        else
        {
            return;
        }    
}
//---------------------------------------------------------------------------

void __fastcall TMainForm::PMExitClick(TObject *Sender)
{
    if(PassChick())
    {
        if(Application->MessageBox("您确定要退出自动升级系统么?","确认",MB_YESNO | MB_ICONQUESTION )==IDYES)
        {
            MainForm->Close() ;
            return;
        }
        else
        {
            return;
        }
    }
}
//---------------------------------------------------------------------------

void __fastcall TMainForm::PMLoginClick(TObject *Sender)
{
    if (!MainForm->Visible)
    {
        if (PassChick())
        {
            MainForm->Show();
            MainForm->BringToFront();
        }
    }
    else
    {
        return;
    }
}
//---------------------------------------------------------------------------
void __fastcall TMainForm::MSystemClick(TObject *Sender)
{
    MainForm->Hide();
    Application->CreateForm(__classid(TConfigForm), &ConfigForm);
}
//---------------------------------------------------------------------------
void CALLBACK TMainForm::TimeProc(UINT uID,UINT uMsg, DWORD dwUser,DWORD dw1,DWORD dw2)
{
    MainForm->StatusBar->Panels->Items[0]->Text = Now();
}
// ---------------------------------------------------------------------------

⌨️ 快捷键说明

复制代码 Ctrl + C
搜索代码 Ctrl + F
全屏模式 F11
切换主题 Ctrl + Shift + D
显示快捷键 ?
增大字号 Ctrl + =
减小字号 Ctrl + -