Seite 2 von 2

Re: GetAsyncKeyState_(#VK_CONTROL) & 1 Funktioniert nicht ?

Verfasst: 01.01.2018 15:02
von tft
RawInput könnte ein Ansatz sen ... mal sehen ob ich was hinbekomme.

Re: GetAsyncKeyState_(#VK_CONTROL) & 1 Funktioniert nicht ?

Verfasst: 01.01.2018 15:05
von Bisonte
das ist bei DX normal. Wenn ein DX Fenster den Fokus hat, reisst es sich alles unter den Nagel. Total exklusiv.
Ist aber auch notwendig, um die höchstmögliche Ausführungsgeschwindigkeit zu ermöglichen.

Ansonsten würde DirectX nicht gebraucht werden....

Re: GetAsyncKeyState_(#VK_CONTROL) & 1 Funktioniert nicht ?

Verfasst: 18.01.2018 22:59
von Fluid Byte
Quelltext bitte, habe leider meine Kristallkugel vergessen

Re: GetAsyncKeyState_(#VK_CONTROL) & 1 Funktioniert nicht ?

Verfasst: 26.01.2018 23:17
von tft
Hallo,

ich soll hier wirklich 126345 Zeilen Code Posten ...... nicht dein ernst :-)

Gruss TFT

Re: GetAsyncKeyState_(#VK_CONTROL) & 1 Funktioniert nicht ?

Verfasst: 28.01.2018 22:05
von Fluid Byte
tft hat geschrieben:ich soll hier wirklich 126345 Zeilen Code Posten ...... nicht dein ernst :-)
Ich habe es in der Vergangenheit gesagt, sage es jetzt und werde es auch in Zukunft sagen ...

Du musst deinen Code solange kürzen bis das Problem isoliert ist und dann hier posten. Wie willst du es sonst lösen? Das andere Programme den Befehl GetAsyncKeyState() blockieren ist übrigens Schwachsinn, der Fehler liegt in deinem Code.

Re: GetAsyncKeyState_(#VK_CONTROL) & 1 Funktioniert nicht ?

Verfasst: 29.01.2018 00:44
von Fluid Byte
tft hat geschrieben:Es gibt scheinbar Programme, die ein auslesen über oben genannte Funktion blockieren.
Schwachsinn. Dann fängt jemand im System deine User32 Bibliothek ab. Dann hast du ein ganz anderes Problem.
tft hat geschrieben:Gibt es noch eine andere möglichkeit bei bekanntem Fenster Handle auf Tastentruck zu reagieren.
GetKeyState() und SetWindowsHook()

What’s the difference between GetKeyState and GetAsyncKeyState?
tft hat geschrieben:Hooks funktionieren bei besagtem Fenster auch nicht .......
Klar funktionieren Hooks, besonders LowLevel. Was mir bei dir immer wieder auffällt ist das du ohne Wissen und Belege Dinge pauschalisierst. Was noch dazu kommt ist das du fast nie Quelltext ablieferst und wir wieder die Kristallkugel bemühen müssen.
_JON_ hat geschrieben:Und &1 ist nicht ganz richtig probier mal:

Code: Alles auswählen

If (GetAsyncKeyState_(#VK_LCONTROL) & $8000)
  Debug "Pressed Left Ctrl"
EndIf
Mir scheint das du komplett ignoriert hast was _JON_ hier geschrieben hat.

Das hier hast du vorher benutzt, was kompletter Unfug ist:

Code: Alles auswählen

While(#True) 
	Debug GetAsyncKeyState_(#VK_ESCAPE) & 1 
	
 	Delay(10)
Wend
Und wenig später schreibst du das:
tft hat geschrieben:auch so funktioniert es nicht in allen Fenstern. Ich denke ich muss da einen anderen Weg gehen.
Und wieder kein Quelltext, kein Beleg, nichts. GetAsyncKeyState() funktioniert immer, dem Befehl ist scheißegal um welches Fenster es geht.
tft hat geschrieben:ja das könnte sein . Es handelt sich dabei immer um Spiele im Fenster Modus wo es nicht funktioniert.
Gibt es da eine Möglichkeit über Direct X an die Tastenanschläge zu kommen?
Ob das DirectX-Fenster sind ist ebenfalls Latte. Wie ich bereits schrieb: GetKeyState() und SetWindowsHook()

Re: GetAsyncKeyState_(#VK_CONTROL) & 1 Funktioniert nicht ?

Verfasst: 30.01.2018 00:50
von tft
Hallo,

@Fluid Byte

Ich weis nicht ob du einfach nur rumtrollen möchtest oder deine Aussage hier zu irgend einer Frust Kompensations Terrapie gehört.
Auch glaube ich nicht das du jeden Post wirklich gelesen und Verstanden hast. Aber nur weil du aus dem Englischen Forum geflogen bist musst
du deine salzige Stimmung nicht auch hier verbreiten.
Meine Frage ist längst von anständigen Leuten in diesem Forum beantwortet worden. Nachstehender Code kann nicht bei Fenstern
im DirektX Modus funktionieren solange dieses den Fokus hat. Da DirektInput dies nicht zulässt. Die benötigten Events werden nicht erzeugt.

Code: Alles auswählen

If OpenWindow(0,0,0,100,100,"Test")
  
  Repeat
    
    event = WindowEvent()
 
    If (GetAsyncKeyState_(#VK_LCONTROL) & $8000)
      Debug "Pressed Left Ctrl"
    EndIf
    
  Until event = #PB_Event_CloseWindow

EndIf
Das lässt sich ganz leicht nachvollziehen. Starte ein Game das 3D Verwendet und lass es im Fenstermodus laufen. In meinem Fall Black Dessert.
Starte obiges Programm und klicke das Fenster mit dem Game an und drücke Ctrl. Es erfolgt keine Debug Ausgabe. Es gibt nur 2 Tasten die trotzdem
Funktioniert. ALT F4 und die Welt gehört dir. Ach ja ... und verwende W10.

Aber ich will fähr sein ..... nicht alles was du geschrieben hast in Dünfiff ..... das mit dem Isolieren ist die einzige Vorgehensweise die in einem
solchen Fall helfen kann. Der Obige Code ist absolut Isoliert und funktioniert in diesem Speciellen Fall nicht.

Gruss TFT

PS : Das sind meine Gedanken zu diesem Thema und die Rechtschreibfehler kannst du behalten.

Re: GetAsyncKeyState_(#VK_CONTROL) & 1 Funktioniert nicht ?

Verfasst: 31.01.2018 01:04
von Fluid Byte
Der Kleine will spielen, gut, dann wollen wir uns mal durch deine verbale Diarrhö durchkämpfen ...

Aber erst mal eine Runde Applaus dafür dass du lauffähigen Code und den Namen der Anwendung gepostet hast. Hat nur 17 Posts gedauert, das ganze Forum ist stolz.

Bild
tft hat geschrieben:Ich weis nicht ob du einfach nur rumtrollen möchtest oder deine Aussage hier zu irgend einer Frust Kompensations Terrapie gehört.
"Terrapie", ja genau, die Erde braucht unsere Hilfe ...

Du benutzt eine Technik die gerne von Frauen angewendet wird. Wenn man eine Diskussion aufgrund von mangelnden Fakten und Argumenten zu verlieren droht baut man einen "Nebenkriegsschauplatz" auf. Man sagt dazu auch "Nebelkerzen werfen".

Ich kommentiere das nicht weiter und nehme an du warst betrunken als du das geschrieben hast. Allerdings ist dies der letzte Versuch dir zu helfen, ansonsten musst du alleine weitermachen. Bist damit ja bisher sehr gut gefahren wie man sieht.
tft hat geschrieben:Auch glaube ich nicht das du jeden Post wirklich gelesen und Verstanden hast.
Nicht ein Wort habe ich von deinem Geschwafel verstanden, deshalb frage ich ja nach. Nur deine verbalen Exkurse machen es extrem schwer dir zu folgen.
tft hat geschrieben:Aber nur weil du aus dem Englischen Forum geflogen bist musst du deine salzige Stimmung nicht auch hier verbreiten.
Nebelkerzen, siehe oben
tft hat geschrieben:Meine Frage ist längst von anständigen Leuten in diesem Forum beantwortet worden.
Gar nichts ist beantwortet, dein Problem ist nach wie vor ungelöst.
tft hat geschrieben:Nachstehender Code kann nicht bei Fenstern im DirektX Modus funktionieren solange dieses den Fokus hat. Da DirektInput dies nicht zulässt. Die benötigten Events werden nicht erzeugt.

Code: Alles auswählen

If OpenWindow(0,0,0,100,100,"Test")
  
  Repeat
    
    event = WindowEvent()
 
    If (GetAsyncKeyState_(#VK_LCONTROL) & $8000)
      Debug "Pressed Left Ctrl"
    EndIf
    
  Until event = #PB_Event_CloseWindow

EndIf
Bild

Ok, lass es mich erklären, so einfach wie menschenmöglich bzw. wie es deine Intelligenz zulässt ...

Es gibt keinen "DirectX-Modus". DirectX ist lediglich ein Überbegriff für diverse Schnittstellen die eine Anwendung benutzen kann. Wie bspw. Direct3D, DirectInput, DirectSound, DirectDraw, etc. Eine Anwendung kann alle, oder auch nur eine dieser Schnittstellen nutzen. Soweit klar?

Diese verwendeten Schnittstellen sind lokal, das bedeutet auf die Anwendung beschränkt die sie benutzt. Sie haben keinen Einfluss auf das Benutzen von GetAsyncKeyState() da dieser Befehl aus einer anderen Anwendung, Prozess, Thread aufgerufen wird.

All das, sage ich basierend auf der Annahme, das du 100% weißt das "Black Desert" DirectX-Schnittstellen, und deinem konkreten Beispiel DirectInput verwendet. Ein Spiel das circa 7 Monate alt ist und DirectInput verwendet ist extrem unwahrscheinlich. Kein Mensch benutzt heute noch DirectInput.

Zum Verständnis:

DirectInput ist nichts weiter als ein "Wraper" für die WM_KEY* Systemnachrichten was von XInput abgelöst wurde. Selbst Microsoft rät davon ab, man soll stattdessen gleich direkt die WM Nachrichten für Keyboard und Maus abfragen. Also: WM_KEYDOWN, WM_SYSKEYDOWN, etc.

Außerdem hast du immer noch nicht den Unterschied zwischen GetAsyncKeyState() und GetKeyState() begriffen. Ich habe extra das hier gepostet:

What’s the difference between GetKeyState and GetAsyncKeyState?

Falls es du immer nicht verstehst, hier in Deutsch und einfach formuliert:

http://blog.m-ri.de/index.php/2008/06/1 ... verwenden/

Zum Quelltext:

Es gibt hier dutzende Variablen bzw. Fehlerquellen. Dein mangelndes Fachwissen und ständiges Pauschalisieren tun ihr übriges.

- Woher wissen wir das dies der komplette Code ist und du nicht wieder was vergessen hast?
- Der Code funktioniert bei mir einwandfrei, getestet (Vollbild & Fenster) mit: COD MW2, COD MW3, Shadow Of Mordor und Prey
- man sollte wenn möglich GetKeyState(), und nicht GetAsyncKeyState() verwenden. Lies dir endlich mal die Artikel durch
- du benutzt kein Delay() was zu ungewollten Verhalten führen kann

Anmerkung zu Delay():

Ich habe an einem Tool gearbeitet welches per SendInput() Eingaben sendet wenn man bestimmte Maustasten drückt. Diese Abfragen können die Anwendung um die es geht einfrieren wenn sich zwischen den Abfragen kein Delay() befindet. Ich weiß das verstehst du nicht, lass es mich erklären. In deinem Code-Beispiel fragst du GetAsyncKeyState() ab, und zwar so schnell wie es dein Prozessor hergibt. Um es zu vereinfachen, es ist so als ob du "Black Desert" zweimal laufen hast. Du greifst unnötig viel Rechenleistung für sehr banale Aufgaben ab. Schon ein Delay von 1ms kann Wunder wirken und unerwünschte Nebeneffekte eliminieren.
tft hat geschrieben:Das lässt sich ganz leicht nachvollziehen. Starte ein Game das 3D Verwendet und lass es im Fenstermodus laufen. In meinem Fall Black Dessert.
Starte obiges Programm und klicke das Fenster mit dem Game an und drücke Ctrl. Es erfolgt keine Debug Ausgabe.
Um mal dich selbst zu zitieren:

"Auch glaube ich nicht das du jeden Post wirklich gelesen und Verstanden hast."

Zum Letzten mal, welches Spiel du startest und ob es im Fenster oder Vollbild läuft ist scheißegal.
tft hat geschrieben:Aber ich will fähr sein ..... nicht alles was du geschrieben hast in Dünfiff ..... das mit dem Isolieren ist die einzige Vorgehensweise die in einem
solchen Fall helfen kann. Der Obige Code ist absolut Isoliert und funktioniert in diesem Speciellen Fall nicht.
Wer kennt sie nicht die Sendung "Hart aber Fähr" .......
tft hat geschrieben:PS : Das sind meine Gedanken zu diesem Thema und die Rechtschreibfehler kannst du behalten.
Dein fehlendes Selbstbewusstsein treibt dich in die Offensive und sprichst deine Schwächen an damit du nicht mehr angreifbar bist. Eigentlich wollte ich alle 87 Rechtschreibfehler hier auflisten aber sich über deine offensichtliche Lese-Rechtschreib-Schwäche lustig zu machen ist so als wenn auf jemanden drauf knüppelt der schon am Boden liegt.

Re: GetAsyncKeyState_(#VK_CONTROL) & 1 Funktioniert nicht ?

Verfasst: 31.01.2018 13:03
von tft
Hallo,

OK ... ich bin verblüfft. Ändert aber nichts an der Situation. Das der von dir angesprochene Code in diesem Fall nicht Funktioniert. Aber ich zolle der Tatsache Respekt, das du in deinem letzten Post echt fiel Zeit und Intellekt reingesteckt hast und das Salzige minimiert hast. .......
Die Linkts habe ich mir angeschaut. Ein Thema das sehr umstritten diskutiert wurde.
Du schreibst das du es mit diversen Games ausprobiert hast ? Da ich von deinem Posts so angestachelt war, habe ich bei 3 Kollegen und meinem Son gegenproben gemacht. Es funktioniert nicht. Da der Entscheidene Teil nicht von mir stammt (MS API)habe ich auch keine Idee warum nicht. Ich habe auch nichts weggelassen. Der Gepostete Code ist der den ich zum testen verwendet habe.Wenn nur Windows Fenster Verwendung finden funktioniert der Code. Daher die Schlussfolgerung das es Grundsätzlich mit DX Fenstern nicht so funktioniert. Ich für meinen Teil weis, das meine Fähigkeiten in Sachen Programmieren beschränkt sind. Ansonsten müsste ich ja hier nicht Fragen stellen. Über deine Fähigkeiten weis ich nichts. Du selber schätzt dies scheinbar sehr hoch ein. Ich möchte dies hier damit bewenden lassen. Ausser du möchtest darauf antworten oder hast eine Idee warum es bei mir nicht funktioniert.

Gruss TFT

PS : Ich bin weder angepisst noch frustriert, nicht sauer oder gereizt, habe 2 Kinder gross gezogen und erfreuen mich meiner Hobbys. Ich bin ein
Stein ... wenn man mich in den Fluss wirft fliest das Wasser um mich herum. In diesem Sinne wünsche ich dir noch eine schöne Woche und danke für den Versuch Licht ins dunkle meiner Erkenntnis zu bringen

Re: GetAsyncKeyState_(#VK_CONTROL) & 1 Funktioniert nicht ?

Verfasst: 31.01.2018 22:17
von Fluid Byte
Willkommen auf meiner Blockliste