Autor Beitrag
knuat
Hält's aus hier
Beiträge: 7



BeitragVerfasst: Mi 12.05.04 22:20 
Hi ihr!

Ich habe eine Frage...

Ich habe ein Programm, das eine Art "Listbox" mit Items enthält, und diese Items würde ich gerne in ein MEMO Feld kopieren lassen.
Alles, was ich habe, ist das Handle des PROGRAMMS, und ich weiss, dass diese "Listbox" eine "ThunderRT6ListBox" ist.

Könnt ihr mir vielleicht helfen und sagen, wie ich das anstellen könnte??


Danke für alle Antworten!


MfG.
Knut.
knuat Threadstarter
Hält's aus hier
Beiträge: 7



BeitragVerfasst: Do 13.05.04 07:38 
ausblenden Delphi-Quelltext
1:
2:
3:
4:
5:
6:
7:
8:
9:
10:
11:
12:
13:
14:
15:
16:
17:
procedure TForm1.Button1Click(Sender: TObject);
var hwnd, hwnd2: THandle;
Buffer: array [0..255of Char;

begin

  hwnd:= FindWindow(nil'Save Lines');
  if hwnd <> 0 then begin
  hwnd2:= FindWindowEx(hwnd, 0'ThunderRT6ListBox'nil);
  SendMessage(hwnd2, WM_GETTEXT, sizeof(Buffer), Integer(@Buffer));
  ShowMessage(String(Buffer));
  Memo1.Lines.Add(String(Buffer))

end else
  ShowMessage('Fee couldnt been found, pls check existance');

end;


Dann fügt er mir in das Memo und zeigt in der ShowMessage NICHTS an!
Ich habe jetzt nu rgmeerkt, dass es 2 ThunderListBoxe'en gibt, aber es steht eh in beiden was drin, also warum funzrt der Code nicht?
toms
ontopic starontopic starontopic starontopic starontopic starontopic starontopic starhalf ontopic star
Beiträge: 1099
Erhaltene Danke: 2



BeitragVerfasst: Do 13.05.04 07:48 
Hi,

Eine Listbox musst du mit der Nachricht LB_GETTEXT auslesen.
Habe dafür mal eine Funktion geschrieben:

ausblenden Delphi-Quelltext
1:
2:
3:
4:
5:
6:
7:
8:
9:
10:
11:
12:
13:
14:
function LB_GetAllItems(hWnd: Hwnd; sl: TStrings): string
var 
  RetBuffer: string
  i, x, y: Integer; 
begin 
  x := SendMessage(hWnd, LB_GETCOUNT, 00); 
  for i := 0 to x - 1 do 
  begin 
    y := SendMessage(hWnd, LB_GETTEXTLEN, i, 0); 
    SetLength(RetBuffer, y); 
    SendMessage(hWnd, LB_GETTEXT, i, lParam(PChar(RetBuffer))); 
    sl.Add(RetBuffer); 
  end
end;



ausblenden Delphi-Quelltext
1:
2:
3:
4:
5:
6:
7:
8:
9:
10:
11:
12:
13:
14:
procedure TForm1.Button1Click(Sender: TObject); 
var 
  sl: TStringList; 
  ListBox_Handle: THandle; 
begin 
  ListBox_Handle := {...}// listbox handle per , FindWindowEx suchen
  sl := TStringList.Create; 
  try 
    LB_GetAllItems(ListBox_Handle, sl); 
  finally 
    Memo1.Text := sl.Text; 
    sl.Free; 
  end
end;
knuat Threadstarter
Hält's aus hier
Beiträge: 7



BeitragVerfasst: Do 13.05.04 12:50 
Danke man, bisch meine Rettung *abknutsch* ^^