JLI Spieleprogrammierung Foren-Übersicht JLI Spieleprogrammierung

 
 FAQFAQ   SuchenSuchen   MitgliederlisteMitgliederliste   BenutzergruppenBenutzergruppen 
 medals.php?sid=99ce18f49b7a84aa208132c68971b1d7Medaillen   RegistrierenRegistrieren   ProfilProfil   Einloggen, um private Nachrichten zu lesenEinloggen, um private Nachrichten zu lesen   LoginLogin 

Gamepad - Maus Emulator

 
Neues Thema eröffnen   Neue Antwort erstellen    JLI Spieleprogrammierung Foren-Übersicht -> Projekte
Vorheriges Thema anzeigen :: Nächstes Thema anzeigen  
Autor Nachricht
Robin
Junior JLI'ler


Alter: 30
Anmeldedatum: 29.10.2008
Beiträge: 73
Wohnort: Inneringen
Medaillen: Keine

BeitragVerfasst am: 13.03.2010, 12:21    Titel: Gamepad - Maus Emulator Antworten mit Zitat

Ich hab mir mal ein Gamepad für den PC gekauft.
Damit hab ich dann rennspiele, flugzeug spiele, snowboarden und so gespielt.
Jetzt wollte ich damit auch ego shooter spielen, hab aber gemerkt dass ich mich nicht umsehen kann und auch nicht schießen kann,
also hab ich mir einen Emulator Programmiert.

Es funktioniert alles, ich benutze jetzt meinen Rechten Stick als Maus. Nur, wenn ich das Programm starte und dann ins spiel gehe, oder es auf die leiste lege, wird die maus nicht mehr vom controller gesteuert.
______________

Ich brauche den Befehle (hab schon im internet gesucht.),
dass es auch die maus kontrolliert wenn es minimiert ist, es startet schon minimiert ( WS_MINIMIZE ), oder dass halt die Programm abläufe auch laufen, wenn es minimiert ist


GRuß Robin
Nach oben
Benutzer-Profile anzeigen Private Nachricht senden E-Mail senden Website dieses Benutzers besuchen
Jonathan_Klein
Living Legend


Alter: 36
Anmeldedatum: 17.02.2003
Beiträge: 3431
Wohnort: Siegerland
Medaillen: Keine

BeitragVerfasst am: 13.03.2010, 14:03    Titel: Antworten mit Zitat

Bilder, Downloads oder Fragen?
Irgendwie hat der erste Eintrag etwas von einer Endgültigkeit, auf die man nicht mehr antworten muss. Das ist zumindest komisch, denn in einem Forum will doch jeder irgendwelche blöden Kommentare abgeben.

Es wäre z.B. nett zu wissen, wie du das ganze umgesetzt hast und vielleicht einen Download bereit zu stellen, damit man das ganze mal testen kann.
_________________
https://jonathank.de/games/
Nach oben
Benutzer-Profile anzeigen Private Nachricht senden E-Mail senden Website dieses Benutzers besuchen
AFE-GmdG
JLI MVP
JLI MVP


Alter: 44
Anmeldedatum: 19.07.2002
Beiträge: 1374
Wohnort: Irgendwo im Universum...
Medaillen: Keine

BeitragVerfasst am: 13.03.2010, 14:21    Titel: Antworten mit Zitat

