2010-04-29
如何保证单实例运行
对有窗口的程序_WINMAIN 入口函数的
可以通过 FindWindow来查找是否有窗口存在而跳出启动的进程来保证单例
而我需求的这个程序需要没界面的进程常驻内存,所以我决定以_tmain()作为程序入口,
在需要UI时createWindow 但经过实验发现还是DialogBox(模态对话框)适合我的需求
由于程序自启动时是不需要界面的,所以我想,由程序自启动时传入启动参数标明 程序为自启动
而无需启动界面,
当程序由用户激活,则不传启动参数,程序会启动UI,但是当用户点退出,则销毁这个界面,程序继续驻如内存,
以后用户再激活程序,则查找是否存在UI窗口,找到则把窗口置前,然后退出当前进程,保证单例,
如果没有找到 则创建UI界面,用户操作完成 销毁UI,然后判断是否已经存在同名进程,如果存在则返回,结束当前进程
然后说一下如何让程序 开机自启动
网上说 (WinCE):
[HKEY_LOCAL_MACHINE/init]
替代explorer.exe 这项
但是我没找到这项(windows mobile)
我就自己加了一项
Launch123 程序绝对路径
Depend123 0
重启机器,程序启动成功,并且传入参数, 这个参数就是Launch后面的数字(传入时 为字符串型)
我在想能不能传入字符作为参数呢,多种尝试 均失败
最后就想那就传入一个有意义的数字吧
就以我们程序的名字的首字母的Asiic码值作为启动参数7283
好了自启动 及自启动的判断也有了开始程序吧
//----------------------------------------------------------------
//如何查找一个对话框窗体
1.在对话框初始化函数里 SetWindowText(hWndDlg, TEXT("FindDlg"));
2.可以去查找了 (HWND hWnd = FindWindow(NULL, TEXT("FindDlg")));
哈哈找到了
具体代码: