請問我該如何獲取一個窗體中listbox控件內的值啊?
比如我想在delphi中寫段代碼獲取一個運行程序窗體內listbox中的值,請問該怎么解決啊?

解决方案 »

  1.   

    先用FindWindow/FindWindowEx找到该ListBox的句柄
    然后给它发消息,让它告诉你
      

  2.   

    先用FindWindow/FindWindowEx拿到ListBox的句柄,之后用GetWindowtext可以拿到...
    或用
    Wm_GetText这个消息...
    SendMessage(hList,WM_GetText,256,integer(@szText[0]));
      

  3.   

    呵呵,用LB_GETTEXT消息An application sends an LB_GETTEXT message to retrieve a string from a list box. LB_GETTEXT  
    wParam = (WPARAM) index;                // item index  
    lParam = (LPARAM) (LPCTSTR) lpszBuffer; // address of buffer 
      

  4.   

    http://www.daima.com.cn/Info/106/Info35291/
    function GetListBoxText(mHandle: THandle; mStrings: TStrings): Boolean;
    var
    vItemCount: Integer;
    I: Integer;
    S: string;
    begin
    Result := False;
    if not Assigned(mStrings) then Exit;
    mStrings.BeginUpdate;
    try
    mStrings.Clear;
    vItemCount := SendMessage(mHandle, LB_GETCOUNT, 0, 0);
    for I := 0 to vItemCount - 1 do begin
    SetLength(S, SendMessage(mHandle, LB_GETTEXTLEN, I, 0));
    SendMessage(mHandle, LB_GETTEXT, I, Integer(@S[1]));
    mStrings.Add(S);
    end;
    SetLength(S, 0);
    finally
    mStrings.EndUpdate;
    end;
    Result := True;
    end; { GetListBoxText }
      

  5.   

    上面代码太麻烦,修改一下:
    procedure TForm1.Button1Click(Sender: TObject);
    var
      sl: TStringList;
    begin
      sl:= TStringList.Create;
      GetListBoxText(listbox1.Handle,sl);
      //sl就是listbox中的内容
    end;procedure GetListBoxText(mHandle: THandle;
      var sl: TStringList);
    var
      vItemCount: Integer;
      I: Integer;
      S: string;
    begin
      vItemCount := SendMessage(mHandle, LB_GETCOUNT, 0, 0);
      for I := 0 to vItemCount - 1 do
      begin
        SetLength(S, SendMessage(mHandle, LB_GETTEXTLEN, I, 0));
        SendMessage(mHandle, LB_GETTEXT, I, Integer(@S[1]));
        sl.Add(S);
      end;
    end;