AGB  ·  Datenschutz  ·  Impressum  







Anmelden
Nützliche Links
Registrieren
Zurück Delphi-PRAXiS Sprachen und Entwicklungsumgebungen Sonstige Fragen zu Delphi Delphi Bildschirm nach bestimmten Bitmap absuchen
Thema durchsuchen
Ansicht
Themen-Optionen

Bildschirm nach bestimmten Bitmap absuchen

Ein Thema von Fredyy · begonnen am 5. Okt 2009 · letzter Beitrag vom 16. Nov 2016
Antwort Antwort
Seite 1 von 2  1 2      
Benutzerbild von Fredyy
Fredyy

Registriert seit: 1. Apr 2005
Ort: Wilhelmshaven
46 Beiträge
 
Delphi 7 Personal
 
#1

Bildschirm nach bestimmten Bitmap absuchen

  Alt 5. Okt 2009, 18:14
hi,

ich suche eine Funktion, die den Desktop nach einem bestimmten Bitmap absucht und die Koordinaten zurück gibt, wo es gefunden wurde habe bis jetzt leider nur Möglichkeiten für AutoIt gefunden, nun brauche ich eine für Delphi.

Danke schon einmal für eure hilfe,

gruß,
fredyy
Frederick B.
  Mit Zitat antworten Zitat
Benutzerbild von rollstuhlfahrer
rollstuhlfahrer

Registriert seit: 1. Aug 2007
Ort: Ludwigshafen am Rhein
1.529 Beiträge
 
Delphi 7 Professional
 
#2

Re: Desktop nach bestimmten Bitmap absuchen

  Alt 5. Okt 2009, 18:26
HI,

1.) wie sieht die Möglichkeit für AutoIT aus? Vllt. kann man die ja umschreiben.
2.) 2 Schleifen und dann den Desktop systematisch absuchen.

Bernhard
Bernhard
Iliacos intra muros peccatur et extra!
  Mit Zitat antworten Zitat
Benutzerbild von Fredyy
Fredyy

Registriert seit: 1. Apr 2005
Ort: Wilhelmshaven
46 Beiträge
 
Delphi 7 Personal
 
#3

Re: Desktop nach bestimmten Bitmap absuchen

  Alt 5. Okt 2009, 18:37
Das ist die Funktion + Beschreibung und dazu wird noch eine DLL benötigt, hängt im Anhang.

Danke,
Fredyy

Code:
;===============================================================================
;
; Description:     Find the position of an image on the desktop
; Syntax:          _ImageSearchArea, _ImageSearch
; Parameter(s):    
;                  $findImage - the image to locate on the desktop
;                  $tolerance - 0 for no tolerance (0-255). Needed when colors of
;                               image differ from desktop. e.g GIF
;                  $resultPosition - Set where the returned x,y location of the image is.
;                                    1 for centre of image, 0 for top left of image
;                  $x $y - Return the x and y location of the image
;
; Return Value(s): On Success - Returns 1
;                  On Failure - Returns 0 
;
; Note: Use _ImageSearch to search the entire desktop, _ImageSearchArea to specify
;      a desktop region to search
;
;===============================================================================
Func _ImageSearch($findImage,$resultPosition,ByRef $x, ByRef $y,$tolerance)
   return _ImageSearchArea($findImage,$resultPosition,0,0,@DesktopWidth,@DesktopHeight,$x,$y,$tolerance)
EndFunc

Func _ImageSearchArea($findImage,$resultPosition,$x1,$y1,$right,$bottom,ByRef $x, ByRef $y, $tolerance)
   ;MsgBox(0,"asd","" & $x1 & " " & $y1 & " " & $right & " " & $bottom)
   if $tolerance>0 then $findImage = "*" & $tolerance & " " & $findImage
   $result = DllCall("ImageSearchDLL.dll","str","ImageSearch","int",$x1,"int",$y1,"int",$right,"int",$bottom,"str",$findImage)

   ; If error exit
    if $result[0]="0" then return 0
   
   ; Otherwise get the x,y location of the match and the size of the image to
   ; compute the centre of search
   $array = StringSplit($result[0],"|")
   
   $x=Int(Number($array[2]))
   $y=Int(Number($array[3]))
   if $resultPosition=1 then
      $x=$x + Int(Number($array[4])/2)
      $y=$y + Int(Number($array[5])/2)
   endif
   return 1
