我的程序情况大致如下:我写的程序MyProgram最后执行重启计算机功能,在关机过程中另一个程序B(独立的,跟程序MyProgram没关系)会弹出“是否立即退出程序B”的messagebox对话框。其实不做任何动作,计算机都会成功重启,问题是我想发送重启命定后就不再看到那个弹出的对话框,不知有什么方法可以实现:
其中疑问有:
1、程序MyProgram执行重启功能后,还可以捕捉到弹出的对话框吗?
2、在什么地方执行捕捉对话框窗口句柄的代码,因为好像执行重启后,程序MyProgram已经析构了?
2、如果是给弹出的对话框发送YES命令,该如何实现?请大侠帮忙,感谢

解决方案 »

  1.   

    楼主
    你可以用INI,两个不同的程序读取一份INI。
    在INI里面做配置。
    GetPrivateProfileString读取
    WritePrivateProfileString写入根据INI中的字段值来判断是否弹出对话框
      

  2.   

    1 可以做到,你hook系统中进程中CreateWindow等函数,禁止他们再创建窗口。或者你处理ShowWindow这类的函数,让它们创建的窗口显示不出来。如果你想暴力点,你在执行重启时,直接杀掉那些进程,可以省很多事。就看你怎么想了。
    2 你可能无法保证你的程序是最后退出的,那么你就在执行重启前,你给explorer注入一个远线程,这个远线程帮你做你想做的事。比如杀掉进程,关掉窗口。
    3 这个就是模拟点击模拟按键的问题了,你可以看http://blog.csdn.net/breaksoftware/article/details/7188857 工程里有怎么做。但是有个问题,你这样做很局限,如果那是个无窗口控件的窗口,包括按钮都是自绘的,那么你这样就得特事特办了。这个方法可能不具有通用性。
      

  3.   

    直接调用BIOS的重启代码不行吗?进0环直接jmp ffff:0复位。