Registriert seit: 16. Mai 2003
5 Beiträge
Delphi XE2 Professional
|
AW: Bildschirm nach bestimmten Bitmap absuchen
16. Nov 2016, 22:51
Hi,
war auf der Suche nach einem BITMAP-Vergleich und bin dabei auf diesen (etwas älteren !) Eintrag gestoßen.
Habe mir einen DLL-Source von der ImageSearchDLL besorgt und konnte das in Delphi XE2 wie folgt zum Laufen bekommen:
Bei Delphi XE2 wurde im Vergleich zu V7 gerade bei den Strings viel geändert, so dass man die externe DLL anders aufrufen muss:
Delphi-Quellcode:
function ImageSearch(aLeft: Integer; aTop: Integer; aRight: Integer; aBottom: Integer; aImageFile: PAnsiChar):
PAnsiChar; stdcall; external 'ImageSearchDLL.dll';
Aufruf (ALLE (!) Vorkommen der gesuchten Grafik in Schleife suchen):
Delphi-Quellcode:
procedure TBOT_Form.FindAllGraphics(pStartX,pStarty,pEndeX,pEndeY:integer);
var
pPosX,pPosY,pSizeX,pSizeY,pRetC : integer;
sRet : AnsiString;
pFileName : AnsiString;
sText : AnsiString;
sStringList : TStringList;
Begin
sStringList := TStringList.Create;
sStringList.Delimiter := '|';
sStringList.StrictDelimiter := true;
pFileName := '*50 z:\ImageSearch.bmp';
sText := '';
sRet := ImageSearch(pStartX, pStarty, pEndeX, pEndeY, PAnsiChar(pFileName));
while (LeftStr(sRet,1) = '1') do begin
sText := sText + sRet + #13#10;
sStringList.DelimitedText := sRet;
pRetC := StrToInt(sStringList.Strings[0]);
pPosX := StrToInt(sStringList.Strings[1]);
pPosY := StrToInt(sStringList.Strings[2]);
pSizeX := StrToInt(sStringList.Strings[3]);
pSizeY := StrToInt(sStringList.Strings[4]);
sRet := ImageSearch(pPosX+1, pPosY, pEndeX, pEndeY, PAnsiChar(pFileName)); {nächste rechts}
if LeftStr(sRet,1) = '0' then begin {kein Vorkommen mehr => links Anfangen nach unten}
sRet := ImageSearch(pStartX, pPosY+1, pEndeX, pEndeY, PAnsiChar(pFileName)); {nach rechts}
end;
end;
sStringList.Free;
memo1.Clear;
memo1.lines.Add(TimeToStr(now()) + ' Capture ' + Format(' %d x %d y ... %d x %d y',[xPosStart, yPosStart, xPosEnd, yPosEnd]));
memo1.lines.Add(sText);
Geändert von Kanne (16. Nov 2016 um 23:18 Uhr)
|
|
Zitat
|