EndFunc
Angehängte Dateien
Dateityp: dll imagesearchdll_779.dll (92,0 KB, 23x aufgerufen)
Frederick B.
  Mit Zitat antworten Zitat
Benutzerbild von Matze
Matze
(Co-Admin)

Registriert seit: 7. Jul 2003
Ort: Schwabenländle
14.929 Beiträge
 
Turbo Delphi für Win32
 
#4

Re: Desktop nach bestimmten Bitmap absuchen

  Alt 5. Okt 2009, 18:44
Je nachdem, was genau in der Registry steht (evtl. der Dateiname), kannst du dir dieses Thema näher ansehen und auch Luckies Links zu seinem Tool: Windows Desktop Icons - Position auslesen/verändern.

Ob du die Koordinaten in Pixeln bekommst oder nur eine fortlaufende Nummer, die du dann umrechnen musst, kann ich dir nicht sagen.
  Mit Zitat antworten Zitat
Benutzerbild von Fredyy
Fredyy

Registriert seit: 1. Apr 2005
Ort: Wilhelmshaven
46 Beiträge
 
Delphi 7 Personal
 
#5

Re: Desktop nach bestimmten Bitmap absuchen

  Alt 5. Okt 2009, 18:47
Zitat von Matze:
Je nachdem, was genau in der Registry steht (evtl. der Dateiname), kannst du dir dieses Thema näher ansehen und auch Luckies Links zu seinem Tool: Windows Desktop Icons - Position auslesen/verändern.

Ob du die Koordinaten in Pixeln bekommst oder nur eine fortlaufende Nummer, die du dann umrechnen musst, kann ich dir nicht sagen.
sry, hatte mich da wohl etwas ungenau ausgedrückt, meine nicht nur Desktop, sondern gesamte Anzeige auf dem Bildschirm.



zwischenstand:

Suche gerade eine Möglichkeit die DLL aufzurufen, wie hier via DllCall und verstehe die Sektion mit der tolerance noch nicht wirklich..
Frederick B.
  Mit Zitat antworten Zitat
Benutzerbild von Fredyy
Fredyy

Registriert seit: 1. Apr 2005
Ort: Wilhelmshaven
46 Beiträge
 
Delphi 7 Personal
 
#6

Re: Bildschirm nach bestimmten Bitmap absuchen

  Alt 5. Okt 2009, 21:14
habe mir jetzt ne menge zum implementieren und bekomme es irgendwie nicht hin, leigt es evtl dran, dass die dll in c++ geschrieben ist?

also im source dll ist die funktion die ich brauche mit
Code:
ImageSearch(int aLeft, int aTop, int aRight, int aBottom, char *aImageFile)
definiert und genau die funktion brauche ich so in delphi, am besten ohne die riesige dll von Hand zu konvertieren

Habe nochmal den Source der DLL angehängt, evtl hilfts weiter.

danke an alle die hier mal lesen und überlegen.

gruß,
fredyy
Angehängte Dateien
Dateityp: zip imagesearchdll-source_774.zip (32,8 KB, 33x aufgerufen)
Frederick B.
  Mit Zitat antworten Zitat
Benutzerbild von rollstuhlfahrer
rollstuhlfahrer

Registriert seit: 1. Aug 2007
Ort: Ludwigshafen am Rhein
1.529 Beiträge
 
Delphi 7 Professional
 
#7

Re: Bildschirm nach bestimmten Bitmap absuchen

  Alt 6. Okt 2009, 16:46
