Register for your free account! | Forgot your password?

Go Back   elitepvpers > Coders Den > C/C++
You last visited: Today at 03:01

  • Please register to post and access all features, it's quick, easy and FREE!

Advertisement



[Problem]C++ - Hotkeys mit Fenster

Discussion on [Problem]C++ - Hotkeys mit Fenster within the C/C++ forum part of the Coders Den category.

Reply
 
Old   #1
 
elite*gold: 0
Join Date: Feb 2010
Posts: 28
Received Thanks: 0
[Problem]C++ - Hotkeys mit Fenster

Ich habe eine Dll, die in ein Spiel injected wird.
Die Funktion soll schauen ob das Fenster im Vordergrund zum eigenen Prozess(Spielfenster, weil injected) gehört und ob "P"(0x50) gedrückt wurde.
Code den ich dafür habe(das wird im seperaten Thread gestartet):

PHP Code:
while(1){
        
DWORD CurrentPId GetCurrentProcessId();

        
HWND hWindow GetForegroundWindow();
        
LPDWORD TargetPId;
        
GetWindowThreadProcessId(hWindow, (LPDWORD)TargetPId);

        if(
GetAsyncKeyState(0x50)){ MessageBoxW(NULL"A""A"MB_OK); }

        if(
CurrentPId == *TargetPId){ MessageBoxW(NULL"B""B"MB_OK); }

        if((
CurrentPId == *TargetPId) && (GetAsyncKeyState(0x50))){ MessageBoxW(NULL"C""C"MB_OK); }

        
Sleep(5);
    } 
Komischerweise kommt die MessageBox "A" wenn man "P" drückt schon, die MessageBoxen "B" und "C" kommen aber nie, obwohl das Spielfenster in Vordergrund ist.

Kann mir jemand vllt weiterhelfen damit das geht?
thx
chillakilla123 is offline  
Old 09/26/2011, 18:24   #2
 
link's Avatar
 
elite*gold: 1
Join Date: Jul 2005
Posts: 553
Received Thanks: 454
Code:
while(true)
{
  DWORD TargetPId, CurrentPId = GetCurrentProcessId();
  HWND hWindow = GetForegroundWindow();
  GetWindowThreadProcessId(hWindow, &TargetPId);

  if(GetAsyncKeyState('P') & 1)
    MessageBoxW(NULL, "A", "A", MB_OK);

  if(CurrentPId == TargetPId)
    MessageBoxW(NULL, "B", "B", MB_OK);

  if((CurrentPId == TargetPId) && (GetAsyncKeyState('P') & 1))
    MessageBoxW(NULL, "C", "C", MB_OK);

  Sleep(10);
}
link is offline  
Old 09/26/2011, 19:52   #3
 
elite*gold: 0
Join Date: Feb 2010
Posts: 28
Received Thanks: 0
OK thx erstmal, so gehts, aber wo lag denn jetzt der Fehler.
Du hast ja eigentlich auch nur das gleiche gemacht wie ich(DWORD mit Zeiger anstatt LPDWORD) und dieses & 1 hinter GetAsyncKeyState.
Was macht das & 1 genau, das kapier ich noch nicht.

Aber es funkt schonmal thx
chillakilla123 is offline  
Old 09/26/2011, 20:33   #4
 
link's Avatar
 
elite*gold: 1
Join Date: Jul 2005
Posts: 553
Received Thanks: 454
Wenn im Rückgabewert von GetAsyncKeyState das niedrigstwertige Bit gesetzt ist, heißt das, dass die Taste seit dem letzten GetAsyncKeyState-Aufruf gedrückt wurde. Ist für Hotkeys besser geeignet.

