Sie sind nicht angemeldet.

1

Dienstag, 22. Dezember 2009, 20:56

[C++] PostMessage funktioniert nicht

Ich hoffe mal ich bin hier richtig...
Ich habe versucht nen Programm zu schreiben, dass PinBall per PostMessage steuert. dabei bin ich auf dieses Skript gestoßen.

Quellcode

1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
#include <windows.h>
#include <iostream>
using namespace std;
int main(...)
{
HWND hWnd; //das ist der Handle für das Konsolenfenster
hWnd = FindWindow(NULL, "3D-Pinball für Windows - Space Cadet"); //Handle vom aktuellen Vordergrundfenster
if (!hWnd)
{
          cout << "Fenster net gefunden!" << endl;
          system("pause");
          return 0;
}

//Tastaturdruck simulieren
PostMessage(hWnd, WM_KEYDOWN, VkKeyScan('y'), 1);
Sleep(500);
//Taste wieder loslassen:
PostMessage(hWnd, WM_KEYUP, VkKeyScan('y'), 0);

return 0;
}

Allerdings hat das Problem noch einen kleinen Fehler: Es funktioniert nicht... (wer hätte das gedacht O.o)
mfg
@night@
Signatur "Um im Internet zu surfen brauch man eine IP. Einen IQ leider nicht..."
-Woki

Ich gebe niemanden eine positive Bewertung, der darum bettelt! :pinch:

GUI-Tutorial: Klick!

Dieser Beitrag wurde bereits 2 mal editiert, zuletzt von »@night@« (23. Dezember 2009, 12:42)


Hilfe für Kinder in Uganda

2

Dienstag, 22. Dezember 2009, 22:57

Vielleicht liegts am ü im Namen...kann mich an das selbe Problem erinnern, wos am ü lag.
Wenn nicht überprüf einfach nochmal, ob der Titel übereinstimmt...oder lad dir halt ne englisch Version von Pinball.

MfG

3

Dienstag, 22. Dezember 2009, 23:04

Jo hast du unicode oder Ansis version ? wenn unicode liegst am Ü
Signatur Wer Hilfe braucht soll fragen ;)

Farmcrawler Levelbot für World of Warcraft mehr infos Hier

4

Dienstag, 22. Dezember 2009, 23:07

ich denke mal dass ich unicode habe^^
aber welches "Ü" meint ihr 8|
wenn ich das ü zu einem ue verändere, findet das programm das fenster nicht...
es könnt aber auch daran liegen, dass sich PinBall pausiert, wenn das Fenster nicht aktiv ist :huh:
mfg
@night@
Signatur "Um im Internet zu surfen brauch man eine IP. Einen IQ leider nicht..."
-Woki

Ich gebe niemanden eine positive Bewertung, der darum bettelt! :pinch:

GUI-Tutorial: Klick!

Dieser Beitrag wurde bereits 2 mal editiert, zuletzt von »@night@« (22. Dezember 2009, 23:11)


5

Mittwoch, 23. Dezember 2009, 08:47

Hast du denn alle Ü mit UE ausgetauscht oder nur einmal dann wäre klar das er nichts findet ;)
Signatur

6

Mittwoch, 23. Dezember 2009, 10:15

es gibt nur ein Ü im Title :huh:

Quellcode

1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
#include <iostream>
#include <windows.h>

using namespace std;

int main(int argc, char *argv[])
{
    HWND hwnd;
    DWORD ID;
    //==============>
    hwnd = FindWindow(NULL, "3D-Pinball fuer Windows - Space Cadet");
    GetWindowThreadProcessId(hwnd, &ID);
    if (hwnd==NULL)
    {
                   cout << "Konnte Fenster nicht finden!" << endl;
                   system("pause");
                   return 0;
    }
    else
    {
        cout << "Fenster gefunden!" << endl;
    }
    PostMessage(hwnd, WM_KEYDOWN, VK_F1, 0);
    
}

mfg
@night@
Signatur "Um im Internet zu surfen brauch man eine IP. Einen IQ leider nicht..."
-Woki

Ich gebe niemanden eine positive Bewertung, der darum bettelt! :pinch:

GUI-Tutorial: Klick!

7

Mittwoch, 23. Dezember 2009, 22:15

Wieso benutzt du denn "PostMessage"? Nimm doch wie für so etwas üblich die "SendMessage" funktion ;')

außerdem sollte es nicht schaden vorher einmal die "SetActiveWindow" funktion aufzurufen :thumbup:
Signatur
Du möchtest Autoit lernen, aber weißt nicht wo du anfangen sollst?! : [ANFÄNGER HIER REIN] Das Erlangen von Autolt Grundwissen

8

Donnerstag, 24. Dezember 2009, 10:27

Zitat

Wieso benutzt du denn "PostMessage"? Nimm doch wie für so etwas üblich die "SendMessage" funktion ;')

weil ich das fenster auch ansteuern möchte, wenn es nicht im vordergrund ist :huh:
mfg
@night@
Signatur "Um im Internet zu surfen brauch man eine IP. Einen IQ leider nicht..."
-Woki

Ich gebe niemanden eine positive Bewertung, der darum bettelt! :pinch:

GUI-Tutorial: Klick!

9

Donnerstag, 24. Dezember 2009, 16:16

Ja, aber es muss auch aktiv sein..
Pinnball hat anscheinend extra eine schleife, die es pausiert, wenn es nicht aktiv ist... darum ist das sinnlos :P

Du müsstest also endweder pinnbals memory so verändern, dass es nicht in diese schleife geht, oder es mit SetActiveWindow und SendMessage machen :thumbup:
Signatur
Du möchtest Autoit lernen, aber weißt nicht wo du anfangen sollst?! : [ANFÄNGER HIER REIN] Das Erlangen von Autolt Grundwissen

10

Freitag, 25. Dezember 2009, 10:59

@Deathly
Ich hab das letztes mit Metin2 ausprobiert. Auch da funktionierte PostMessage nicht... Ich hab bis jetzt noch kein Programm gefunden, wo PostMessage funkt :(
mfg
@night@
Signatur "Um im Internet zu surfen brauch man eine IP. Einen IQ leider nicht..."
-Woki

Ich gebe niemanden eine positive Bewertung, der darum bettelt! :pinch:

GUI-Tutorial: Klick!

11

Samstag, 26. Dezember 2009, 23:13

Deswegen: SendMessage
Signatur
Du möchtest Autoit lernen, aber weißt nicht wo du anfangen sollst?! : [ANFÄNGER HIER REIN] Das Erlangen von Autolt Grundwissen

Ähnliche Themen

Verwendete Tags

C++, PostMessage