怎样才能作到更改其它程序窗口中编辑框中的内容呢
编号:QA003299
建立日期: 2000年9月4日 最后修改日期:2000年9月4日
所属类别:
violing:
本问题涉及的操作系统:中文Windows98 SE
本问题涉及的编程工具:Delphi 5.0
遇到的问题:Title: SetWindowText怎样更新编辑框的内容
我编写一个程序来更改另一个应用程序窗口Form1中的一个可读写的编辑框中的内容:
(Form1的hWnd已知为h,编辑框的hWnd为h1,mystring为PChar变量)
mystring:='TestMyString'+#0;
SetWindowText(h1,mystring);
GetWindowText(h1,dispstring);
SetForegroundWindow(h);
取得的结果dispstring和mystring的的确确是相同的,但Form1的相应编辑框的显示总是仍为原来的值。立即运行Form1,结果表明编辑框中的内容没有被改变。如果换编辑框为命令按钮却没有问题。这是为什么呢,百思不得其解。而且,如果Form1是自己本身,且编辑框是自己窗口的一个子窗口(编辑框),这样做也没有问题。怎样才能作到更改其它程序窗口中编辑框中的内容呢?请专家指教,十分感激。
回答:
这个问题比较复杂,如果那个程序窗口中的编辑框是标准的Windows控件(象Delphi和VC++中的控件),那么使用SetWindowText的确可以修改编辑框中的内容。但是如果不是Windows控件,那就很难说了。比如VB中的编辑框。如果使用你的方法运行后,如果用Spy++看,该编辑框的Caption改变了(正如你说的dispstring和mystring的的确确是相同的),但是对于VB来说Caption和文本是不同的,所以显示没有变化。如果你需要修改VB的编辑框,就要使用SendMessage发送WM_SETTEXT消息,如:
SendMessage(h, WM_SETTEXT, 0, longint(LPSTR('Annn')));
此问题由李海回答。
| |
|
|
| |
|
|