Dein eigentlicher Fehler war
Code:
LPDWORD TargetPId;
GetWindowThreadProcessId(hWindow, (LPDWORD)TargetPId);
Du solltest dir evtl. nochmal was zu Pointern durchlesen, weil das so keinen Sinn ergibt.
GetAsyncKeyState erwartet als zweiten Parameter eine Adresse zu einem DWORD, in welches die Prozess ID geschrieben wird, also entweder über einen Pointer (aber richtig) oder einfach
Code:
DWORD TargetPId;
GetWindowThreadProcessId(hWindow, &TargetPId);
link is offline  
Old 09/26/2011, 21:38   #5
 
elite*gold: 0
Join Date: Feb 2010
Posts: 28
Received Thanks: 0
Quote:
GetAsyncKeyState erwartet als zweiten Parameter eine Adresse zu einem DWORD
Ich dachte mir, das weil im steht:
Quote:
LPDWORD: A pointer to a DWORD.
Das es schon der Pointer zum DWORD ist und ich dann beim Vergleich den mit * rauslesen kann.
Naja, das mit dem & 1 hab ich noch nicht so ganz kapiert xD
Aber es geht erstmal
chillakilla123 is offline  
Reply


Similar Threads Similar Threads
EMT2 Problem Fenster
03/29/2011 - Metin2 - 4 Replies
Huhu Ich wollte fragen ob einer ne Ahung hat warum das Fenster von EMT2 sich nicht startet also ich kann Easymetin2 starten mich einloggen aber nichts geschiht es kommt kein Fenster mit "start" und den "Einstellungen" Ich poste es hier weil beim Sammelthread nach 5 Tagen keiner Antwortet -.- habs da auch schon hin gepostet Hoffe auf Antworten <.<
Metin 2 Fenster Problem
12/04/2010 - Metin2 - 1 Replies
Hallo ich habe ein Problem. Ich möchte Metin auf meinem Netbook spielen. Jedoch immer wenn ich es öffne sehe ich nur 1/4 des Spieles der Rest wird nicht angezeigt. Das heisst das ich auf meinem Kompleeten Bildschirm nur den rechten oberen Teil habe. Ich spiele auf Grafik 800*600
login fenster problem
10/16/2010 - Metin2 Private Server - 4 Replies
hay also neuerdings ist es so das wenn ich nen pserver clienten öffne und dann die starter exe drücke dann unten rechts das chinesische drücke das dann halt dieses kleine chinesische fenster kommt.ich klicke es weg mache nochmal auf und es kommt schon wieder und das die ganze zeit BEI JEDEM PSERVER ORDNER und jeder exe halt.das regt halt auf weil ich in keinen pserver komme geschweige denn in meinen. hoffe ihr könnt mir helfen
[HELP]Fenster problem [Monitor]
09/29/2010 - Technical Support - 4 Replies
Tach. Ich habe ein problem! Ich benutze den RPG Maker VX und wen ich ein Event erstellen will kann ich nicht auf ok klicken weil es zu tief unten ist ! Also ich kann nicht auf OK oder ÜBERNEHMEN klicken weil das fenster zu groß ist. Verkleinern geht nicht hab ich versucht . Da ist auch nur an der ecke von Fenster ein ? und ein X also kein minimieren. Ich hoffe ihr könnt mir helfen .
Problem mit einlogg Fenster in de
09/12/2010 - Metin2 - 1 Replies
habe die serverinfo.py in de geändert. ich kann den server markieren und auch den channel wenn ich mich dann aber einloggen will kann ich das nicht da wenn ich ok drücke nicht das acc daten fenster kommt Hier ein bild http://www.fotos-hochladen.net/uploads/easymetin2 uofph16b.jpg import locale def BuildServerList(orderList):



All times are GMT +1. The time now is 03:02.


Powered by vBulletin®
Copyright ©2000 - 2026, Jelsoft Enterprises Ltd.
SEO by vBSEO ©2011, Crawlability, Inc.
This site is protected by reCAPTCHA and the Google Privacy Policy and Terms of Service apply.

Support | Contact Us | FAQ | Advertising | Privacy Policy | Terms of Service | Abuse
Copyright ©2026 elitepvpers All Rights Reserved.