AW: Button in anderer Anwendung
Lustig..
BN_CLICKED kommt erst an wenn der Button losgelassen wird Kein wunder das dein ergebnis immer 0 ist. gruss |
AW: Button in anderer Anwendung
Liste der Anhänge anzeigen (Anzahl: 4)
Habe jetzt 2 Nächte über der Sache gehockt, und bin zu der Erkenntniss gekommen
das WM_Close da schon eine Ahnung hatte. Das Control ist zwar ein Button, doch ihm fehlen einige Eigenschaften, so das man es zwar ansprechen kann aber von Ihm keine Informationen über de Status zurück bekommt. Ich habe im Anhang mal ein Paar Screenshots von Spy++, vieleicht hat ja jemand noch eine Idee wie man an den Status eines solchen Buttons herankommt. |
AW: Button in anderer Anwendung
Es wäre wichtiger, wenn du uns den Unterschied zwischen Enabled und disabled zeigst.
Ich habe aber die Vermutung, dass das so etwas wie ein SpeedButton ist, der nicht die Windows Version von Enabled/Disabled benutzt, sondern nur jeweils ein anderes Bitmap drüber blendet. Damit kann mann z.B. ungewünschte Effekte unter anderen OS-Versionen vermeiden und das Programm sieht überall gleich aus. Das Programm das ich oben verlinkt habe zeigt das normalerweise zuverlässig an. (Ist das normal, dass sich WinSpy++ aufhängt??). Vielleicht ist es auch einfacher (QAD) :twisted: einfach nur das Fenster in den Vordergrund zu holen und dann die Farbe an der Position des Buttons zu merken. |
AW: Button in anderer Anwendung
Vill. macht ihr euch das zu schwer und das Programm hat eine Programierer-Schnittstelle.
Dann könnte man an dieser Stelle ansetzen. |
AW: Button in anderer Anwendung
turboPASCAL hat Recht:
solange wir nicht wissen, wie das Programm aufgbaut ist, bzw was das für ein Programm ist können wir relativ wenig helfen. Eine Dll oder so würde das ganze stark vereinfachen PS:Ist das Programm u.U in einer .Net-Sprache entwickelt? |
AW: Button in anderer Anwendung
Ich habe gerade noch einmal mit PropEdit die Anwendung gecheckt,
da wird mir über den Compiler oder die Sprache nichts mitgeteilt. Ich glaube da weiter zumachen hat wenig Sinn allerdings würde ich gerne die Idee von WM_CLOSE aufgreifen und über die Farbe im Button den Status zu ermitteln. Leider habe ich absolut keinen Plan. Wie ermittle ich die Position des Buttons und wie komme ich an die Farbe? Gruß Jörg |
AW: Button in anderer Anwendung
Delphi-Quellcode:
k.A ob das funktioniert. im Zweifelsfall nach jedem API aufruf ein GetLastError.
var
hButton :THandle; ButtonRect :_Rect;//das ist ein c-Typ //evtl auch nur Rect Farbe : TColor;//???? bit : TBitmap;//TODO: schauen, ob Graphics.TBitmap oder Windows.Bitmap can : TCanvas; begin res:=GetWindowRect(hButton, @ButtonRect);//vllt ohne @ posx := (ButtonRect.Left + ButtonRect.Right) div 2; posy := (ButtonRect.Top + ButtonRect.Bottom) div 2; can.Handle := GetWindowDC(0); try bit := TBitmap.Create; try bit.Width := Screen.DesktopWidth; bit.Height:= Screen.DesktopHeight; bit.PixelFormat := pfDevice; BitBlt(bit.Canvas.Handle, 0, 0, Pred(Screen.DesktopWidth), Pred(Screen.DesktopHeight), can.Handle, Screen.DesktopLeft, Screen.DesktopTop, bit.Canvas.CopyMode); Farbe:=bit.Canvas.Pixels[posx,posy]//<--geändert finally bit.Free; end; finally ReleaseDC(0, can.Handle); end; end; PS: bei dem Ansatz wirst du Probleme mit mehreren Monitoren kriegen |
AW: Button in anderer Anwendung
Dank für die schnelle Hilfe. Anwendung läuft nur auf einem Bildschirm,
deshalb könnte diese Variante funktionieren. Bekomme leider einen Fehler bei: bit.Pixels! |
AW: Button in anderer Anwendung
das sollte heißen:
Delphi-Quellcode:
Bernhard
Bit.Canvas.Pixels[]
|
AW: Button in anderer Anwendung
Habe erstmal die Variante mit der Abfrage der Farbe des Buttons gewählt,
funktioniert einwandfrei. Danke für Eure Hilfe! Gruss Jörg |
Alle Zeitangaben in WEZ +1. Es ist jetzt 10:42 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