L
llfirst
Unregistered / Unconfirmed
GUEST, unregistred user!
&gt;&gt; 总而言之, 用 GetWindowWord(x, 0) 取 spy++ 的 findwindow 对话框上的一个按钮的时候出错<br>&gt;&gt; 简而言之,调用 GetWindowWord(h, 0), 有的时候会出错, 特别是, 当h是其他程序中, 由资源生成的对话框上的按钮的时候。 比如 SPY++ 里面的 Find Window 对话框上的按钮。<br><br> 测试后,没发现错误。<br>program test2;<br><br>uses<br> Forms,<br> Windows,<br> untTest2 in 'untTest2.pas' {Form1},<br> untg in 'untg.pas';<br><br>var<br> HND:Integer;<br>{$R *.res}<br>begin<br> HND:=$F03F4; // SPY++获取的句柄<br> W[0]:=GetClassWord( HND, 0 );<br> W[1]:=GetClassWord( HND, 1 );<br> W[2]:=GetWindowWord( HND, 0 );<br> W[3]:=GetWindowWord( HND, 1 );<br><br> Application.Initialize;<br> Application.CreateForm(TForm1, Form1);<br> Application.Run;<br>end.<br><br>&gt;&gt; 是不是写 SPY 的同志, 知道 GetWindowWord() 可能会出错, 所以放弃了呢? <br>SPY++用了GetWindowWord, GetClassWord,可能它考虑的是默认取整字,没有考虑cbClsExtra,cbWndExtra设为奇数字节情况(设成偶数字节SPY++可以读出),算是BUG吧。<br><br>&gt;&gt; 还有,经过这样的调用: SetClassWord(HWin, 0, $0201); SetClassWord(HWin, 1, $0302); 内存中3个字节就是依次为 1、2、3,至于为什么,自己好好想想。 而象你那个 SetClassWord(HWin, 2, Byte(3));,逻辑上就是错的,总共只有3个字节,难道你要去写第 3、4 两个字节?<br> 这是我的错误,受教。<br><br>&gt;&gt; 当然,你愿意花时间来讨论这本身是好的,还是要感谢你,不过说话之前应该多考虑考虑,看清楚了,想明白了,再开口。谢谢! <br> ^_^<br><br><br><br>