VB整合 多个exe程序 100
如何用vb制作一个软件把A,B,C,D好几个小软件加到我做的这个1.exe程序里面要求:a,b,c,d这几个小软件最好在1.exe程序后台运行,界面只显示1.exea.b...
如何用vb制作一个软件
把A,B,C,D好几个小软件加到我做的这个1.exe程序里面
要求:a,b,c,d这几个小软件最好在1.exe程序后台运行,界面只显示1.exe
a.b.c.d这几个软件是别人e语言开发的。
比如按F1键,能够调用a.exe软件的 F1键功能
我菜鸟,我说的这个思路VB能够实现吗
1楼的回答
我有个疑问
那当我的程序窗口 按最小化的时候,能同时让后面的程序最小化吗
我程序的 定义的F1键功能,能实现 后面程序的 F1键功能吗
2楼的回答说可以捆绑在一起,
那样的话,启动1.exe程序后,比如按F1键后 ,还能实现按a.exe程序的F1键功能吗 展开
把A,B,C,D好几个小软件加到我做的这个1.exe程序里面
要求:a,b,c,d这几个小软件最好在1.exe程序后台运行,界面只显示1.exe
a.b.c.d这几个软件是别人e语言开发的。
比如按F1键,能够调用a.exe软件的 F1键功能
我菜鸟,我说的这个思路VB能够实现吗
1楼的回答
我有个疑问
那当我的程序窗口 按最小化的时候,能同时让后面的程序最小化吗
我程序的 定义的F1键功能,能实现 后面程序的 F1键功能吗
2楼的回答说可以捆绑在一起,
那样的话,启动1.exe程序后,比如按F1键后 ,还能实现按a.exe程序的F1键功能吗 展开
10个回答
展开全部
1. Exe文件的整合
这个比较麻烦,一般有几种做法,最常用的是注入exe文件的方式,就象有些病毒感染exe文件一样的注入,不过你需要通过反汇编,来找到程序的入口,在入口处加上你的代码,有窗体的话,比较复杂.
现在不少程序都有加壳,可以用PE查查壳,再用OD中断找入口,过去的壳都好破,不过现在的猛壳都是骨头里有肉,肉里有骨头,脱壳相当的困难.如果你有这些程序的源码那就相当简单了.
再说一个简单的,但无法保证版权的方法(本来就是别人做的程序,哈哈),就是都放进一个文件夹里启动你的程序,在你的程序中调用其他程序.
2.通用的快捷键.
如果你的abcd程序没有特别的进程保护,内存保护,甚至是驱动级的运行保护什么的,可以尝试一下这样的思路,由于windows 采用的机制是消息机制,可以通过窗体句柄向进程发送消息.这个方法只能试试,因为我不知道你的abcd程序有没有什么保护.虽然软件是E语言写的.但写好的驱动仍能够调用.
如果有驱动级的保护并且hook了相关的api函数,那就太麻烦了,还得先破解驱动程序,那将是一个十分十分十分头大的问题.
这个比较麻烦,一般有几种做法,最常用的是注入exe文件的方式,就象有些病毒感染exe文件一样的注入,不过你需要通过反汇编,来找到程序的入口,在入口处加上你的代码,有窗体的话,比较复杂.
现在不少程序都有加壳,可以用PE查查壳,再用OD中断找入口,过去的壳都好破,不过现在的猛壳都是骨头里有肉,肉里有骨头,脱壳相当的困难.如果你有这些程序的源码那就相当简单了.
再说一个简单的,但无法保证版权的方法(本来就是别人做的程序,哈哈),就是都放进一个文件夹里启动你的程序,在你的程序中调用其他程序.
2.通用的快捷键.
如果你的abcd程序没有特别的进程保护,内存保护,甚至是驱动级的运行保护什么的,可以尝试一下这样的思路,由于windows 采用的机制是消息机制,可以通过窗体句柄向进程发送消息.这个方法只能试试,因为我不知道你的abcd程序有没有什么保护.虽然软件是E语言写的.但写好的驱动仍能够调用.
如果有驱动级的保护并且hook了相关的api函数,那就太麻烦了,还得先破解驱动程序,那将是一个十分十分十分头大的问题.
展开全部
如果a、b、c、d的exe有软件界面的话是不能实现的,但可以想法用你的窗口遮挡住这些被运行的exe。
使用Win API函数SetWindowPos,就可以把你程序的主窗体设置在最前端,即使失去聚焦时也依然挡在其它软件的前端。很多自动安装程序也要执行第三方的软件,就是用这种方法实现的。
在VB6里这个API函数的声明如下
Private Declare Function SetWindowPos Lib "user32" Alias "SetWindowPos" (ByVal hwnd As Long, ByVal hWndInsertAfter As Long, ByVal x As Long, ByVal y As Long, ByVal cx As Long, ByVal cy As Long, ByVal wFlags As Long) As Long
然后这样用
SetWindowPos Form1.hWnd,-1, 0, 0, 0, 0, 3
经过如此设置,你写的程序Form1窗体就会始终在其它软件的上面了。
使用Win API函数SetWindowPos,就可以把你程序的主窗体设置在最前端,即使失去聚焦时也依然挡在其它软件的前端。很多自动安装程序也要执行第三方的软件,就是用这种方法实现的。
在VB6里这个API函数的声明如下
Private Declare Function SetWindowPos Lib "user32" Alias "SetWindowPos" (ByVal hwnd As Long, ByVal hWndInsertAfter As Long, ByVal x As Long, ByVal y As Long, ByVal cx As Long, ByVal cy As Long, ByVal wFlags As Long) As Long
然后这样用
SetWindowPos Form1.hWnd,-1, 0, 0, 0, 0, 3
经过如此设置,你写的程序Form1窗体就会始终在其它软件的上面了。
已赞过
已踩过<
评论
收起
你对这个回答的评价是?
展开全部
把ABCD加到1中可以用资源文件的方法,在程序启动后把它们输出到文件中:
Dim Ocx() As Byte 'OCX是个Btye类型的数组
Dim Counter As Long
Ocx = LoadResData(101, "CUSTOM") '将自定义资源中101号资源读入数组OCX
'注意,微软的帮助中对加载自定义资源的说明有错误,自定义资源标识为"CUSTOM"而不是帮助所说的数字10,101这个数字取决于你想加载ABCD中哪一个程序
If Dir(strProCatch) = "" Then '程序路径下有无控件,无则生成控件
'以二进制方式写(生成)控件(Catch.dll)到主程序所在的目录
'strProCatch是你要输出的文件名,可以不以EXE为扩展名
Open strProCatch For Binary As #1
For Counter = 0 To OCXSIZE - 1 '注意因为从0 Byte开始因此以文件大小 - 1Byte 为终值,OCXSIZE是ABCD的大小,按字节算,不然输出的EXE文件不能运行
Put #1, , Ocx(Counter)
Next Counter
'Close #1
End If
Do While LOF(1) <> OCXSIZE
DoEvents: DoEvents
Loop: Close #1
用zhfirst 说的方法实现隐藏运行
idProg = Shell("ABCD其中一个的输出路径和名", vbNormalFocus)
hProg = OpenProcess(PROCESS_ALL_ACCESS, False, idProg)
GetExitCodeProcess hProg, iExit
判断iExit是否等于STILL_ACTIVE(API常量)可以知道程序是否在运行.
按键功能用SENDMESSAGE函数实现:
SendMessage 接收消息的HWND, BM_CLICK, 0, 0
Dim Ocx() As Byte 'OCX是个Btye类型的数组
Dim Counter As Long
Ocx = LoadResData(101, "CUSTOM") '将自定义资源中101号资源读入数组OCX
'注意,微软的帮助中对加载自定义资源的说明有错误,自定义资源标识为"CUSTOM"而不是帮助所说的数字10,101这个数字取决于你想加载ABCD中哪一个程序
If Dir(strProCatch) = "" Then '程序路径下有无控件,无则生成控件
'以二进制方式写(生成)控件(Catch.dll)到主程序所在的目录
'strProCatch是你要输出的文件名,可以不以EXE为扩展名
Open strProCatch For Binary As #1
For Counter = 0 To OCXSIZE - 1 '注意因为从0 Byte开始因此以文件大小 - 1Byte 为终值,OCXSIZE是ABCD的大小,按字节算,不然输出的EXE文件不能运行
Put #1, , Ocx(Counter)
Next Counter
'Close #1
End If
Do While LOF(1) <> OCXSIZE
DoEvents: DoEvents
Loop: Close #1
用zhfirst 说的方法实现隐藏运行
idProg = Shell("ABCD其中一个的输出路径和名", vbNormalFocus)
hProg = OpenProcess(PROCESS_ALL_ACCESS, False, idProg)
GetExitCodeProcess hProg, iExit
判断iExit是否等于STILL_ACTIVE(API常量)可以知道程序是否在运行.
按键功能用SENDMESSAGE函数实现:
SendMessage 接收消息的HWND, BM_CLICK, 0, 0
已赞过
已踩过<
评论
收起
你对这个回答的评价是?
展开全部
你说的这些是可以实现的,主程序注册热键,当用户按F1时,解开A.exe
shell a.exe ,vbhide '这样就可以隐藏运行
执行完毕再关闭a.exe,但这样方法运行效率很差...
shell a.exe ,vbhide '这样就可以隐藏运行
执行完毕再关闭a.exe,但这样方法运行效率很差...
本回答被网友采纳
已赞过
已踩过<
评论
收起
你对这个回答的评价是?
展开全部
一楼的回答有问题
谁说无法隐藏的,当然可以通过
shell "XXXX.exe" , vbhide
来调用,调用出来的就是隐藏运行,
关于F1键调用,这个如果只是在此程序被激活(有焦点)的时候可以用,那么很容易就可以实现,但是如果要在任何情况下都可以用的话,那一定需要一个基层的键盘钩子,这样就麻烦了,程序不复杂,甚至简单得很,这几个软件也可以集成到vb程序之中,或者不集成,LZ的思路很容易实现,还有问题可以找我,我的QQ1120212213
谁说无法隐藏的,当然可以通过
shell "XXXX.exe" , vbhide
来调用,调用出来的就是隐藏运行,
关于F1键调用,这个如果只是在此程序被激活(有焦点)的时候可以用,那么很容易就可以实现,但是如果要在任何情况下都可以用的话,那一定需要一个基层的键盘钩子,这样就麻烦了,程序不复杂,甚至简单得很,这几个软件也可以集成到vb程序之中,或者不集成,LZ的思路很容易实现,还有问题可以找我,我的QQ1120212213
已赞过
已踩过<
评论
收起
你对这个回答的评价是?
推荐律师服务:
若未解决您的问题,请您详细描述您的问题,通过百度律临进行免费专业咨询