主题:如何在vb的sstab中引用已经做好的exe文件?
ir77
[专家分:570] 发布于 2010-04-04 09:02:00
我做了一个计算粮食价格的软件,只有一个exe文件,现在我做了一个另外的软件,用sstab做了几个不同的页面,其中一个页面我想引用前面的exe文件,整体的引用,应给怎么做?如果我只想引用这个软件所计算出来的部分结果,那又该怎么做呢?
如果可以实现,那我就可以分别做几个exe,然后用一个大的sstab框架把这几个exe都集成在一起,但是这样如何能在不同的exe之间交换数据文件呢?
回复列表 (共9个回复)
沙发
ir77 [专家分:570] 发布于 2010-04-04 14:43:00
自己顶一下,别沉了。
板凳
merry05 [专家分:8920] 发布于 2010-04-05 10:02:00
1、让exe导出函数,你来调用,类似DLL导出函数
2、直接写成控件
3 楼
ir77 [专家分:570] 发布于 2010-04-05 13:16:00
不是让被的程序调用这个exe的运算结果,而是在别的程序的界面直接打开这个exe程序。
4 楼
merry05 [专家分:8920] 发布于 2010-04-06 14:25:00
那是你不知道你的任务应该做些什么
5 楼
ir77 [专家分:570] 发布于 2010-04-06 18:18:00
我知道我要引用的软件是做什么的,只是我想把这个软件集成在新作的软件上,这样用新软件的时候就可以直接使用旧软件了,这样就不需要再重新写代码了。
下面这张图片就是我原来做的软件
[img]http://blog.pfan.cn/upfile/201004/20100406181441.jpg[/img]
这个是新作的软件
[img]http://blog.pfan.cn/upfile/201004/20100406181452.jpg[/img]
我想在新软件里提供旧软件的功能,但是不想再重新写一遍代码,只是简单的想在tab1的位置上将旧软件集成在上面,这其中不涉及程序之间的数据交换问题,应该怎么实现?
6 楼
merry05 [专家分:8920] 发布于 2010-04-06 19:21:00
俺当然知道你的意思,是你不知道俺的意思
算了,你这么一意孤行,就这么做吧:
CreateProcess,为你的旧程序创建一个新进程
遍历所有的窗体,用GetWindowThreadProcessId比对进程ID,如果和这个ID,就判定取得的窗体是这个进程下的窗体
然后用这个取得的窗体句柄,SetParent到你的Tab里
至于有什么副作用,就不作任何担保
7 楼
一江秋水 [专家分:9680] 发布于 2010-04-06 19:59:00
为什么不使用Shell语句呢?当用户点击选项卡时,就用Shell打开老程序。提示:也可使用API函数ShellExecute
8 楼
ir77 [专家分:570] 发布于 2010-04-08 08:13:00
shell我刚试过,但是shell是另外打开这个文件的,我不希望另外打开,我想让程序调用这个exe,就像集成在一起一样。
merry05:你的方法我确实没太看懂,不过我感觉这样挺麻烦的还不如我重新做简单。
9 楼
merry05 [专家分:8920] 发布于 2010-04-08 17:31:00
[quote]shell我刚试过,但是shell是另外打开这个文件的,我不希望另外打开,我想让程序调用这个exe,就像集成在一起一样。
merry05:你的方法我确实没太看懂,不过我感觉这样挺麻烦的还不如我重新做简单。[/quote]
你要做的事,开启你的旧程序,然后取得那个窗体句柄,拼到Tab下面
用SetParent的确能办到,但是你要先取得窗体句柄,但SetParent之后,消息循环会变成怎么样,没去了解
所以我前面说把所有的功能函数在exe中导出,你在新程序里直接调用就好;或者把旧程序改成一个ActiveX控件,在新程序里直接引用,这样来的方面
我来回复