ActiveX EXE 程序应用程序启动问题,不知道你们有没有遇到过,怎么解决?

时间:2022-04-20 19:38:43
vb程序设置为ActiveX EXE 启动。打包完成后外部程序调用exe没什么问题。

在对这个vb程序进行二次开发,每天改过的代码编译为exe程序被替换到客户端原来程序后。外部程序启动的时候调用这个exe就会出现  应用程序正忙,请重试。然后就不断的让你点“切换到、重试”。只有从任务管理器中来结束这2个程序才可以,再次启动也会出现这样的“切换到、重试”但是点击几次就可以进去了。
也就是说换过的exe程序在第一次启动是怎么也进不了系统的,只有在结束任务了之后才能再启动,点击几次进入系统。

重新打包之后此问题就不存在了。现在是我每次编译不可能都打包重新安装阿。而且我在客户端作了应用程序的自动更新,在客户端更新了服务器的程序之后就出现了上述情况。


不知道你们有没有出现过类型的情况,怎么解决的?

或者我对问题的描述不是很清楚的话,你们可以继续问,我尽量描述的清楚些。
谢谢了

分不多,新号。以前的号不记得了,可惜那么多分了,这个号初始只有点点分,希望大家别介意。

7 个解决方案

#1


曾经遇到过,不过好像不知为什么是将EXE改为p-code编译就可以了

#2


没碰到过,丁页

#3


谢谢帮顶哈

to :winehero(编程人生)

改为 p-code编译 了还是不行的。

而且用p-code编译后的exe大小小了好多!~可能不到原来的一半了
这是怎么回事,会对程序由什么影响?

#4


沉了吧
我简单说说问题的具体所在吧

应用程序Apropos调用agent.bas文件,在agent.bas文件中通过创建agent类对象来调用agent应用程序
然而每次当在客户端重新编译了一个新的agent.exe文件,替换掉以前的文件的时候。在agent.bas中创建类的对象就会出现 “切换到/重试”提示。而且点了之后也无法启动

在agent.bas中的代码大概是这样子,我有点记不清楚了,不是我编写的。源码在公司呢

set 对象名=createobject(agent.类名)

每次到这里就完了

你们就没有过这样的情况?或者做过类似开发的能提供点思路么?

在createobject 失败的时候如何来检测,以及如何来重新调用,或者其它什么方法呢?

唉,有点着急了。

#5


没遇到过,我都是用的DLL。这可能和你的类模块的设置有关系。我设置的是
instancing=5 muituse
nomts
persistable=1
而且更新的时候,必须要结束掉这个进程才能更新。你可以在更新程序里判断一下这个进程是否存在,然后关闭。

#6


更新的程序是在主程序运行的时候调用的,更新程序主要的工作是读取服务器文件的更新时间,与主程序进行比较,如果存在更新。则关闭主程序,拷贝新文件到本地。重新调用主程序。
这个应该没什么问题

问题主要出现在apropos读取agent.bas文件,使用createobject方法,创建类实例的时候。今天作了一些修改,在读取agent.bas文件的时候不创建createobject对象,而是调用客户端一个小程序,这个程序在本地使用createobject创建实例,这样做了之后启动的速度快了很多。而且没有出现过“重试/切换到”消息了。这只是一个笨方法。没有根本解决问题。如果大家有更好的思路不妨一起讨论一下。

我认为这个问题的出现可能是由于在服务器上调用createobject方法来创建类实例产生的失败或者延时。

#7


由于问题尚有讨论的价值,所以暂时不结贴了。虽然问题解决了。但是近来讨论的各位都可以得分。: )

#1


曾经遇到过,不过好像不知为什么是将EXE改为p-code编译就可以了

#2


没碰到过,丁页

#3


谢谢帮顶哈

to :winehero(编程人生)

改为 p-code编译 了还是不行的。

而且用p-code编译后的exe大小小了好多!~可能不到原来的一半了
这是怎么回事,会对程序由什么影响?

#4


沉了吧
我简单说说问题的具体所在吧

应用程序Apropos调用agent.bas文件,在agent.bas文件中通过创建agent类对象来调用agent应用程序
然而每次当在客户端重新编译了一个新的agent.exe文件,替换掉以前的文件的时候。在agent.bas中创建类的对象就会出现 “切换到/重试”提示。而且点了之后也无法启动

在agent.bas中的代码大概是这样子,我有点记不清楚了,不是我编写的。源码在公司呢

set 对象名=createobject(agent.类名)

每次到这里就完了

你们就没有过这样的情况?或者做过类似开发的能提供点思路么?

在createobject 失败的时候如何来检测,以及如何来重新调用,或者其它什么方法呢?

唉,有点着急了。

#5


没遇到过,我都是用的DLL。这可能和你的类模块的设置有关系。我设置的是
instancing=5 muituse
nomts
persistable=1
而且更新的时候,必须要结束掉这个进程才能更新。你可以在更新程序里判断一下这个进程是否存在,然后关闭。

#6


更新的程序是在主程序运行的时候调用的,更新程序主要的工作是读取服务器文件的更新时间,与主程序进行比较,如果存在更新。则关闭主程序,拷贝新文件到本地。重新调用主程序。
这个应该没什么问题

问题主要出现在apropos读取agent.bas文件,使用createobject方法,创建类实例的时候。今天作了一些修改,在读取agent.bas文件的时候不创建createobject对象,而是调用客户端一个小程序,这个程序在本地使用createobject创建实例,这样做了之后启动的速度快了很多。而且没有出现过“重试/切换到”消息了。这只是一个笨方法。没有根本解决问题。如果大家有更好的思路不妨一起讨论一下。

我认为这个问题的出现可能是由于在服务器上调用createobject方法来创建类实例产生的失败或者延时。

#7


由于问题尚有讨论的价值,所以暂时不结贴了。虽然问题解决了。但是近来讨论的各位都可以得分。: )