Problemer med PostMessage med ALT, SHIFT osv.
Hej eksperter :)Jeg er ved at udvikle et program der ved brug af PostMessages styrer et andet program. Problemet er dog, at jeg kun kan sende normalt bogstaver og tallene 0-9 som de er. Hvis jeg fx vil holde ALT nede imens, så der egentlig skal sendes ALT+5, så genkender programmet kun '5', og ignorerer ALT. Jeg har læst noget om, at det er pga. en speciel "state" som skal angives før at ALT registreres som nede. Ellers har jeg, når jeg sender tallet 1 til programmet, fundet følgende koder vha. Spy++: (indsat i VB-konstanter)
Const VK_KEY1 = &H31
Const VK_KEY1L = &H20001
Const VK_KEYUP1 = &H31
Const VK_KEYUP1L = &HC0020001
---
PostMessage hWnd, WM_KEYDOWN, VK_KEY1, VK_KEY1L
PostMessage hWnd, WM_CHAR, VK_KEY1, VK_KEY1L
PostMessage hWnd, WM_KEYUP, VK_KEYUP1, VK_KEYUP1L
Når jeg så læser i Spy++ efter at have trykket ALT+1, skal jeg umiddelbart skrive følgende: (også i VB-konstanter)
Const VK_ALT = &H12
Const VK_ALTL = &H20380001
Const VK_ALTUP = &H12
Const VK_ALTUPL = &HC0380001
Const VK_aKEY1 = &H31
Const VK_aKEY1L = &H20020001
Const VK_aKEYUP1 = &H31
Const VK_aKEYUP1L = &HE0020001
---
PostMessage hWnd, WM_SYSKEYDOWN, VK_ALT, VK_ALTL
PostMessage hWnd, WM_SYSKEYDOWN, VK_aKEY1, VK_aKEY1L
PostMessage hWnd, WM_SYSCHAR, VK_aKEY1, VK_aKEY1L
PostMessage hWnd, WM_SYSKEYUP, VK_aKEYUP1, VK_aKEYUP1L
PostMessage hWnd, WM_KEYUP, VK_ALTUP, VK_ALTUPL
Dette virker dog ikke, og der sker det samme, som hvis jeg bare sendte et tastetryk på 1. Jeg har også læst noget om, at API'en SendInput kan generere et sådan "fake" ALT-tryk, men har ikke kunnet finde nogle umiddelbare koder til at se hvordan dette kan gøres :/
Hvis der er nogen, som kan hjælpe med denne problemstilling, vil jeg blive meget glad, da dette har plaget mig i en hel del tid efterhånden :)
