下面是俺用C++Builder写的一个程序,你把他改成Delphi的就可以了
在工程文件中:
WINAPI WinMain(HINSTANCE, HINSTANCE, LPSTR, int)
{
; ; try
; ; {
; ; ; ; //====利用互斥,防止多个程序运行====
; ; ; ; HANDLE hMutex=CreateMutex(NULL,TRUE,"Simba_Run");
; ; ; ; if(hMutex==NULL||GetLastError() == ERROR_ALREADY_EXISTS)
; ; ; ; {
; ; ; ; ShowMessage("程序已经运行");
; ; ; ; CloseHandle(hMutex);
; ; ; ; return FALSE;
; ; ; ; }
; ; ; ; //==================================
; ; ; ; ; ;
; ; ; ; Application->Initialize();
; ; ; ; //=====隐藏主窗体=====
; ; ; ; ShowWindow(Application->Handle,SW_HIDE);
; ; ; ; Application->ShowMainForm = false;
; ; ; ; //====================
; ; ; ; Application->CreateForm(__classid(TForm1), &Form1);
; ; ; ; ;Application->CreateForm(__classid(TForm2), &Form2);
; ; ; ; ;Application->Run();
; ; }
; ; catch (Exception &exception)
; ; {
; ; ; ; Application->ShowException(&exception);
; ; }
; ; return 0;
}
//---------------------------------------------------------------------------
在main函数中:
//---------------------------------------------------------------------------
//主窗体创建
//---------------------------------------------------------------------------
void __fastcall TForm1::FormCreate(TObject *Sender)
{ ;
; ; AddTrayIcon();
; ; SetToolWindow(Handle);
}
//---------------------------------------------------------------------------
//设置当前窗体属性,不在任务栏出现
//---------------------------------------------------------------------------
void __fastcall TForm1::SetToolWindow(HANDLE hWin)
{
; ; DWORD dwStyle;
; ; dwStyle = GetWindowLong(hWin,GWL_EXSTYLE);
; ; dwStyle |= WS_EX_TOOLWINDOW;
; ; SetWindowLong(Application->Handle,GWL_EXSTYLE,dwStyle);
}
//---------------------------------------------------------------------------
// 添加系统托盘函数
//---------------------------------------------------------------------------
void __fastcall TForm1::AddTrayIcon()
{
; ; NOTIFYICONDATA icon;
; ; icon.cbSize=sizeof(NOTIFYICONDATA);
; ; icon.hWnd=Handle;
; ; icon.uID=200;
; ; strncpy(icon.szTip,"YourAppName",sizeof(icon.szTip));
; ; icon.hIcon=Application->Icon->Handle;
; ; icon.uCallbackMessage=MYWM_NOTIFY;
; ; icon.uFlags=NIF_MESSAGE|NIF_ICON|NIF_TIP;
; ; Shell_NotifyIcon(NIM_ADD,&icon);
}
//---------------------------------------------------------------------------
// 删除系统托盘函数
//---------------------------------------------------------------------------
void __fastcall TForm1::RemoveTrayIcon()
{
; ; NOTIFYICONDATA icon;
; ; icon.cbSize=sizeof(NOTIFYICONDATA);
; ; icon.uID=200;
; ; icon.hWnd=Handle;
; ; Shell_NotifyIcon(NIM_DELETE,&icon);
}
//---------------------------------------------------------------------------
// 相应系统托盘消息,显示菜单
//---------------------------------------------------------------------------
void __fastcall TForm1::OnDispPassWord(TMessage &Message)
{
; ; POINT p;
; ; switch(Message.LParam)
; ; {
; ; ; ; case WM_RBUTTONUP: //鼠标右键单击
; ; ; ; ; ; GetCursorPos(&p); //获取坐标
; ; ; ; ; ; PopupMenu1->PopupComponent=Form1; //当前位置显示菜单
; ; ; ; ; ; SetForegroundWindow(Handle);
; ; ; ; ; ; PopupMenu1->Popup(p.x,p.y);
; ; ; ; ; ; break;
; ; ; ; ; ;
; ; ; ; case WM_LBUTTONUP: //鼠标左键单击
; ; ; ; ; ; if(Visible == false)
; ; ; ; ; ; {
; ; ; ; ; ; ; ; //DoSomething....
; ; ; ; ; ; ; ; N1->Enabled=false;
; ; ; ; ; ; ; ; N2->Enabled=true;
; ; ; ; ; ; ; ; Show();
; ; ; ; ; ; }
; ; ; ; ; ; SetForegroundWindow(Handle); //使窗体在激活状态显示
; ; ; ; ; ; break;
; ; }
; ; TForm:
ispatch(&Message);
}
//---------------------------------------------------------------------------
//程序退出
//---------------------------------------------------------------------------
void __fastcall TForm1::N4Click(TObject *Sender)
{
; ; RemoveTrayIcon();
; ; Application->Terminate();
}