Viele Spiele verwenden DirectX, um die geräte anzusprechen. Dein Emulator wird vermutlich die WindowsMessages versenden. Leider (oder auch nicht leider) übergeht DirectX die WindowsMessages - deshalb wird dein Programm nicht so funktionieren, wie du willst.
_________________
CPP:
float o=0.075,h=1.5,T,r,O,l,I;int _,L=80,s=3200;main(){for(;s%L||
(h-=o,T= -2),s;4 -(r=O*O)<(l=I*I)|++ _==L&&write(1,(--s%L?_<(L)?--_
%6:6:7)+\"World! \\n\",1)&&(O=I=l=_=r=0,T+=o /2))O=I*2*O+h,I=l+T-r;}
Nach oben
Benutzer-Profile anzeigen Private Nachricht senden E-Mail senden Website dieses Benutzers besuchen
Robin
Junior JLI'ler


Alter: 30
Anmeldedatum: 29.10.2008
Beiträge: 73
Wohnort: Inneringen
Medaillen: Keine

BeitragVerfasst am: 13.03.2010, 15:27    Titel: Antworten mit Zitat

doch ich frag da was und zwar

Zitat:
Ich brauche den Befehle (hab schon im internet gesucht.),
dass es auch die maus kontrolliert wenn es minimiert ist, es startet schon minimiert ( WS_MINIMIZE ), oder dass halt die Programm abläufe auch laufen, wenn es minimiert ist


das davor ist vorgeschichte, deshalb ist da auch sowas
________

(so.. jetzt als frage)

Kennt jemand ein befehl, dass es die abläufe im programm weiterführt, auch wenn diese Minimiert ist ???


(denn wenn ich ich das programm minimiere, steuert der controller nicht mehr die maus)

zu AFE-GmdG:

ja kann sein, aber ich hab noch kein directx ausgeführt, sobald ich außerhalb des fensters auf den desktop klicke oder ich das programm minimiere steuert der controller nicht mehr die maus

GRuß Robin
Nach oben
Benutzer-Profile anzeigen Private Nachricht senden E-Mail senden Website dieses Benutzers besuchen
Robin
Junior JLI'ler


Alter: 30
Anmeldedatum: 29.10.2008
Beiträge: 73
Wohnort: Inneringen
Medaillen: Keine

BeitragVerfasst am: 13.03.2010, 16:09    Titel: Antworten mit Zitat

ach ja, ich kann mit meinem gamepad die linke und rechte maustaste drücken

hier der code, falls jemand das auch mal braucht:
CPP:
mouse_event(MOUSEEVENTF_LEFTDOWN, 0, 0, 0, 0);
mouse_event(MOUSEEVENTF_LEFTUP, 0, 0, 0, 0);


jedenfalls ich brauch noch befehl für das drehen des maus rads, und klicken des mausrads.
odeer weiß jemand en link wo sowas steht.. (hab bis jetzt noch nix gefunden)

GRuß Robin
Nach oben
Benutzer-Profile anzeigen Private Nachricht senden E-Mail senden Website dieses Benutzers besuchen
Robin
Junior JLI'ler


Alter: 30
Anmeldedatum: 29.10.2008
Beiträge: 73
Wohnort: Inneringen
Medaillen: Keine

BeitragVerfasst am: 15.03.2010, 19:39    Titel: Antworten mit Zitat

shit, es scheint so, als ob echt niemand weiß wie ich das lösen soll, hier das Programm bis jetzt (EDIT: Neuer funktionierender link) Gamepad-Mouse

Der rechte Stick vom Gamepad benutzt man als maus und L1 und L2 als linke und rechte maustaste, aber ihr könnt sehen, wenn man außerhalb des fensters klickt, könnt ihr die maus nicht mehr steuern

GRuß Robin


Zuletzt bearbeitet von Robin am 28.03.2010, 12:51, insgesamt einmal bearbeitet
Nach oben
Benutzer-Profile anzeigen Private Nachricht senden E-Mail senden Website dieses Benutzers besuchen
Fallen
JLI MVP
JLI MVP


Alter: 39
Anmeldedatum: 08.03.2003
Beiträge: 2860
Wohnort: Münster
Medaillen: 1 (mehr...)

BeitragVerfasst am: 16.03.2010, 21:21    Titel: Antworten mit Zitat

Howdi,

hast du ein par Beispiele wie genau du es im Quellcode machst? Was meine werten Vorgänger gesagt haben stimmt so nämlich schon. Nur um zu wissen was genau bei dir nicht funktioniert brauchen wir entweder ein par Codeschnipsel oder genauere Erklärungen wie es intern abläuft.

Was AFE-GmdG sagte solltest du auch beherzigen, viele Spiele verwenden DirectInput und fangen die Signale direkt von dem Controler ab (Was auch die maus selbst sein kann). Ohne das du dich direkt dazwischen klinkst wird dein Ansatz vermutlich nicht funktionieren. Es IST möglich, aber auch schwer.

Also liefere mehr Informationen und wir liefern dir mehr Antworten.

mfg Mark

Edit:

Ich sehe grade deinen letzten Post etwas genauer, sry. Du empfängst nur Befehle wenn deine Anwendung den Focus hat, lese dich mal in folgende WinAPI Funktion ein:

SetWindowsHookEx

Das sollte wenn du es richtig anwendest (und das ist anfangs nicht einfach) dafür sorgen das ALLE anwendungen für dich den fokus haben können und dennoch alles Funktioniert. Das problem mit DirectInput wirst du damit aber immer noch nicht beseitigen können.
_________________
"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
Benutzer-Profile anzeigen Private Nachricht senden E-Mail senden Website dieses Benutzers besuchen
PeaceKiller
JLI Master


Alter: 35
Anmeldedatum: 28.11.2002
Beiträge: 970

Medaillen: Keine

BeitragVerfasst am: 18.03.2010, 00:50    Titel: Antworten mit Zitat

Verwenden aktuelle Spiele nicht überhaupt keine DirectInput mehr, sondern sollen ganz normal die Messages abfangen? AFAIK gibts da ein paar Empfehlungen im DX SDK.
_________________
»If the automobile had followed the same development cycle as the computer, a Rolls-Royce would today cost $100, get a million miles per gallon, and explode once a year, killing everyone inside.«
– Robert X. Cringely, InfoWorld magazine
Nach oben
Benutzer-Profile anzeigen Private Nachricht senden Website dieses Benutzers besuchen
AFE-GmdG
JLI MVP
JLI MVP


Alter: 44
Anmeldedatum: 19.07.2002
Beiträge: 1374
Wohnort: Irgendwo im Universum...
Medaillen: Keine

BeitragVerfasst am: 18.03.2010, 06:38    Titel: Antworten mit Zitat

PeaceKiller hat Folgendes geschrieben:
Verwenden aktuelle Spiele nicht überhaupt keine DirectInput mehr, sondern sollen ganz normal die Messages abfangen? AFAIK gibts da ein paar Empfehlungen im DX SDK.
Irgendwie fehlt in dem Satz die Grammatik...
Aber das kann ich mir nicht so recht vorstellen, zumindest wenn das Game mehr als ne Maus verwendet - und selbst dann ist es zweifelhaft. Von dieser "Empfehlung" habe ich jedoch noch nichts gehört oder gelesen.
_________________
CPP:
float o=0.075,h=1.5,T,r,O,l,I;int _,L=80,s=3200;main(){for(;s%L||
(h-=o,T= -2),s;4 -(r=O*O)<(l=I*I)|++ _==L&&write(1,(--s%L?_<(L)?--_
%6:6:7)+\"World! \\n\",1)&&(O=I=l=_=r=0,T+=o /2))O=I*2*O+h,I=l+T-r;}
Nach oben
Benutzer-Profile anzeigen Private Nachricht senden E-Mail senden Website dieses Benutzers besuchen
=]Mid[=]Night[=
Super JLI'ler



Anmeldedatum: 20.11.2002
Beiträge: 380
Wohnort: Aachen
Medaillen: Keine

BeitragVerfasst am: 18.03.2010, 11:41    Titel: Antworten mit Zitat

Zitat:

DirectInput is a set of API calls that abstracts input devices on the system. Internally, DirectInput creates a second thread to read WM_INPUT data, and using the DirectInput APIs will add more overhead than simply reading WM_INPUT directly. DirectInput is only useful for reading data from DirectInput joysticks; however, if you only need to support the Xbox 360 controller for Windows, then use XInput instead. Overall, using DirectInput offers no advantages when reading data from mouse or keyboard devices, and the use of DirectInput in these scenarios is discouraged.

http://msdn.microsoft.com/en-us/library/ee418864%28VS.85%29.aspx
Nach oben
Benutzer-Profile anzeigen Private Nachricht senden
AFE-GmdG
JLI MVP
JLI MVP


Alter: 44
Anmeldedatum: 19.07.2002
Beiträge: 1374
Wohnort: Irgendwo im Universum...
Medaillen: Keine

BeitragVerfasst am: 19.03.2010, 10:59    Titel: Antworten mit Zitat

Nice - wusste ich noch nicht...
_________________
CPP:
float o=0.075,h=1.5,T,r,O,l,I;int _,L=80,s=3200;main(){for(;s%L||
(h-=o,T= -2),s;4 -(r=O*O)<(l=I*I)|++ _==L&&write(1,(--s%L?_<(L)?--_
%6:6:7)+\"World! \\n\",1)&&(O=I=l=_=r=0,T+=o /2))O=I*2*O+h,I=l+T-r;}
Nach oben
Benutzer-Profile anzeigen Private Nachricht senden E-Mail senden Website dieses Benutzers besuchen
Robin
Junior JLI'ler


Alter: 30
Anmeldedatum: 29.10.2008
Beiträge: 73
Wohnort: Inneringen
Medaillen: Keine

BeitragVerfasst am: 20.03.2010, 16:22    Titel: Antworten mit Zitat

Um das mit DirectX mach ich mir später sorgen,
ich will jetzt erst mal hinbekommen, dass es auch so geht, ohne dass ich ein Spiel geöffnet habe.
Das muss doch eig. ein simpler Befehl sein, dass es die abläufe im programm auch weiterführt, auch wenn es minimiert ist,
z.B. Firefox, wenn ich das Download fenster minimiere, downloadet es ja auch weiter.

Ach ja, ich benutz DirectInput um die Controller daten zu holen. Und SetCursorPos(X, Y); um die Maus zu steuern.

GRuß Robin
Nach oben
Benutzer-Profile anzeigen Private Nachricht senden E-Mail senden Website dieses Benutzers besuchen
AFE-GmdG
JLI MVP
JLI MVP


Alter: 44
Anmeldedatum: 19.07.2002
Beiträge: 1374
Wohnort: Irgendwo im Universum...
Medaillen: Keine

BeitragVerfasst am: 21.03.2010, 00:26    Titel: Antworten mit Zitat

Du musst den Controller in den Fensterunabhängigen, exclusiven Modus versetzen, damit du auch Signale enthält, wenn es (das Fenster) minimiert ist. Allerdings weiss ich nicht, ob du diesen Modus setzen darfst, zumindest bei der Maus ist dieser Modus aus Sicherheitsgründen verboten.
_________________
CPP:
float o=0.075,h=1.5,T,r,O,l,I;int _,L=80,s=3200;main(){for(;s%L||
(h-=o,T= -2),s;4 -(r=O*O)<(l=I*I)|++ _==L&&write(1,(--s%L?_<(L)?--_
%6:6:7)+\"World! \\n\",1)&&(O=I=l=_=r=0,T+=o /2))O=I*2*O+h,I=l+T-r;}
Nach oben
Benutzer-Profile anzeigen Private Nachricht senden E-Mail senden Website dieses Benutzers besuchen
Robin
Junior JLI'ler


Alter: 30
Anmeldedatum: 29.10.2008
Beiträge: 73
Wohnort: Inneringen
Medaillen: Keine

BeitragVerfasst am: 23.03.2010, 16:09    Titel: Antworten mit Zitat

shit...tja, dann lass ichs eben
Nach oben
Benutzer-Profile anzeigen Private Nachricht senden E-Mail senden Website dieses Benutzers besuchen
Robin
Junior JLI'ler


Alter: 30
Anmeldedatum: 29.10.2008
Beiträge: 73
Wohnort: Inneringen
Medaillen: Keine

BeitragVerfasst am: 28.03.2010, 12:40    Titel: FERTIG !!! Antworten mit Zitat

Very Happy Ich habs hinbekommen, ich musste den Befehl andern:
CPP:
lpDIJoystick->SetCooperativeLevel(hWnd, DISCL_FOREGROUND | DISCL_EXCLUSIVE


einfach statt DISCL_FOREGROUND das benutzen: DISCL_BACKGROUND
Weiteres hier: KLICK

Somit wäre der Emulator fertig.

Ihr könnt ihn hier Downloaden.

ps: es bigt zwar noch eine kleinigkeit die noch gemacht werden müsste (mit den Maustasten) aber sonst ist es funktionsfähig.

GRuß Robin
Nach oben
Benutzer-Profile anzeigen Private Nachricht senden E-Mail senden Website dieses Benutzers besuchen
Beiträge der letzten Zeit anzeigen:   
Neues Thema eröffnen   Neue Antwort erstellen    JLI Spieleprogrammierung Foren-Übersicht -> Projekte Alle Zeiten sind GMT
Seite 1 von 1

 
Gehe zu:  
Du kannst keine Beiträge in dieses Forum schreiben.
Du kannst auf Beiträge in diesem Forum nicht antworten.
Du kannst deine Beiträge in diesem Forum nicht bearbeiten.
Du kannst deine Beiträge in diesem Forum nicht löschen.
Du kannst an Umfragen in diesem Forum nicht mitmachen.


Powered by phpBB © 2001, 2005 phpBB Group
Deutsche Übersetzung von phpBB.de

Impressum