Herzlich Willkommen, lieber Gast!
  Sie befinden sich hier:

  Forum » C / C++ (WinAPI, Konsole) » Mauskkordinaten global erfassen??? Hook in DLL vorhanden

Forum | Hilfe | Team | Links | Impressum | > Suche < | Mitglieder | Registrieren | Einloggen
  Quicklinks: MSDN-Online || STL || clib Reference Grundlagen || Literatur || E-Books || Zubehör || > F.A.Q. < || Downloads   

Autor Thread - Seiten: > 1 <
000
20.11.2006, 15:20 Uhr
stefan_667



Hi,

also eins vorweg, ich bin totaler Newbie im Bereich C++ /WinApi, also nicht gleich zerreissen Danke

mein Problem ist das folgende: Ich baue gerade ein Screenshot Tool, dieses shootet auch fleißig aus dem transparenten Windows Fenster (mit Regions erzeugt) und fängt quasi über einen Hook die Linke Maustaste ab. Wird diese gedrückt, wird ein Bild geschossen. Der Hook ist in einer DLL implementiert.

Nun brauch ich die Mauskkoordinaten global, um auszuschließen, dass wenn außerhalb des Fensters die Maus gedrückt wird, ein weiteres Bild geschossen wird.

Die Mausposition lokal erfassen funzt leider nicht wegen der Transparenz.

Wenn mir jemand am besten mit nem Codeauszug helfen würde, wär das super. ich nehm an das das nicht so schwer sein kann, nur ich hab im Netz nix brauchbares gefunden.

Ich nutze Visual C++ 2003 aber keine MFC

Danke schonmal an meinen Retter
Stefan
 
Profil || Private Message || Suche Download || Zitatantwort || Editieren || Löschen || IP
001
20.11.2006, 16:22 Uhr
Guybrush Threepwood
Gefürchteter Pirat
(Operator)


Hä? Nachmal von vorne
Wovon wird der Screenshoot gemacht? Von deiner Anwendung oder vom gesamten Desktop?
und wozu ist das Transparente Fenster?
 
Profil || Private Message || Suche Download || Zitatantwort || Editieren || Löschen || IP
002
20.11.2006, 16:34 Uhr
stefan_667



Hi, nein der Shot wird aus dem Fenster gemacht, quasi ist dieser der Rahmen/Grenzen des Bildes. Ich muss quasi die Aktionen unterhalb des Fensters erfassen
 
Profil || Private Message || Suche Download || Zitatantwort || Editieren || Löschen || IP
003
20.11.2006, 17:03 Uhr
Guybrush Threepwood
Gefürchteter Pirat
(Operator)


Wozu brauchst du dann einen Maushook?
 
Profil || Private Message || Suche Download || Zitatantwort || Editieren || Löschen || IP
004
21.11.2006, 09:07 Uhr
~Stefan_667
Gast


Der Maushook ist nötig um die Klickevents im Fenster darunter abzufangen, also sich unter diesem transparenten Fenster befinden. Das kann ja prinzipiell jegweilige Art von Anwendung sein (Webseite, geöffnetes Office Dokument, Spiel ...). Sobald eine Maustaste aktiv wurde, wird ein Bitmap erzeugt.

Die durch die Regions erzeugte Transparenz ist wirklich transparent, also wenn ich Screenshotfenster auf die transparente Ebene klicke, wir automatisch das darunterliegende Fenster aktiv. Dadurch wird die Funktion LRESULT CALLBACK WndProc nicht mehr aktiv und schießt mir bei WM_LEFTBUTTONDOWN kein Bild.

Folglich ich brauche einen Hook. Der reagiert aber bei jegweiligen Mausklick, daher mein Plan:
- ich hol mir die globalen Mauskoordinaten wenn ein Mauklick getätigt wurde
- ich hol die Koordinaten des Screenshotfensters wenn ein Mausklick getätigt wurde
- überprüfe ob sich die Maus innerhalb des Screenshotfensters befindet
- falls ja - schieße Bild, falls nein schieß keins


Falls du jedoch auch noch andere Möglichkeiten kennst, dann immer her. Wie gesagt ich programmier C++ erst seit ca 4 Wochen und hab auch vorher nur mit PHP gearbeitet (jaja keine Sprüche ) kenne mich also wirklich nicht wirklich aus.

Dank dir schonmal für dein Interesse an meinem Problem
Gruß Stefan
 
Profil || Private Message || Suche Download || Zitatantwort || Editieren || Löschen || IP
005
21.11.2006, 10:06 Uhr
Guybrush Threepwood
Gefürchteter Pirat
(Operator)


Also ich versteh den Sinn dahinter immer noch nicht so ganz
Dein transparentes Fenster hat das einen sichtbaren Rahmen den der User irgendwo hinschieben kann um von der Stelle einen Screenshot zu machen? Wozu soll das gut sein?

Aber du bekommst die Koordinaten des Mausevents doch in deiner Hookprocedure geliefert.
 
Profil || Private Message || Suche Download || Zitatantwort || Editieren || Löschen || IP
006
21.11.2006, 10:18 Uhr
~Stefan_667
Gast


Ich arbeite in einer Firma die Autorensoftware für E-learning bauen. Dieses Screenshot ist ein Feature.

Du startest den Screener, schiebst es über den Bereich des zu schießenden Bildes, dann klickst du quasi durch das Screenerfenster auf das Fenster darunter, machst deine Aktionen und nach jeder Mausaktion wird ein Bild geschossen in der Größe des Screenerfensters.

Wie komm ich über den Hook an die Koordinaten ? Ich hab keinen Plan

Dank Dir
 
Profil || Private Message || Suche Download || Zitatantwort || Editieren || Löschen || IP
007
21.11.2006, 10:37 Uhr
Guybrush Threepwood
Gefürchteter Pirat
(Operator)


Ah verstehe...

Na in deiner MouseProc als 3. Parameter bekommst du ein MOUSEHOOKSTRUCT übergeben und darin befindet sich eine POINT Struktur mit den Koordinaten.
 
Profil || Private Message || Suche Download || Zitatantwort || Editieren || Löschen || IP
008
21.11.2006, 11:41 Uhr
~Stefan_667
Gast


Super danke, dat is genau das was ich brauchte
 
Profil || Private Message || Suche Download || Zitatantwort || Editieren || Löschen || IP
Seiten: > 1 <     [ C / C++ (WinAPI, Konsole) ]  


ThWBoard 2.73 FloSoft-Edition
© by Paul Baecher & Felix Gonschorek (www.thwboard.de)

Anpassungen des Forums
© by Flo-Soft (www.flo-soft.de)

Sie sind Besucher: