aktuelles handle herausfinden
-
hallo.
wie bekomme ich den handle vom altuellen offenen fenster?
habe einen keyHook und wollte ein screenshot maker basteln.nur muss ich wissen von welchem handle(fenster der screenshot gemacht werden soll. das sit bei mir das offene fenster. nur weis ich nicht wie ich den handle kriegen soll
findwindowex, da brauche ich ja gewisse parameter aber die kenne ich ja nicht.
i hope u understand me

-
-
wo muss ich die funktion implementieren und wie rufe ich das auf?
-
wo muss ich die funktion implementieren
Weiss ich nicht, kenne dein Programm nicht
und wie rufe ich das auf?
Steht da
EnumWindows((WNDENUMPROC)ShowAllWindows, 0);
-
ja das habe ich mir auch gedacht. aber dann ist die funktion ausserhalb der klasse deklariert.
MakeScreenShot(hwnd, Image1);das muss ich aber ausführen und dazu brauche ich den handle. und Image1 ist ja bekanntlich in der FormKlasse ....
-
void __fastcall TForm1::Button1Click(TObject *Sender) { HWND hwnd; //handle herausfinden hier müßte dann der aufruf etc kommen oder so MakeScreenShot(hwnd, Image1); } //--------------------------------------------------------------------------- void __fastcall TForm1::MakeScreenShot(HWND handle, TImage* image) { TCanvas* canvas = new TCanvas(); canvas->Handle = GetWindowDC(handle); TRect Dest = Image1->ClientRect; TRect Source; GetWindowRect(handle, (LPRECT)&Source); Source = Rect(0, 0, Source.Right - Source.Left, Source.Bottom - Source.Top); image->Canvas->CopyRect(Dest, canvas, Source); delete canvas; } //---------------------------------------------------------------------------
-
Das sit nun mal mit Funktionen der WIN 32 API so
EnumWindows((WNDENUMPROC)ShowAllWindows, 0);
MakeScreenShot(Image1);DIe CallBack-Funktion (ShowAllWindows) schreibt entweder das gefundene Handle in eine globale Variable oder nutzt eine extra Funktion der Klasse (SetHandle) um das gefundene Handle in der Klasse bekannt zu machen.
-
hmm. ok. funzt.
habe ein globales hwnd window gemacht. und da wo du in deinem quelltext hast stehe://hier was damit machen habe ich geschrieben
window = hwndBOOL CALLBACK ShowAllWindows(HWND hwnd,LPARAM lParam) { char pcWinTitle[256]; if(!GetWindow(hwnd, GW_OWNER)) { GetWindowText(hwnd, pcWinTitle, 255); window = hwnd; } return true; }jetzt macht er einen screenshot vom kompletten screen

und nu
-
Mache mir eigentlich viel Mühe:
Entweder ist es nicht verständlich oder du hast nicht gelesen
Grundlage ist irgendein Teil aus dem Fenstertitel den man wissen sollte. Die Funktion GetWindowText holt den Fenstertitel, den man dann durchsuchen sollte. Das HWND wird der Funktion übergeben und steht, wenn man das richtigte Fenster gefunden hat, zur Verfügung.
Die Funktion geht alle Fenster in System durch. Für jedes Fenster wird ShowAllWindows mit den Parametern des gefundenen Fenster. Mit der Funktion GetWindowText(hwnd, pcWinTitle, 255); erhälst du den Fenstertitel. Nun muss du nur vergleichen, ob es das von dir gesuchte Fenster ist. Mit was du das vergleichen musst weiss ich nicht- kann ich auch nicht sagen, da es x-Möglichkeiten gibt einen Fenstertitel zu haben
-
nein. wir verstehen uns ncht. ich habe den fenstertitel NICHT!
dewegen will ich ja wissen wie man den kriegt
-
Es gibt in der API Funktionen die das Fenster über das Maus u.a. ermitteln musst du mal suchen. Auswendig weiss ich die nicht
-
mit Winspector kannst du die Handles und Namen auch rausfinden.
-
Und was soll ihn das nützen??
Bei jedem Neustart des Programmes erst mit dem Tool das Handle/Namen finden und dann in eine Dialogbox eingeben?
Das Handle wird vom bS jedes mal neu vergeben. Und der Name kann auch immer was anderes sein bei einen Screenshot
-
Hallo
nein die Control-Namen von kompilierten Programen beliebn immmer dieselben.
bis bald
akari
-
Ähhh, hast du den Thread gelesen??
Es geht um das herausfinden von FensterHandles/Fensternamen von fremden Programmen. Die Handles sind meines Wissen mitnichten immer gleich.
-
Hallo,
GetForegroundWindow liefert das Handle des Vordergrund befindlichen Windows. Vielleicht hilft das ja. Ansonsten kann man auch die Z-Order mit GetNextWindow durchgehen.
-
ich gehe jetzt zu mir rüber und probiere eure tipps mal aus.
vielen dank dafür, das ihr eim immer helft