also, wenn du die DLL benutzen willst, brauchst du sie nicht zu konvertieren. Eine DLL ist kompilierter Quelltext, der immer und jederzeit ausführbar ist, egal, wer/was die DLL aufruft.

je nach Delphi-Version sieht die Einbindung einer DLL anders aus. Guck doch mal in der Hilfe. Für D7 würde das dann heißen:

function ImageSearch(aLeft: Integer; aTop: Integer; aRight: Integer; aBottom: Integer; aImageFile: PChar): PChar; stdcall; external 'Datname.dll'; wobei ich mir beim Ergebnis nicht so sicher bin.

Bernhard
Bernhard
Iliacos intra muros peccatur et extra!
  Mit Zitat antworten Zitat
Benutzerbild von Fredyy
Fredyy

Registriert seit: 1. Apr 2005
Ort: Wilhelmshaven
46 Beiträge
 
Delphi 7 Personal
 
#8

Re: Bildschirm nach bestimmten Bitmap absuchen

  Alt 6. Okt 2009, 17:37
Super, dass scheint schonmal zu funktionieren, jedoch funktioniert die Rückgabe der Koordianten x und y noch nicht richtig, habe die Variablen Global definiert, jedoch bleiben sie leer.
Hier meine erweiterte Funktion:

Delphi-Quellcode:
function _ImageSearch(findImage: string; tolerance: Integer): Boolean;
var
  ergebnis : PChar;
begin
  if (tolerance > 0) then findImage := '*' + inttostr(tolerance) + ' ' + findImage;

  ergebnis := ImageSearch(0,0,Screen.Width,Screen.Height,PCHAR(findImage));

  if ergebnis[0] = '1then
  begin
  showmessage('found' + inttostr(x) + ' ' + inttostr(y));
  result := true;
  end
  else
  begin
  result := false
  end;

end;
Danke schon einmal für die Super Hilfe.

gruß,
Fredyy
Frederick B.
  Mit Zitat antworten Zitat
mkinzler
(Moderator)

Registriert seit: 9. Dez 2005
Ort: Heilbronn
39.861 Beiträge
 
Delphi 11 Alexandria
 
#9

Re: Bildschirm nach bestimmten Bitmap absuchen

  Alt 6. Okt 2009, 17:52
Gebe diese besser in Var/Out Parametern zurück
Markus Kinzler
  Mit Zitat antworten Zitat
Benutzerbild von Fredyy
Fredyy

Registriert seit: 1. Apr 2005
Ort: Wilhelmshaven
46 Beiträge
 
Delphi 7 Personal
 
#10

Re: Bildschirm nach bestimmten Bitmap absuchen

  Alt 6. Okt 2009, 17:59
Kannst du mir zufällig ein kleines Beispiel geben, weil so wie ich es bis jetzt gesehen habe muss ich das in die Funktionsdeklaration aus der DLL eingefügt werden, doch wie geht das genau?
Frederick B.
  Mit Zitat antworten Zitat
Antwort Antwort
Seite 1 von 2  1 2      


Forumregeln

Es ist dir nicht erlaubt, neue Themen zu verfassen.
Es ist dir nicht erlaubt, auf Beiträge zu antworten.
Es ist dir nicht erlaubt, Anhänge hochzuladen.
Es ist dir nicht erlaubt, deine Beiträge zu bearbeiten.

BB-Code ist an.
Smileys sind an.
[IMG] Code ist an.
HTML-Code ist aus.
Trackbacks are an
Pingbacks are an
Refbacks are aus

Gehe zu:

Impressum · AGB · Datenschutz · Nach oben
Alle Zeitangaben in WEZ +1. Es ist jetzt 12:38 Uhr.
Powered by vBulletin® Copyright ©2000 - 2024, Jelsoft Enterprises Ltd.
LinkBacks Enabled by vBSEO © 2011, Crawlability, Inc.
Delphi-PRAXiS (c) 2002 - 2023 by Daniel R. Wolf, 2024 by Thomas Breitkreuz