向一个外部程序的treeview句柄发送tvm_getcount,返回值是0。代码为:i:=sendmessage(Hwnd,tvm_getcount,0,0); 
        showmessage(inttostr(i))这条代码可以执行,在内部程序本身可以得到tvm_getcount的正确个数.但是,外部程序 返回值总是0。到底怎么解决呢???

解决方案 »

  1.   

      外部程序?内部程序?
      你的i定义在内部程序?然后你在外部程序showmessage(inttostr(i)));
      是这样的吗?
      如果是我猜对这样,那么只能告诉你此i非彼i,而且你在外部程序中定义的i是个全局的变量吧?
      那当然是i:=0了。
      切确的还是需要你给点代码,那样比较好。
      

  2.   

    不是这样啊,这两条语句都是在Form1中,而hwnd就是外部程序的树视图句柄。
    i:=sendmessage(Hwnd,tvm_getcount,0,0);  
    showmessage(inttostr(i))
      

  3.   

    不行啊,外部程序不处理sendmessage发过去的消息
      

  4.   

        查找句柄的句子如下:
       
       var 
       myhandle:hwnd;
       i:integer; 
       begin
        myhandle:=findwindow(nil,'xx');                       //xx是你那个外部程序窗口名称
        myhandle:=findwindowex(myhandle,0,'TTreeView',nil);   //具体我就不解释参数了
        i:=sendmessage(myhandle,tvm_getcount,0,0);             
        showmessage(inttostr(i))
       end;
       
       刚试的。可以获取。
      

  5.   

    你知道 ExTreeCtrl  是什么类吗? 我用spy++查到控件的类名是ExTreeCtrl其实我也不知道是不是树视图,但是看样子判断是树视图,
      

  6.   

      不知道,猜一下,TExTreeCtrl
      

  7.   

    我觉得ExTreeCtrl可能是自定义类,这个类不响应消息。求高人出来啊。外部程序自定义类怎么响应消息呢?
      

  8.   

      你这20分真难。呵呵
      tvm_getcount属于windows控件消息范畴,而你的却是一个自定义的类,唉,不说了。
      期待高手。