盾怪网教程:是一个免费提供流行杀毒软件教程、在线学习分享的学习平台!

从任务通知区打开屏幕保护程序

时间:2025/1/19作者:未知来源:盾怪网教程人气:

[摘要]NIF_TIP;   nid.uCallbackMessage = WM_SSLAUNCHICONNOTIFY;   nid.hIcon=LoadIcon(GetWindowInstance(hwn...
NIF_TIP;

   nid.uCallbackMessage = WM_SSLAUNCHICONNOTIFY;

   nid.hIcon=LoadIcon(GetWindowInstance(hwnd),

  KEINTRESOURCE(IDI_SSLAUNCH));

   lstrcpyn(nid.szTip,g_szAppName,sizeof(nid.szTip) /sizeof(nid.szTip[0]));

  
   return(Shell_NotifyIcon(NIM_ADD, &nid))

  }

  b.任务栏通知区图标的删除

   应用程序退出时,应该删除任务通知区上相应的图标:
  void SSLaunch_OnDestroy(HWND hwnd)

  {

   // Remove the notification icon from the taskbar

  
   NOTIFYICONDATA nid;

   nid.cbSize = sizeof(nid);

   nid.hWnd = hwnd;

   nid.uID = IDI_SSLAUNCH;

  
   Shell_NotifyIcon(NIM_DELETE, &nid);

  }

  c.应用程序定义回调消息的接收

  若为任务栏通知区指定了回调消息,则系统会于鼠标事件在此区域发生时

  向应用程序发送此消息,其中wParam是任务栏通知区图标标识,lParam

  是鼠标事件发生后的鼠标信息。

  
  void SSLaunch_OnIconNotify(WPARAM wParam, LPARAM lParam)

  {

   UINT uID = (UINT)wParam;

   UINT uMsg = (UINT)lParam;

  
   if(uID == IDI_SSLAUNCH){

   switch(uMsg){

   case WM_LBUTTONDOWN :

   //Do something

   break;

  
   case WM_LBUTTONUP :

   //Do something

   break;

  
   default :

   break;

   }

   }

  }

  
  2.禁止多个Win32实例

  在讨论禁止多个Win32实例之前,我们先讨论一下WinMain函数。我们知道,任何一个基于GDI的Windows程序以WinMain函数作为入口被系统调用。在Win16中,hPrevInstance指向前一个实例的句柄,但在Win32中,每一个进程都有一个独立的4G地址空间,从0到2G属于进程私有,对其他进程来说是不可见的。所以,在Win32中,hPrevInstance总是为NULL。

  
  int WINAPI WinMain(

  HINSTANCE hInstance, // handle to current instance

  HINSTANCE hPrevInstance, // handle to previous instance

  LPSTR lpCmdLine, // pointer to command line

  int nCmdShow // show state of window

  );

  
  因而,在Win32下不能通过判断hPrevInstance是否为NULL来判断一个程序的另一个实例是否存在,要用其他的方法来判断。

  
  方法一

  用FindWindow 函数查找指定窗口,如果成功,则返回要找的窗口的句柄,否则返回NULL,由此可判断是否有程序的另一个实例存在。

  
  下图的代码片段演示如何使用FindWindow函数:

  
  TCHAR szClassName[] = _TEXT("My Wnd Class");

  TCHAR szWndName[] = _TEXT("My Wnd");

  HWND hWnd = FindWindow(szClassName,szWndName);

  
  if(hWnd){

  MessageBox(NULL, _TEXT("Another Instance is already running."), _TEXT("Information"),

   MB_OK

关键词:从任务通知区打开屏幕保护程序




Copyright © 2012-2018 盾怪网教程(http://www.dunguai.com) .All Rights Reserved 网站地图 友情链接

免责声明:本站资源均来自互联网收集 如有侵犯到您利益的地方请及时联系管理删除,敬请见谅!

QQ:1006262270   邮箱:kfyvi376850063@126.com   手机版