gpt4 book ai didi

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

转载 作者:行者123 更新时间:2023-12-03 22:23:09 25 4
gpt4 key购买 nike

编辑

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

关于winapi - 启动 CALC.EXE 并使用 VB6 检索值,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/3478546/

25 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com