VFP如何把计算器中的计算值取到我的程序中去?
计算器是windows自带的,我想把计算器中的值取到一个text中去?怎么办?
[解决办法]
wsh=CREATEOBJECT("wscript.shell")
wsh.appactivate("计算器")
wsh.sendkeys("^c%{f4}") &&送Ctrl-C与alt-F4两个键过去
thisform.text1.Value=_cliptext &&粘贴即可
vfp本身带了个计算器,更好用"
ACTIVATE WINDOW calculator
......
[解决办法]
VFP 本身带的计算器
用变量 _CALCVALUE 可以此计算器的值。
[解决办法]
Windows 自带的计算器也可以,不过要用到 API
Declare Long FindWindow In WIN32API String lpClassName,String lpWindowName &&函数返回与指定字符创相匹配的窗口类名或窗口名的最顶层窗口的窗口句柄。这个函数不会查找子窗口。Declare Long FindWindowEx In WIN32API Long hwndParent,Long hwndChildAfter,String @lpszClass,String @lpszWindow &&该函数获得一个窗口的句柄,该窗口的类名和窗口名与给定的字符串相匹配。这个函数查找子窗口,从排在给定的子窗口后面的下一个子窗口开始。在查找时不区分大小写。Declare Long SendMessage In WIN32API Long hWnd,Long Msg,Long wParam,String @IParam &&该函数将指定的消息发送到一个或多个窗口。此函数为指定的窗口调用窗口程序,直到窗口程序处理完消息再返回。而函数PostMessage不同,将一个消息寄送到一个线程的消息队列后立即返回。#Define WM_GETTEXT 0xDllHandle=FindWindow(Null,"计算器") &&“计算器”为窗口的CaptionIf llHandle>0 SendHwnd=FindWindowEx(llHandle,0,"Edit",Null) &&获得计算器编辑框句柄 If SendHwnd<>0 lcTextValue=Space(255) SendMessage(SendHwnd,WM_GETTEXT,255,@lcTextValue) &&获取编辑框内容 Messagebox(lcTextValue+Space(5),64,"得到的编辑框内容") Else Messagebox("没有找到文本框!"+Space(5),48,"信息提示") EndifElse Messagebox("没有找到 [计算器] 窗体!"+Space(5),48,"信息提示")Endif
[解决办法]
wsh=CREATEOBJECT("wscript.shell")
wsh.appactivate("计算器")
wsh.sendkeys("^c%{f4}") &&送Ctrl-C与alt-F4两个键过去
thisform.text1.Value=_cliptext &&粘贴即可
===================================================
这段代码实现不了
我改成:
wsh=createObject("WScript.shell")
wsh.Run("calc")
wsh.appactivate("计算器")
wsh.sendkeys("^c%{f4}")
thisform.text1.Value=_cliptext
能启计算器,但无法传送计算结果