C#打开系统的关机/重启对话框

CSDN上的问题:http://community.csdn.net/Expert/TopicView1.asp?id=4301626

要求显示系统的关机/重启对话框,即“开始->关机...”所出来的对话框

在网上搜索了一下,Shell32.dll中存在着微软未公开的几个函数:

SHRestartSystemMB@12@59NONAME
SHShutDownDialog@4@60NONAME
SHRunDialog@24@61NONAME
SHChangeIconDialog@16@62NONAME
SHGetExtension@4@31NONAME
SHAddBackslash@4@32NONAME
SHGetFileName@4@34NONAME
SHPathIsRelative@4@40NONAME
SHPathIsExe@4@43NONAME
SHFileExists@4@45NONAME
SHGetPathArgs@4@52NONAME
SHGetShortPathName@4@92NONAME
SHObjectProperties@16@178NONAME

等等,

那也许第60个函数就是想要的功能了。
因为以前经常用rundll32来运行dll库中的函数,所以尝试了一下:

rundll32.exe shell32.dll @60 运行结果:丢失条目 @60

使用Depends查看shell32.dll,在E列中会有个#,VB导出函数时也用#,继续尝试
rundll32.exe shell32.dll #60 运行成功,出来了系统的关机对话框

所以编程时,也可以导出这个函数调唤系统的关机对话框,参考:
http://www.chez.com/haar/ada/ada.htm
http://www.frontfree.net/view/article_220.html
http://www.cstudyhome.com/wenzhang06/ReadNews.asp?NewsID=3349

下面是代码:

  1. [DllImport("shell32.dll",EntryPoint="#60")]
  2. internalstaticexternintSHShutdownDialog(intsig);
  3. /**/
  4. ///<summary>
  5. ///调用关闭对话框
  6. ///</summary>
  7. ///
  8. publicstaticintInvokeShutdownDialog()
  9. {
  10. returnSHShutdownDialog(0);
  11. }


  • 1
    点赞
  • 1
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值