|
楼主发表于:2009-01-09 21:23:07
程序只允许一个实例运行, 就是查找之前运行的实例, 如果存在, 就 ShowWindow 以及 SetForegroundWindow. 不过我遇到一个问题, 就是如果程序有一个模式窗口 (Modal dialog) 在显示, 这时如果将这个 Process 的 MainWindowHandle SetForegroundWindow 之后, 本来不应该获得焦点的主窗体由于窗体前置而获得了键盘输入焦点 (不过鼠标不行). 现在就可以用 Tab 键改变焦点, Enter 键输入 (不过对 Button 来说空格键无效), 菜单也可以用 Alt 键激活. 这样, 程序就可能出现不可预知的错误, 因为程序的逻辑基本上会被完全搞乱 (如果模式窗体比较多的话更糟). 发现很多软件都有这个问题, 比如 Windows Live Messenger, Maxthon (如果只允许一个实例的话). 不知道怎样才能避免这样的问题? 谢谢. |
|
|
|