Avatar billede simon_jacobsen Nybegynder
08. oktober 2001 - 13:36 Der er 6 kommentarer og
1 løsning

knap funktion ?

hvordan gør man sådan at ens program \"popper up\" når der bliver trykket på F12, jeg ved godt man for programmet til at gøre noget når der bliver trykket på en knap, men ikke når programmet ikke er aktivt.
på forhånd tak :)
Avatar billede razersedge Nybegynder
08. oktober 2001 - 16:10 #1
Det er jeg ret sikker på ikke er muligt... Ellers skal du have et andet lille program til at ligge i baggunden (usynligt) som kan opfange tastetryk og derefter starte dit program.. Eller noget lignende
Avatar billede simon_jacobsen Nybegynder
08. oktober 2001 - 16:28 #2
det skal ikke være et andet progra, der skal gøre det.
kan det ikke lade sig gøre ?
Avatar billede kaffe Nybegynder
08. oktober 2001 - 18:14 #3
Måske er det dette du søger:

Programmet skal være startet, men skal ikke have fokus. Når du trykker F12 popper det op.

I din form:
Private Sub Form_Load()
Me.WindowState = vbMinimized
\'Let windows know what hotkey you want for
\'your app, setting of lParam has no effect
\'erg& = SendMessage(Me.hwnd, WM_SETHOTKEY, HK_ALTZ, 0)
erg& = SendMessage(Me.hwnd, WM_SETHOTKEY, HK_F12, 0)
\'Check if succesfull
If erg& <> 1 Then
MsgBox \"You need another hotkey\", vbOKOnly, \"Error\"
End If

\'Tell windows what it should do, when the hotkey
\'is pressed -> show the window!
\'The setting of wParam and lParam has no effect

erg& = DefWindowProc(Me.hwnd, WM_SHOWWINDOW, 0, 0)
End Sub

I et modul:

Option Explicit

Declare Function SendMessage Lib \"user32\" Alias _
\"SendMessageA\" (ByVal hwnd As Long, _
ByVal wMsg As Long, ByVal wParam As Long, _
lParam As Long) As Long

Declare Function DefWindowProc Lib \"user32\" _
Alias \"DefWindowProcA\" (ByVal hwnd As Long, _
ByVal wMsg As Long, ByVal wParam As Long, _
ByVal lParam As Long) As Long

Public Const WM_SETHOTKEY = &H32
Public Const WM_SHOWWINDOW = &H18
Public Const HK_SHIFTA = &H141 \'Shift + A
Public Const HK_SHIFTB = &H142 \'Shift * B
Public Const HK_CONTROLA = &H241 \'Control + A
Public Const HK_ALTZ = &H45A
Public Const HK_F12 = 123 \' (F12)

\'The value of the key-combination has to
\'declared in lowbyte/highbyte-format

\'That means as a hex-number: the last two
\'characters specify the lowbyte (e.g.: 41 = a),
\'the first the highbyte (e.g.: 01 = 1 = Shift)

Avatar billede simon_jacobsen Nybegynder
08. oktober 2001 - 18:46 #4
hvordan insteller man andre taster er der et sted på nettet hvor:
erg& = SendMessage(Me.hwnd, WM_SETHOTKEY, HK_F12, 0)
kombinationen for de andre taster er ?



Avatar billede kaffe Nybegynder
08. oktober 2001 - 18:52 #5
Nej - den lavede jeg selv. Eksemplet var med Ctrl-Z...
Brug denne:

Private Sub Form_KeyDown(KeyCode As Integer, Shift As Integer)
  Form1.Print KeyCode
End Sub

Denne kan ikke bruges til tastekombinationer, men de står forklaret nederst i eksemplet ovenover.
Avatar billede sjh Nybegynder
08. oktober 2001 - 21:51 #6
\'Minimer vinduet og tryk på F12

Private Declare Function GetAsyncKeyState Lib \"user32\" (ByVal vKey As Long) As Integer

Private Sub Form_Activate()
Dim KeyResult As Integer
Dim i As Long
Do
  DoEvents
    For i = 0 To 255
      KeyResult = GetAsyncKeyState(i)
        If KeyResult = -32767 Then
          If i = 123 Then Me.WindowState = 0 \'F12 = 123
        Me.Caption = i \'Brugs til test
      Exit For
    End If
  Next i
Loop
End Sub

Private Sub Form_QueryUnload(Cancel As Integer, UnloadMode As Integer)
  End \'For at lukke programmet helt (Form_Activate Do)
End Sub
Avatar billede sjh Nybegynder
21. oktober 2001 - 04:11 #7
tak :-)
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