编辑 只是为了澄清,没有意图将其投入生产.纯粹从编码/自动化的角度来看,并且忽略了存在用于进行计算的模块的事实,如何处理以下请求?我对VB6如何使用API与其他程序进行交互感
只是为了澄清,没有意图将其投入生产.纯粹从编码/自动化的角度来看,并且忽略了存在用于进行计算的模块的事实,如何处理以下请求?我对VB6如何使用API与其他程序进行交互感兴趣.
结束编辑
使用VB6,我想知道是否可以启动CALC.EXE,进行一些计算,然后将值发送回表单中的文本框.
下面是我目前测试的代码:
蜜蜂:
Private Declare Function FindWindow Lib "user32" Alias "FindWindowA" _ (ByVal lpClassName As String, ByVal lpWindowName As String) As Long Private Declare Function FindWindowEx Lib "user32" Alias "FindWindowExA" _ (ByVal hWnd1 As Long, ByVal hWnd2 As Long, ByVal lpsz1 As String, ByVal lpsz2 As String) As Long Private Declare Function GetWindowText Lib "user32" Alias "GetWindowTextA" _ (ByVal hwnd As Long, ByVal lpString As String, ByVal cch As Long) As Long
按钮点击:
Private Sub cmdStartCalc_Click() Shell "calc.exe", vbNormalFocus SendKeys "123" End Sub Private Sub cmdRetrieveValue_Click() Dim hwnd As Long ' Gets set to 266558 when calc.exe is running, so I believe this is working hwnd = FindWindow("SciCalc", "Calculator") Dim text As String text = Space(260) Dim res As Long ' Res always returns 10 for some reason res = GetWindowText(hwnd, text, 260) txtValue.text = CStr(res) End Sub
有几件事情浮现在脑海中 – 首先,如果一个Calc.exe实例已经运行,我不确定FindWindow会将哪一个作为目标.
其次,当我的Calc.exe实例关闭时,返回Calc中的值会很好,但是我打开使用按钮来检索值.
在.NET中可能有更好的方法,但我暂时还没有进入VB6.
任何见解将不胜感激.
真的,你需要的是一些你可以调用的计算器组件吗?好像你正试图为一个简单的功能做一个糟糕的黑客攻击.在VB6中编写自己的计算器可能更容易.