Avatar billede martinfrost Nybegynder
15. juni 2002 - 12:02 Der er 6 kommentarer og
2 løsninger

Global Hotkeys (med API)

Jeg er interesseret i at få integreret nogle global hotkeys på min form. Det vil sige, genvejstaster der virker, selvom formen ikke er aktiv. Til det formål har jeg fundet en OCX, men den virker kun delvis efter hensigten, da den ikke kan arbejde med tallene 0-9 ved compile. Det virker fint nok ved Design-mode-compile, men ikke ved fuld compile til exe-fil. Derfor leder jeg nu efter en alternativ måde at lave det på - eksempelvis API eller lignende.

Har du et link eller måske en stump kode, der kan bruges til formålet (og det skal virke på CTRL+1, CTRL+2, CTRL+3 osv.), så vil jeg meget gerne se :-)

/Martin
Avatar billede martinfrost Nybegynder
15. juni 2002 - 12:12 #1
En forklaring på, hvorfor min OCX (MCLHotkey.ocx) kun virker ved design-mode-compile vil oxo være fuldt ud acceptabelt. Jeg kan bruge alle mine hotkeys, så længe jeg kører compilen med "Play-knappen" fra Visual Basic, men ligeså snart jeg compiler til exe, virker det ikke - ydermere får jeg fejl en "Programmet har udført ulovlig handling...", når jeg lukker exe-filen (med krydset i hjørnet af formen).

Det virker for mig lidt underligt, når det nu virker så fint inde i selve VB :-)

/ Martin
Avatar billede tjacob Juniormester
15. juni 2002 - 12:24 #2
Prøv at se her:
http://www.student.kuleuven.ac.be/~m0116986/agnet/tips/tip80.shtml

Så gælder det vel blot om at finde de rette konstanter:

CTRL = 17 = hex: 11
F1 = 112 = hex: 70

Public Const HK_CONTROLF1 = &H1170    'Control + F1

kan du bruge det?
/tjacob
Avatar billede martinfrost Nybegynder
15. juni 2002 - 13:09 #3
Tror faktisk, det virker efter hensigten. Kan du vise mig, hvordan jeg aktiverer vba.sendkeys til den aktive applikation, som erstatning for den nuværende popup af form-vindue? :-)
Avatar billede tjacob Juniormester
16. juni 2002 - 10:07 #4
Jeg kender faktisk ikke DefWindowProc, men jeg var ved at kigge på WM_konstanterne. Der er rigtig mange, og måske nogen der direkte kan bruges til de funktioner du ønsker.

Der findes f.eks. en der hedder: Public Const WM_KEYDOWN = &H100

Mon ikke den kunne bruges sammen men de to sidste parametre til at emulere et keydown i din app? (altså så sendmessage sender et keydown i DIN app.)
Så skal du blot have noget kode for de forskellige keydowns i selve applikationen. (formen?).

/tjacob
Avatar billede martinfrost Nybegynder
16. juni 2002 - 11:16 #5
Joeh, det Q nok godt la' sig gøre, men ville det ikke blive problematisk, hvis det er en hel streng, der skal afsendes?

Tror du det ville være muligt at lave det på en sådan måde, så når en hotkey-kombination blev indtastet, så blev en bestemt funktion kaldt? Altså på almindelig vis vil det være noget i denne stil:

Private Sub Hotkey_pressed(Index)
call hotkeys(Index)
End sub

/ Martin :)
Avatar billede martinfrost Nybegynder
17. juni 2002 - 13:13 #6
Af en eller anden mystisk grund, så virker min OCX-fil sådan delvis nu, så den metode bruger jeg :-) Men synes alligevel du skal have noglet point som tak for hjælpen, selvom vi ikke nåede helt frem til en færdig løsning.
Avatar billede tjacob Juniormester
17. juni 2002 - 15:06 #7
OK ;-)
Avatar billede tjacob Juniormester
17. juni 2002 - 15:07 #8
OK igen ;-)
Avatar billede Ny bruger Nybegynder

Din løsning...

Tilladte BB-code-tags: [b]fed[/b] [i]kursiv[/i] [u]understreget[/u] Web- og emailadresser omdannes automatisk til links. Der sættes "nofollow" på alle links.

Loading billede Opret Preview
Kategori
Kurser inden for grundlæggende programmering

Log ind eller opret profil

Hov!

For at kunne deltage på Computerworld Eksperten skal du være logget ind.

Det er heldigvis nemt at oprette en bruger: Det tager to minutter og du kan vælge at bruge enten e-mail, Facebook eller Google som login.

Du kan også logge ind via nedenstående tjenester