none
Win7下调用SetWaitableTimer 不能把系统从Standby下唤醒 RRS feed

  • 问题

  • 同一段程序 通过调用Windows API:CreateWaitableTimer 和 SetWaitableTimer,想在特定时间内把系统从Standby状态中唤醒,在Vista下成功, 但Win7 下失败。
    网上有说 Win7用新的API,CreateWaitableTimerEx 和 SetWaitableTimerEx,但好像仍然失败。
    求高手解答
    • 已移动 Sheng Jiang 蒋晟 2009年9月20日 3:38 API问题 (发件人:Visual C#)
    • 已移动 尚彬 2009年9月22日 2:35 帖子分类 (发件人:一般性问题讨论区)
    • 已移动 gOxiAMVP 2011年3月26日 4:38 问题内容适用 (发件人:Windows 7)
    2009年9月19日 16:57

全部回复

  • 求解答

    2009年9月20日 7:22
  • 系统缺陷啊


    聚信与共 ,创赢未来 如果问题没有解决,请继续跟帖讨论;如果问题得到解决,请标记为答复。有帮助请投票
    2009年9月20日 8:58
  • 系统缺陷啊


    聚信与共 ,创赢未来 如果问题没有解决,请继续跟帖讨论;如果问题得到解决,请标记为答复。有帮助请投票

    啊?老兄 您确定吗?
    2009年9月20日 9:13
  • 像你这样出现系统不一样而出现的问题多得是啊  以后正式版出来后会改进的 就好像RC版本缺陷多多  RTM修正了很多


    聚信与共 ,创赢未来 如果问题没有解决,请继续跟帖讨论;如果问题得到解决,请标记为答复。有帮助请投票
    2009年9月20日 9:25
  • LRESULT CSuspendDlg::WindowProc(UINT message, WPARAM wParam, LPARAM lParam) 
    {
    	// TODO: Add your specialized code here and/or call the base class
    	int sleepTime;
    	CString stime;
    	sleepTime = m_time;
    	switch(message)
       {
       case WM_POWERBROADCAST: 
    	   {
    		   switch(wParam)
    		   {
    			    case PBT_APMSUSPEND:
    			   {
    				::OutputDebugString("准备。。。");	
    				stime.Format("%s",sleepTime);
    				if (sleepTime == 0)
    				{
    					sleepTime = 15;
    				}
    				OutputDebugString ( stime );
    				hTimer=::CreateWaitableTimer(NULL,TRUE,"lachor");
    				if(!hTimer)	break;
    				hTimer=OpenWaitableTimer(TIMER_ALL_ACCESS,TRUE,"lachor");			
    				LARGE_INTEGER liDueTime;			
    				liDueTime.QuadPart= sleepTime * 100 * 100 * (-10);
    				SetWaitableTimer(hTimer,&liDueTime,0,NULL,NULL,TRUE);			
    				break;
    				   }
                   case PBT_APMRESUMESUSPEND:
    				   {
    				if(hTimer)
    				{
    					CancelWaitableTimer(hTimer);
    					CloseHandle(hTimer);
    				}						
    				::OutputDebugString("OK...");						
    				break;
    				   }
    		   }		   
    	   }
       }
    	return CDialog::WindowProc(message, wParam, lParam);
    }
    这样就可以实现,但在Win7或者Vista下离唤醒操作还需要一段时间;
    所以还得研究下...希望高手出现;
    2009年10月21日 15:08