试图获取别的程序的edit内容,代码如下:
var
  p:char;
begin
  sendmessage(123456,wm_gettext,255,p);//123456为edit句柄
  showmessage(strpas(p));
end使用单步调试,确实能看到p获取了edit的内容,但是执行showmessage却出现问题。
请问高手们,这是什么问题。
另如果使用postmessage()函数怎么获得的P的内容不一样???

解决方案 »

  1.   

    postmessage,是不等结果返回的,sendmessage等结果返回才继续执行
      

  2.   

    p只有一个字符,你却让API认为有255的长度.....没访问地址异常算运气好的了var
      p : array[0..MAXBYTE - 1] of char;
    begin
      sendmessage(handle, WM_GetText, MAXBYTE, p);
      showmessage(strpas(p));
    end;
      

  3.   

    写错了一点
    var
      p:pchar;
      

  4.   

    就算postmessage不等结果返回的,但结果都应该一样啊
      

  5.   

    先 GetMen(p,255) 最后 FreeMen(p)
      

  6.   

    要先给p分配内存~~~
    如果postmessage的话因为不等结果返回,所以当程序执行下一句的时候发出的消息可能还没得到处理,使得结果异常。postmessage之后加一句Application.ProcessMessages;就可以