OldSchoolHack

Registrieren / Anmelden Deutsch

SendMessage funktioniert nicht


icon SendMessage funktioniert nicht #1

Anmeldungsdatum: Mai 2013

Beiträge: 15

Hallo an alle oldschoolhack-Benutzer,

ich hab heute mal wieder angefangen etwas zu coden und bin nach einiger Zeit wieder auf ein Problem gestoßen:
Undzwar möchte ich mit SendMessage einen Leertastenanschlag simulieren.
Probiert hab ich das so:
TEXT Code:
  1. SendMessage(hWnd, WM_KEYDOWN, VK_SPACE, 0);
  2. SendMessage(hWnd, WM_KEYUP, VK_SPACE, 0);
Leider scheint dies aber nicht zu funktionieren - Leertaste wird nicht an das Fenster gesendet. Ich denke dass es am letzten Parameter liegt, habe auch schon probiert in Google eine Lösung zu finden. Letztes mal hatte mir Dr_Pepper geholfen und hat mir diesen Code für VK_LCONTROL gegeben:
TEXT Code:
  1. SendMessage(hWnd, WM_KEYDOWN, VK_LCONTROL, 0x1D0000);
  2. SendMessage(hWnd, WM_KEYUP, VK_LCONTROL, 0x1D0000);
Ich würde gern wissen wie ich das ganze zum Laufen bringe, damit ich beim nächsten Mal nicht wieder direkt fragen muss

Lg speed

icon #2

Anmeldungsdatum: Mai 2011

Beiträge: 419

Benutzer-Bewertung:

199 positiv
8 negativ
Zitat von speedkill99
Ich denke dass es am letzten Parameter liegt
gz, hast deinen fehler schon gefunden.
Um Links zu sehen, musst du dich registrieren und Um Links zu sehen, musst du dich registrieren kannst du nachlesen warum das so ist.

mfg Dr_Pepper

__________________

http://abload.de/img/signaturmitoshlogos2ufb.jpg
http://abload.de/img/pfeila4uzk.png Da unten ist ein Like-Button, benutze ihn doch
Zuletzt geändert von Dr_Pepper (Di 6. Aug 2013, 22:56)

Grund: kein Grund angegeben

icon #3

Anmeldungsdatum: Mai 2011

Beiträge: 419

Benutzer-Bewertung:

199 positiv
8 negativ
Da ich nocheinmal per PM gefragt wurde:
Zitat von speedkill99
das ist mir jetzt nen bisschen peinlich aber ehrlich gesagt versteh ich das mit dem letzten parameter nicht ganz (mangelnde englisch kenntnisse). gib es eine ähnliche erklärung auch in deutsch?

Lg speed

Das es hier an Englisch-Kenntnissem mangelt bezweifel ich mal
Hier mangelt es eher an Programmierer-Kenntnissen ...

TEXT Code:
  1. lParam
  2. The repeat count, scan code, extended-key flag, context code, previous key-state flag,
  3. and transition-state flag, as shown following.
  4.  
  5. Bits  |  Meaning
  6. -----------------------------------------------------------------------------------------
  7. 0-15  | The repeat count for the current message. The value is the
  8.      | number of times the keystroke is autorepeated as a result of the user
  9.      | holding down the key. If the keystroke is held long enough,
  10.      | multiple messages are sent. However, the repeat count is not cumulative.
  11. -----------------------------------------------------------------------------------------
  12. 16-23 | The scan code. The value depends on the OEM.
  13. -----------------------------------------------------------------------------------------
  14. 24    | Indicates whether the key is an extended key,  such as the right-hand ALT
  15.      | and CTRL keys that appear on an enhanced 101- or 102-key keyboard.
  16.      | The value is 1 if it is an extended key; otherwise, it is 0.
  17. -----------------------------------------------------------------------------------------
  18. 25-28 | Reserved; do not use.
  19. -----------------------------------------------------------------------------------------
  20. 29    | The context code. The value is always 0 for a WM_KEYDOWN message.
  21. -----------------------------------------------------------------------------------------
  22. 30    | The previous key state. The value is 1 if the key is down before
  23.      | the message is sent, or it is zero if the key is up.
  24. -----------------------------------------------------------------------------------------
  25. 31    | The transition state. The value is always 0 for a WM_KEYDOWN message.

also, der lParam besteht aus 32 Bits, nun schauen wir uns mal an,
wie der lParam für VK_LCONTROL in Binär aussieht:

TEXT Code:
  1. 0000 0000 0001 1101 0000 0000 0000 0000

Ein blick in die Tabelle verrät uns, das die bits 16 - 23 der Scancode sind, also:

TEXT Code:
  1. Binär:
  2. 001 1101
  3.  
  4. Hexdezimal:
  5. 1D
  6.  
  7. Dezimal:
  8. 29

Eine liste mit den verschiedenen Scancodes gibt es Um Links zu sehen, musst du dich registrieren
Zum umrechnen benutzt du am besten den Windows Taschenrechner
in der Programmierer-Ansicht


mfg Dr_Pepper

__________________

http://abload.de/img/signaturmitoshlogos2ufb.jpg
http://abload.de/img/pfeila4uzk.png Da unten ist ein Like-Button, benutze ihn doch
Zuletzt geändert von Dr_Pepper (Mi 7. Aug 2013, 02:51)

Grund: kein Grund angegeben

icon #4

Anmeldungsdatum: Aug 2007

Beiträge: 8643

Benutzer-Bewertung:

199 positiv
33 negativ
um Tastendrücke an ein fremdes Programm zu schicken, sollte sowieso eher SendInput verwendet werden.

__________________

Hallo