Vorheriges Thema anzeigen :: Nächstes Thema anzeigen |
Autor |
Nachricht |
fast hawk Senior JLI'ler

Anmeldedatum: 15.07.2005 Beiträge: 237 Wohnort: Freiburg Medaillen: Keine
|
Verfasst am: 06.07.2006, 12:58 Titel: DirectInput SetCooperativeLevel() Handle Problem |
|
|
Hi Leute
Hab jetzt wieder ein bisschen Zeit zum programmieren gefunden und bin auf ein mir schier unlösbares Problem gestoßen.
Ich will ein Programm machen was im hintergrund läuft und aufzeichnet wann der Computer benutzt(dh. Die Maus bewegt wird) und wann er einfach nur so vor sich hin läuft(dh. keine Maus bewegung). Nun bin ich soweit das es das es eigentlich funktionieren müsste doch es hat sich herausgestellt das DirectInput nicht richtig initialiesiert wird. Der Grund ist das es ein Handle benötigt(kein NULL Handle) ich haber kein Fenster hab und so auch kein Handle.
Nun meine Frage ist wie ich zu einem Desktop Handle komm oder wie ich zu einem Buffer Handle komm ohne ein Fenster zu erzeugen?? Wo ich beim letzteren nicht sicher bin ob das nicht ein Schuss nach hinten wäre.
Danke schon mal jetzt für die Antworten.
fast hawk _________________ Jetziges Projekt: The Ring War
Status: 40%
-----------------------------------
Nicht weil es schwer ist, wagen wir es nicht, sondern weil wir es nicht wagen, ist es schwer.
--
Lucius Annaeus Seneca (4)
röm. Philosoph, Dramatiker und Staatsmann |
|
Nach oben |
|
 |
Fallen JLI MVP


Alter: 41 Anmeldedatum: 08.03.2003 Beiträge: 2860 Wohnort: Münster Medaillen: 1 (mehr...)
|
Verfasst am: 06.07.2006, 13:22 Titel: |
|
|
::GetDesktopWindow()
gibt dir das Handle des Desktops zurück _________________ "I have a Core2Quad at 3.2GHz, 4GB of RAM at 1066 and an Nvidia 8800 GTS 512 on Vista64 and this game runs like ass whereas everything else I own runs like melted butter over a smokin' hot 18 year old catholic schoolgirl's arse." |
|
Nach oben |
|
 |
GreveN JLI Master

Alter: 38 Anmeldedatum: 08.01.2004 Beiträge: 901 Wohnort: Sachsen - Dresden Medaillen: Keine
|
|
Nach oben |
|
 |
Christian Rousselle Site Admin

Alter: 49 Anmeldedatum: 19.07.2002 Beiträge: 1630
Medaillen: Keine
|
Verfasst am: 06.07.2006, 13:24 Titel: |
|
|
Es gibt die Funktion GetDesktopWindow();. Das wird dir aber nicht helfen und DirectInput ist auch der falsche Ansatz. Schau dir mal Windows Hooks an - da kannst du die Maus und Tastaturnutzung besser erkennen. |
|
Nach oben |
|
 |
Fallen JLI MVP


Alter: 41 Anmeldedatum: 08.03.2003 Beiträge: 2860 Wohnort: Münster Medaillen: 1 (mehr...)
|
Verfasst am: 06.07.2006, 13:43 Titel: |
|
|
Wie sagt man so schön? 3 Dumme ein Gedanke ^^ wobei ich damit niemanden zu nahe treten möchte
Das was du da versuchst wird doch MouseCapturing genannt, schau mal hier, dort gibts zu dem was du machen möchtest einen Ansatz:
http://www.codeproject.com/gdi/mousecapture.asp _________________ "I have a Core2Quad at 3.2GHz, 4GB of RAM at 1066 and an Nvidia 8800 GTS 512 on Vista64 and this game runs like ass whereas everything else I own runs like melted butter over a smokin' hot 18 year old catholic schoolgirl's arse." |
|
Nach oben |
|
 |
fast hawk Senior JLI'ler

Anmeldedatum: 15.07.2005 Beiträge: 237 Wohnort: Freiburg Medaillen: Keine
|
Verfasst am: 06.07.2006, 20:34 Titel: |
|
|
Danke für die Antworten!
Das mit GetDesktopWindow() mag er nicht. Über MouseCapture hab ich schon einmal gegooglet und in der msdn gesucht aber nichts brauchbares gefunden. Wenn jemand material hat wär ich dankbar leider hab ich jetzt keine Zeit mehr weiter zu suchen werd das auf morgen verschieben aber langsam komm ich der Sache näher. Danke!!
Lukas _________________ Jetziges Projekt: The Ring War
Status: 40%
-----------------------------------
Nicht weil es schwer ist, wagen wir es nicht, sondern weil wir es nicht wagen, ist es schwer.
--
Lucius Annaeus Seneca (4)
röm. Philosoph, Dramatiker und Staatsmann |
|
Nach oben |
|
 |
FH Super JLI'ler
Alter: 37 Anmeldedatum: 16.10.2004 Beiträge: 438
Medaillen: Keine
|
Verfasst am: 06.07.2006, 20:52 Titel: |
|
|
Du hast die wahl zwischen der einfachen und der richtigen Lösung :
Die einfache: Du erstellst ein Fenster, das sich selbst mal eben als Hidden setzt (Parameter für ShowWindow() heißt SW_HIDE). Das nimmst du für DInput, und fertig. Ob diese Lösung gut ist, bleibt zu diskutieren...
Das, was Fallen da gepostet hat, braucht AFAIK aber auch ein Fenster... Beleiben also noch die Windows Hooks.
Also, eine simpele Google-Abfrage nach "windows hooks" später:
Ich habe zwei Tutorials gefunden, die so nach dem ersten drüberschauen beide ganz gut aussehen:
Tut von tutorials.de
Tut von joachimrohde.com
Kannst sie ja mal anlesen, aber Windows Hooks scheinen mir die saubere, wenn auch wesentlich komplexere Lösung zu sein.
Gruß
FH _________________ goto work, send your kids to school
follow fashion, act normal
walk on the pavement, watch T.V.
save for your old age, obey the law
Repeat after me: I am free |
|
Nach oben |
|
 |
fast hawk Senior JLI'ler

Anmeldedatum: 15.07.2005 Beiträge: 237 Wohnort: Freiburg Medaillen: Keine
|
Verfasst am: 09.07.2006, 07:54 Titel: |
|
|
Ok danke!
Das mit den Hooks klingt interiesant werd ich warscheinlich nehmen wenn das mir nicht zu komplex wird. Sonst nehm ich halt was anderes.
danke!!
fast hawk _________________ Jetziges Projekt: The Ring War
Status: 40%
-----------------------------------
Nicht weil es schwer ist, wagen wir es nicht, sondern weil wir es nicht wagen, ist es schwer.
--
Lucius Annaeus Seneca (4)
röm. Philosoph, Dramatiker und Staatsmann |
|
Nach oben |
|
 |
|