加入收藏 | 设为首页 | 会员中心 | 我要投稿 李大同 (https://www.lidatong.com.cn/)- 科技、建站、经验、云计算、5G、大数据,站长网!
当前位置: 首页 > 百科 > 正文

winapi – 启动CALC.EXE并使用VB6检索值

发布时间:2020-12-17 07:19:25 所属栏目:百科 来源:网络整理
导读:编辑 只是为了澄清,没有意图将其投入生产.纯粹从编码/自动化的角度来看,并且忽略了存在用于进行计算的模块的事实,如何处理以下请求?我对VB6如何使用API??与其他程序进行交互感兴趣. 结束编辑 使用VB6,我想知道是否可以启动CALC.EXE,进行一些计算,然后将值发
编辑

只是为了澄清,没有意图将其投入生产.纯粹从编码/自动化的角度来看,并且忽略了存在用于进行计算的模块的事实,如何处理以下请求?我对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中编写自己的计算器可能更容易.

(编辑:李大同)

【声明】本站内容均来自网络,其相关言论仅代表作者个人观点,不代表本站立场。若无意侵犯到您的权利,请及时与联系站长删除相关内容!

    推荐文章
      热点阅读