日期:2014-05-18  浏览次数:22279 次

【真的很难吗】程序只运行一个实例,且能接收的链接参数,如电驴那样,内详~
问题如下:
1、程序只运行一个实例,如果程序启动后,在运行程序则使已经运行的程序实例获得焦点;
2、给定特定链接格式(如abcde://sdfsdfsssssss),指定其打开方式为我的程序,当点击“abcde://sdfsdfsssssss”这样的链接时,自动启动程序,且接收参数“abcde://sdfsdfsssssss”。
3、在程序运行的前提下,点击“abcde://sdfsdfsssssss”这样的链接时,使程序获得焦点,且接收参数“abcde://sdfsdfsssssss”。

就如同电驴和迅雷那样。

问题3,我参考 http://topic.csdn.net/u/20090203/10/D10E2617-4C78-4EEB-BA28-3C11A5280094.html
采用消息机制,貌似能够实现,但是程序退出后,任务管理器里仍然能看到进程,不知道为什么。


请高高人来帮帮忙~~~~~


------解决方案--------------------
1、程序只运行一个实例,如果程序启动后,在运行程序则使已经运行的程序实例获得焦点;
最简单的方法是创建一个命名的系统内核对象,如互斥体等,检查到改内核对象存在,则向之前的实力发一个消息使之获得焦点

2、给定特定链接格式(如abcde://sdfsdfsssssss),指定其打开方式为我的程序,当点击“abcde://sdfsdfsssssss”这样的链接时,自动启动程序,且接收参数“abcde://sdfsdfsssssss”。
3、在程序运行的前提下,点击“abcde://sdfsdfsssssss”这样的链接时,使程序获得焦点,且接收参数“abcde://sdfsdfsssssss”。
2/3可能需要在IE上装个插件来实现