[C++]回调系统关机对话框

只是想图个方便,或者好看,做一个跟“开始”菜单上关机一样的按扭,打开系统的关机对话框。

于是从网上找了找现成的代码,然后自己改了改,有了这个。

为了不显示出窗体,我把控制台的窗口也给隐藏了。

VS2010建立的入口点不是main(),因为必须为这个我才改的。原来的是_tmain()吧,有点记不清了。

回调函数则始终我是一知半解。

//隐藏控制台窗口1
#pragma comment(linker, "/subsystem:\"windows\"   /entry:\"mainCRTStartup\"")

//注意函数入口应为 main() 函数

//特别说明:此方法仅仅适用于vs 2003以上版本,已经经过验证。
//因为#pragma comment是vs特有的,而不是c++的标准


//调用系统的关机对话框
typedef int (CALLBACK *SHUTDOWNDLG) (int);   
CString s;
    
HINSTANCE hInst = LoadLibrary(TEXT("shell32"));
SHUTDOWNDLG SHShutDownDialog;
    
if(hInst != 0)
    {
	 SHShutDownDialog = (SHUTDOWNDLG)GetProcAddress(hInst, (LPSTR)60);
		 (*SHShutDownDialog)(0);
		 FreeLibrary(hInst);
    } 

都做完后基本上具有了功能。

但是奇怪的让我想不明白的问题是,有时候会失效。

再打开一次,却又管用。


最后再附加另一段隐藏控制台的代码吧,这个在本程序中没起作用。也许在别的地方可以管用。

	// 隐藏控制台窗口2
	HWND hwnd;

	if(hwnd=::FindWindow((LPCWSTR)"ConsoleWindowClass",NULL)) //找到控制台句柄
	{
	::ShowWindow(hwnd,SW_HIDE); 
	}


  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值