📄 mainunit.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 + -