Hallo,
ich versuche das folgnde zu realisieren :
- auf eine fremde Applikation zuzugreifen, diese Applikation hat ein TListView und wird ständig mit neuen Daten gefüllt
- mein Program soll diese Liste überwachen, und wenn einen neuen Eitrag kommt, mit einem doppelklick reagieren.
Das habe ich so gemacht :
Delphi-Quellcode:
procedure TForm1.btstartClick(Sender: TObject);
var temp : integer;
punkt: TPoint;
cursPos : TPoint;
Wnd : HWND;
sClass : array[0..99] of Char;
phonepunkt : Tpoint;
begin
temp := GetNumberOfItems;
GetWindowPosition;
punkt.X := winrect.Left + ZielLeft + ZielWidth div 2;
punkt.Y := winrect.Top + ZielTop + ZielHeigth div 2;
Punkt.x := Round(Punkt.x * (65535 / Screen.Width)) ;
Punkt.y := Round(Punkt.y * (65535 / Screen.Height)) ;
Mouse_Event(MOUSEEVENTF_ABSOLUTE or
MOUSEEVENTF_MOVE,
punkt.x, punkt.y, 0, 0) ;
while ( temp = GetNumberOfItems) do
begin end;
Mouse_Event(MOUSEEVENTF_LEFTDOWN,0,0,0,0);
Mouse_Event(MOUSEEVENTF_LEFTUP,0,0,0,0);
//KeyBd_Event(VK_UP, 0, 0, 0);
//KeyBd_Event(VK_F7, 0, 0, 0);
end;
die folgende ermittelt den ItemsAnzahl in der fremden ListView
Delphi-Quellcode:
function TForm1.GetNumberOfItems : integer;
var
i : integer;
begin
i:=SendMessage(WTadvListView, LVM_GETITEMCOUNT, 0, 0);
lbitems.Caption := inttostr(i);
result := i;
end;
Aber wenn einen neuen Eintrag kommt, reagiert die fremde Applikation auf das klick mit :
Linstenindex überschreitet das maximum (1)
und weiss nicht warum?
Wie kriege das hin?