作者saloonpass (圣诞大快乐)
看板C_Sharp
标题[问题] 如何避免程式被重复开启
时间Thu Jun 14 09:34:07 2007
写了一个CE上的小程式
这个程式是由其他程式呼叫起来的 用CreateProcess
如果我希望在此程式已被执行的状况下
若再一次被呼叫时,不要再开一个视窗
而是直接把此程式(已执行)拉到最上层
以避免重复相同功能的多个视窗同时执行
请问要如何做呢?
谢谢
我目前只想到可以在呼叫端做一个check
因为CE不支援GetProcessByName
所以目前我是用FindWindow检查目前已执行程式的Title
如果有已存在的,取得此程序的Handler,再用ShowWindow来把他抓到上层
我自己知道这个方法很烂
第一个是因为我是在呼叫端来check,如果不确定这个程式会被什麽程式呼叫
我就没办法事先check,所以我希望能找到一个是在被呼叫端的检查
但是,如果是在被呼叫端做check,那不就代表被呼叫的程式已经被启动了
这就与我起初希望能不要用到两份系统资源的想法抵触了(因为CE的资源已经够少了)
我不知道该怎麽解
可是我明明就有看到一些程式,他是永远只有一个视窗的阿
另外请问一下,如果是在InitializeComponent的时候作这个check,
如果有已存在的,就把他拉上来,然後把自己Exit掉,这样可行吗?
这样实际上系统资源有多少是已经分配过去了呢?
另外,我知道用FindWindow也是一个bad idea,
因为只要有相同的Window Title,就可能会有意外
请问一下,有什麽其他CE上可用的函式,可以帮助我知道某一特定Process的状态呢?
(如果真的没有,我就只好开一个Global Variable来存他的状态了..虽然这不是很好)
有点拉里拉杂,谢谢大大
1F:推 tomex:程式要写个find handle(api有),避免被重复执行 06/14 12:57
※ 编辑: saloonpass 来自: 211.20.98.2 (06/14 17:23)
2F:推 saloonpass:请问是否有比较详细的解释呢? 我不太了解 06/14 17:23