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

winapi – 启动CALC.EXE并使用VB6检索值,第1张

概述编辑 只是为了澄清,没有意图将其投入生产.纯粹从编码/自动化的角度来看,并且忽略了存在用于进行计算的模块的事实,如何处理以下请求?我对VB6如何使用API​​与其他程序进行交互感兴趣. 结束编辑 使用VB6,我想知道是否可以启动CALC.EXE,进行一些计算,然后将值发送回表单中的文本框. 下面是我目前测试的代码: 蜜蜂: Private Declare Function FindWindow L 编辑

只是为了澄清,没有意图将其投入生产.纯粹从编码/自动化的角度来看,并且忽略了存在用于进行计算的模块的事实,如何处理以下请求?我对VB6如何使用API​​与其他程序进行交互感兴趣.

结束编辑

使用VB6,我想知道是否可以启动CALC.EXE,进行一些计算,然后将值发送回表单中的文本框.

下面是我目前测试的代码:

蜜蜂:

Private Declare Function FinDWindow lib "user32" Alias "FinDWindowA" _      (ByVal lpClassname As String,ByVal lpWindowname As String) As LongPrivate Declare Function findwindowex lib "user32" Alias "findwindowexA" _    (ByVal hWnd1 As Long,ByVal hWnd2 As Long,ByVal lpsz1 As String,ByVal lpsz2 As String) As LongPrivate 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 SubPrivate 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检索值全部内容,希望文章能够帮你解决winapi – 启动CALC.EXE并使用VB6检索值所遇到的程序开发问题。

如果觉得内存溢出网站内容还不错,欢迎将内存溢出网站推荐给程序员好友。

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

原文地址: https://outofmemory.cn/langs/1236062.html

(0)
打赏 微信扫一扫 微信扫一扫 支付宝扫一扫 支付宝扫一扫
上一篇 2022-06-06
下一篇 2022-06-06

发表评论

登录后才能评论

评论列表(0条)

保存