您的位置:首页 > 其它

注册后自动关闭并重启程序

2008-06-25 10:45 197 查看
最开始增加注册功能的时候,都是弹出提示窗口,让用户自己关闭程序,然后再重启。结果有人说提示窗口说“注册完成,请重新启动软件”的意思就是证明已经注册成功了。但是重启之后可能没有注册成功。遇到这种情况我简直无语。我在提示中只说明,注册动作完成了,至于注册码是否是有效的,必须通过重启软件查看才知道。另外还有人说,最好能注册完后自动关闭并重启。典型一个懒人,我真想踹他一脚。可是后来我发现,国外的人还真就有很多这种懒人。如果一步能够完成的事情,他绝对无法忍受你规定他二步做。哪怕多看一眼手头的工作,似乎都是对他的侮辱。报着“客户是上帝的”(我都从来没有享受过这种待遇)指导原则,我搜集了一些资料,最后用如下代码实现了程序的自关闭和重启。
void OnRestart()

{

HMODULE   module   =   GetModuleHandle(0);

CHAR   buf[MAX_PATH];

GetModuleFileName(module,   buf,   sizeof   buf);

CloseHandle(HANDLE(4));

/** 重启代码 */

ShellExecute(NULL, NULL, buf, NULL, NULL, SW_SHOWNORMAL);

/** 自关闭汇编代码 */

__asm   {

lea   eax,   buf

push   0

push   0

push   eax

push   ExitProcess

push   module

push   DeleteFile

push   UnmapViewOfFile

ret

}

}
因为我的这个软件做了单一运行的限制。而从上面代码可以看出可能有个隐患:如果软件启动在关闭完成之前,
则可能启动失败。不过我在实际测试过程中没有出现该问题。毕竟功能问题可以先解决,后面的异常问题等反映
强烈后再处理吧。嘿嘿!
内容来自用户分享和网络整理,不保证内容的准确性,如有侵权内容,可联系管理员处理 点击这里给我发消息
标签: