怎么把EXE程序插入VB中然后使用CommandButton启动它

怎么把EXE程序插入VB中然后使用CommandButton启动它,第1张

使用插件功能扩展VB

摘要:本文通过实例介绍如何开发一个VB的插件来扩展VB的应用。包括如何实现插件与VB开发环境的连接,控制VB开发环境,以及简要介绍插件对象的结构。

文章内容

一、插件介绍

从结构上来看,一个VB插件实际上是一个COM组件,原则上组件可以使用支持COM的开发工具,例如Delphi、VC来编写。组件通过实现COM中的IDTExtensibility对象来建立与VB的连接。组件注册以后,当VB运行中在Add-In菜单中装载组件后,VB就会调用组件中IDTExtensibility对象中的相应方法(如在装载组件后会调用OnConnection方法)。这时整个插件就成为VB的一部分从而可以访问VB开发环境中的各种对象和资源了。

利用VB本身来编写插件是一个很好的办法,首先通过VB可以快速建立一个IDTExtensibility对象框架(当然在VB中不叫这个名称);其次VB对于整个开发环境都提供了相应的对象供插件访问和控制,而使用插件的主要目的就是通过插件来控制宿主程序;最后是调试十分的方便,可以直接运行看结果,不需要编译注册。

二、建立程序框架

首先我们来建立程序框架,以下的代码和说明都是使用Win2K+VB6中文企业版完成的,在VB英文版以及Win9X下运行通过只是程序中对于界面的说明根据不同的VB会有不同。

打开VB,点击菜单中的 文件 | 新建 项,在 新建工程 窗口中选择“外接程序” 项(在英文版中是Addin),然后点击确定按钮建立插件工程。

建立完毕后在工程列表窗口中可以看到新工程的名称为MyAddIn。其中包含两个对象,在窗体类中包含frmAddIn窗体,在设计器类中包含Connect设计器对象。VB已经为插件设立了一个基本框架,下面按F5运行插件并将VB主窗口最小化。然后再打开一个VB程序,在其中建立一个标准 Exe工程。点击菜单的 外接程序 | 外接程序管理器 项。在打开的外接程序管理器窗口的列表中可以看到其中有一个My Add-In 项,点击该项,然后将下面 加载行为(英文版中是Load Behavior) 区域中的三个复选框都选中后点击确定按钮装载插件。然后再点击“外接程序” 菜单,再点击其中新添加的 My AddIn 项。可以看到插件d出一个窗体,点击“确定”按钮可以获得VB运行的目录,点击“取消”按钮关闭窗体。

接下来再次打开外接程序管理器窗口。选中 My Add-In项,将 加载行为 区域中的三个复选框中的对勾去掉。然后回到运行插件的VB程序,点击停止按钮停止插件的执行。

回到插件工程中,我们主要来看Connect对象,打开Connect对象的代码窗口。可以看到其中包含两个对象:AddinInstance和MenuHandler。其中AddInstance是工程中实现同VB接口的对象。在程序中对应AddInstance包含两个方法:OnConnection和OnDisconnection。在这里我们称它们为方法而不是事件,是因为它们是由VB调用而不是由某个消息引发而由系统调用的。

OnConnection方法在插件装载使被调用,其中的参数Application是调用插件的VB实例对象。这个对象是一个VBE类对象。由VB传递给插件插件就可以通过Application对象访问和控制调用自己的VB实例。其中比较重要的是这一段:

If ConnectMode = ext_cm_External Then

MeShow

Else

Set mcbMenuCommandBar = AddToAddInCommandBar("AddInSample")

Set MeMenuHandler = VBInstance Events CommandBarEvents (mcbMenuCommandBar)

End If

“外接程序管理器”

是用于加载和移除集成开发环境 (IDE) 中的外接程序以及指定它们的加载行为的工具。

“外接程序管理器”

列出了在 Visual Studio 中注册的所有外接程序。

“外接程序管理器”对话框使用“外接程序管理器”

,可以:立即加载或卸载外接程序。

指定外接程序在环境启动时加载。

指定外接程序在通过命令行(如使用生成或创建 *** 作)启动环境时加载。

请使用winsock 建立连接,然后远程发送字符串 "your_path\your_exe_filenameexe", 另一端用 shell "your_path\your_exe_filenameexe" 即可执行。这个方法你要写两个软件,一个在主机运行,另一个在服务器端运行。以下是MSDN的内容

要创建一个 TCP 服务器,请按照以下步骤执行:

创建新的 Standard EXE 工程。

将缺省窗体的名称改为 frmServer。

将窗体的标题改为“TCP 服务器”。

在窗体中放入一个 Winsock 控件,并将它的名字改为 tcpServer。

在窗体上添加两个 TextBox 控件。将第一个命名为 txtSendData,第二个为 txtOutput。

为窗体添加如下的代码。

Private Sub Form_Load()

'将 LocalPort 属性设置为一个整数。

'然后调用 Listen 方法。

tcpServerLocalPort = 1001

tcpServerListen

frmClientShow '显示客户端的窗体。

End Sub

Private Sub tcpServer_ConnectionRequest _

(ByVal requestID As Long)

'检查控件的 State 属性是否为关闭的。

'如果不是,

'在接受新的连接之前先关闭此连接。

If tcpServerState <> sckClosed Then _

tcpServerClose

'接受具有 requestID 参数的

'连接。

tcpServerAccept requestID

End Sub

Private Sub txtSendData_Change()

'名为 txtSendData 的 TextBox 控件中

'包含了要发送的数据。当用户往文本框中

'键入数据时,使用 SendData 方法

'发送输入的字符串。

tcpServerSendData txtSendDataText

End Sub

Private Sub tcpServer_DataArrival _

(ByVal bytesTotal As Long)

'为进入的数据声明一个变量。

'调用 GetData 方法,并将数据赋予名为 txtOutput

'的 TextBox 的 Text 属性。

Dim strData As String

tcpServerGetData strData

txtOutputText = strData

End Sub

上面的步骤创建了一个简单的服务器应用程序。为了使它能够工作,还必须为它创建一个客户端的应用程序。

要创建 TCP 客户端,请按照以下步骤执行:

在工程中添加一个新的窗体,将其命名为 frmClient。

将窗体的标题改为“TCP Client”。

在窗体中添加一个 Winsock 控件,并将其命名为 tcpClient。

在 frmClient 中添加两个 TextBox 控件。将第一个命名为 txtSend,第二个为 txtOutput。

在窗体上放一个 CommandButton 控件,并将其命名为 cmdConnect。

将 CommandButton 控件的标题改为 Connect。

在窗体中添加如下的代码。

重点 必须将 RemoteHost 属性值修改为您的计算机的名字。

Private Sub Form_Load()

'Winsock 控件的名字为 tcpClient。

'注意:要指定远程主机,可以使用

' IP 地址(例如:"12111111"),也可以使用

'计算机的“好听的名字”如下所示。

tcpClientRemoteHost = "RemoteComputerName"

tcpClientRemotePort = 1001

End Sub

Private Sub cmdConnect_Click()

'调用 Connect 方法,初始化连接。

tcpClientConnect

End Sub

Private Sub txtSendData_Change()

tcpClientSendData txtSendText

End Sub

Private Sub tcpClient_DataArrival _

(ByVal bytesTotal As Long)

Dim strData As String

tcpClientGetData strData

txtOutputText = strData

End Sub

以上就是关于怎么把EXE程序插入VB中然后使用CommandButton启动它全部的内容,包括:怎么把EXE程序插入VB中然后使用CommandButton启动它、VB程序怎么控制IDE界面外接程序、如何用VB实现远程桌面并运行指定程序等相关内容解答,如果想了解更多相关内容,可以关注我们,你们的支持是我们更新的动力!

欢迎分享,转载请注明来源:内存溢出

原文地址: http://outofmemory.cn/zz/10630302.html

(0)
打赏 微信扫一扫 微信扫一扫 支付宝扫一扫 支付宝扫一扫
上一篇 2023-05-10
下一篇 2023-05-10

发表评论

登录后才能评论

评论列表(0条)

保存