高手指教:如何得到计算器的数据?

tccb 2003-07-01 12:26:08
我的程序调用windowsde计算器,当切换回我的程序时,如何得到计算器中的数据?
...全文
58 9 打赏 收藏 转发到动态 举报
写回复
用AI写文章
9 条回复
切换为时间正序
请发表友善的回复…
发表回复
  • 打赏
  • 举报
回复
var
Handle, ChildHandle: HWND;
clsName: pchar;
text:array[0..255] of char;
begin
getmem(clsName, 255);
Handle := FindWindow(pchar('SciCalc'), nil);
if Handle <> 0 then
begin
ChildHandle := GetWindow(Handle, GW_Child);
while ChildHandle <> 0 do
begin
GetClassName(ChildHandle, clsName, 255);
//showmessage(clsName);
if string(clsName) = 'Static' then
begin
getwindowtext(ChildHandle,text,255);
showmessage(text);
end;
ChildHandle := GetWindow(ChildHandle, GW_HWNDNEXT);
end;
end;
freemem(clsName, 255);
end;
tccb 2003-07-11
  • 打赏
  • 举报
回复
thanks...
tccb 2003-07-08
  • 打赏
  • 举报
回复
为什么用h:=getwindow(h,GW_CHILD);
如果想处理的程序有多个edit和memo等等,如何得到这些子窗口句柄?
ghostmirror 2003-07-08
  • 打赏
  • 举报
回复
......。。。。。。
procedure TForm1.Button2Click(Sender: TObject);
var
h:HWND;
num:pchar;
i:integer;
begin
h:=findWindow(pchar('SciCalc'),nil);

h:=getwindow(h,GW_CHILD);
i:=sendmessage(h,WM_GETTEXTLENGTH,0,0);
showmessage(inttostr(i)); //包括一个空格和一个小数点的长度
getmem(num,i+1);
sendmessage(h,WM_GETTEXT,i+1,integer(num));
showmessage(num);
end;

这个方法可以得到。。。
但是为什么我用getwindowtext或者发送wm_copy消息得到不了呢?奇怪~
tccb 2003-07-07
  • 打赏
  • 举报
回复
详细过程。。。
DWGZ 2003-07-01
  • 打赏
  • 举报
回复
不好意思打错,FindWindow找到计算器窗体再找到那个Edit,就了
DWGZ 2003-07-01
  • 打赏
  • 举报
回复
用FindWindows
nzh517 2003-07-01
  • 打赏
  • 举报
回复
用SPY++看了一下,那不是Edit而是Static


tccb 2003-07-01
  • 打赏
  • 举报
回复
因为没找到edit,才提问。。。

1,183

社区成员

发帖
与我相关
我的任务
社区描述
Delphi Windows SDK/API
社区管理员
  • Windows SDK/API社区
加入社区
  • 近7日
  • 近30日
  • 至今
社区公告
暂无公告

试试用AI创作助手写篇文章吧