ActiveX Exe 只允许一个历程时创建对象失败

ActiveX Exe 只允许一个进程时创建对象失败
有这么一个需求:
1、某程序既要能独立运行(随系统自动启动,我用的是服务的方式),又能在网页中(asp中)调用    ------>于是我想到用ActiveX Exe来做。
2、只能运行一个进程    ------>于是我使用App.PrevInstance 来判断是否有前一个进程,如果有则当前程序结束。
问题来了:
1、如果这个程序只是在网页中通过CreateObject()或GetObject()的方式启动,没有人为地去先点击运行或随系统启动。(一句话,在网页调用之前没有这个进程),那么一切正常。(即使没有用App.PrevInstance 来限制只运行一个进程,而是设置“工程属性->线程缓冲池(1),不管开几个网页,都只有一个进程,很完美)。
2、在网页调用之前,已经存在这个进程,那么在网页中通过CreateObject()或GetObject()的方式启动时,就无法创建对象(App.PrevInstance的限制);如果取消了App.PrevInstance的限制,则会启动第二个进程,甚至还可以再通过手动点击运行n个进程。

有没有办法既 只运行一个进程,又能(当已存在这个进程时)在网页中创建对象?
或者,有没有办法 在创建对象时,如果ActiveX Exe进程已存在,就引用到当前进程中的实例,而不是新创建一个进程。

有点乱。感觉像是个"impossible mission"
------解决方案--------------------
实质就是使用ActiveX EXE创建多线程,可以参考老马的代码。
------解决方案--------------------
先判断,用api获取进程句柄,如果找到就kill掉,然后创建
------解决方案--------------------
引用:
****论坛上连个上传附件的地方都没有?


我的社区——〉我的资源
------解决方案--------------------
貌似有些麻烦.

帮你理一下:

一,无AX进程CreateObject时,正常,多次CreateObject与GetObject只会有一个AX进程.

二,已有AX进程时(以用户方式启动,非创建对象时自动启动),CreateObject与GetObject会创建新的AX进程.

三,要求用户方式启动,只能启动一个AX进程,同时CreateObject与GetObject共享的是已存在的AX进程中的数据.

正好我手头有类似的东西,但是并无用户运行要求,就改了一下,发现不好办.

手工运行与自动运行貌似是有区别的,自动运行时其父进程是svchost.exe,而手动时是explorer.exe.

并且,还没办法进行通讯了(那份代码是由一个AX为通讯核心,同步多个EXE间的数据的).

只有自动启动的,才能进行多个EXE间的通讯,不知道是不是哪里没搞对.

这个可能得让绿豆来看看,COM方面他貌似研究得比较多.
------解决方案--------------------
复制下面内容粘贴到新建文本文件,保存后重命名 为 aaaa.rar

begin 600 AEXtest.rar
M4F%R(1H'`,^0<P``#0````````!S:G0@DC``:P```&X````"V1"V^<>&_CP=
M,PL`(````$%%6"YV8G<``<`%`/`!&%()D13,_9@-+X$X.N`2GR_'O>=#J02N
M<!=;!NM,0-#[^Q,8H24:N*Z;F;O*-S*L#3[[A\99TH3,6-;ZMX5.$!!3^GGQ
M[GOM<:KT(A4C2[.1U<K3WVX`)H@L(9C_E\GIQ+6^QAZ@)X#QUV_;RFQ-=""2
M-`".````C@````(,[J25,8C^/!TS#P`@````36]D=6QE,2YB87,``<`)`/##
M`UX)79T(OA$WP7!_ATU:4'@%H8&A"808ML8KDN!C_Q,<RKF%P*X[<#M46JQH
M$&X9]J^#][EGM?N*0L8M$[6''#5QW&L^>D/2*I:D\#V7)F_^';SW\.TK9THH
M&Q)"&X;5%5><WL2&06?0YC#1\K[MM?E6?G&5S#%1^3WUG^QBZH8,'$UJ79`_
M-6KH[Q%3C#T@`^YT()(U`)4```"\`````G>]"<EF@OX\'3,0``$```!-4U-#
M0U!22BY30T,``<`*`+#/\PP)W-30O9@1-Z#P>\"S@34,,':B"Z$,$PKYJMPR
M_`OP1>]NQ,]X+6@ZG@WB0/!_DG))IFB0/W$K]]UW+3HFI^'=4#3Y!H-D\$F!
MO2B,B]N1NJLDB>^W9QL\<W5)ANSG%(1PVH6D\:!U?-(K&_*3""?_85%LO)!H
M'!]7Z^PR5NCZ&8E4SL6S1]GXV7"``3F-DV^XVL@?:$'`=""2,P`_`0``(0(`
M``+![0WX,8C^/!TS#@`@````0VQA<W,Q+F-L<P`!P`@`\-$J90V9%,S+W1-X
MD<':NFET`K.`&B26$42D=B)2;1.2-`Q0;B;<@7EYP(XZ<#-0E2A9:[6R!%2B
M.$>2]G_OV\Y#B]^\:\VUC\OLT_Z<X+*]TR090@:YL8'86Y)./B<>?@#J@`BK
MI23J0,'.#E:MV',>L;-\8SH(A(IJ618UPA,G>V,#(*U.$+1\W8X/M%80Q_L]
M9-L:6\)#5GG'>5[_%FD5L(J!3[2M91&H'\2_1LJYLLW</7FD\')J&TI.2:M.
MPLKG6$7>S\L#M(D(:P<$K])IA4L"2I3K"^BW;K.`;IQB_+<NOGZFCT-J,ZGU
MX@H_Q4]XU&UI1>EAN^8#R]?/TML=:G"3@40:H9TYP/C2"&Q0W)B`VC9Y3)-W
MJZS=@#ZW+3V\%7:%HOXMO]6X=$YGE7SL"/P7E7V\]8KFUK^G7BX7WV0\*'0@
MDC``Z@$```4#```"\]]XI#&(_CP=,PL`(````$%%6"YV8G```<`%`/`KC6<-
MF0S,T/V5/>@7@\$GC;0+`Y-T7PM#\)6X[8!LC@KEFVBR^";:>Q;6TF$DYLEH
MO=Z!KW99&G$6G=HG"RB<PDK"4N/G"CA(1PDC[/QG#-&Z<;;\H\>T?G\SDHD(
M;L;@]UQG-^*5'&?D.09QEBJ7ZM7P_36\PM=/0UZVN_,8Y_G?#]/L_=[#?:O;
MUSVZNO)F=?ZX-2-R$CFZ,/`)C,K+CZ98;S_5CN8J$FF$DABJI>,>9L&*YDI4