Visualizzazione dei risultati da 1 a 8 su 8
  1. #1
    Utente di HTML.it
    Registrato dal
    Jun 2004
    Messaggi
    124

    [VB6] eseguire codice anche se la form è in 2° piano

    altro piccolo problema

    vorrei fare in modo che anche se la form non è selezionata (in primo piano) eseguisse questo codice:

    codice:
    Private Sub Form_KeyDown(KeyCode As Integer, Shift As Integer)
    If KeyCode = vbKeyB Then
    Label1.Caption = "hai premuto B"
    End If
    End Sub
    come faccio? grazie.

  2. #2
    Utente di HTML.it L'avatar di Mods
    Registrato dal
    Jun 2004
    Messaggi
    302
    chiami la funzione dove ti interessa avviarla nel seguente modo :

    nomeForm.Form_KeyDown(KeyCode, Shift)
    Ci sono 10 tipi di persone al mondo: quelli che conoscono il codice binario, e quelli che non lo conoscono!

  3. #3
    Utente di HTML.it
    Registrato dal
    Jun 2004
    Messaggi
    124
    non ho capito...

    facciamo finta che io abbia aperto explorer e scriva nella barra il sito boom.dot questo sito contiene la B e io vorrei che nel mio prog apparga la scirtta "hai premuto B"

  4. #4
    Utente di HTML.it L'avatar di Mabi
    Registrato dal
    May 2002
    Messaggi
    1,245
    Originariamente inviato da ink--
    non ho capito...

    facciamo finta che io abbia aperto explorer e scriva nella barra il sito boom.dot questo sito contiene la B e io vorrei che nel mio prog apparga la scirtta "hai premuto B"
    Se vuoi rilevare la pressione di un tasto al di fuori della tua applicazione puoi fare così:
    codice:
    Private Declare Function GetAsyncKeyState _
    Lib "user32" (ByVal vKey As Long) As Integer
    
    Private Sub Form_Load()
    Timer1.Interval = 100
    End Sub
    
    Private Sub Timer1_Timer()
    If GetAsyncKeyState(vbKeyB) <> 0 Then
      MsgBox "Hai premuto B"
    End If
    End Sub
    (Ti basta inserire un Timer)
    ... e non usare while wend è una sintassi deprecata

  5. #5
    Utente di HTML.it
    Registrato dal
    Jun 2004
    Messaggi
    124
    perfetto!
    grazie!!!!!!!!!!!!!!

  6. #6
    Utente di HTML.it L'avatar di Mabi
    Registrato dal
    May 2002
    Messaggi
    1,245
    Prego
    ... e non usare while wend è una sintassi deprecata

  7. #7
    Utente di HTML.it L'avatar di goku370
    Registrato dal
    Oct 2003
    Messaggi
    569
    Originariamente inviato da Mabi
    Se vuoi rilevare la pressione di un tasto al di fuori della tua applicazione puoi fare così:
    codice:
    Private Declare Function GetAsyncKeyState _
    Lib "user32" (ByVal vKey As Long) As Integer
    
    Private Sub Form_Load()
    Timer1.Interval = 100
    End Sub
    
    Private Sub Timer1_Timer()
    If GetAsyncKeyState(vbKeyB) <> 0 Then
      MsgBox "Hai premuto B"
    End If
    End Sub
    (Ti basta inserire un Timer)
    Mi aggancio a questa discussione:
    il codice che hai postato serve a rilevare la pressione di un particolare tasto.
    Come posso fare per rilevarli tutti e magari scriverli di seguito su una textbox?
    Una tecnologia sufficientemente avanzata è indistinguibile dalla magia. Terza legge di Clarke

  8. #8
    Utente di HTML.it L'avatar di Mabi
    Registrato dal
    May 2002
    Messaggi
    1,245
    Originariamente inviato da goku370
    Mi aggancio a questa discussione:
    il codice che hai postato serve a rilevare la pressione di un particolare tasto.
    Come posso fare per rilevarli tutti e magari scriverli di seguito su una textbox?
    Non ho ben capito cosa intendi.
    Vuoi sapere in un determinato momento quali tasti vengono premuti o vuoi rilevare lo stato della tastiera ?
    Per il primo caso potresti sfruttare la stessa API in un ciclo:
    codice:
    Private Declare Function GetAsyncKeyState _
    Lib "user32" (ByVal vKey As Long) As Integer
    
    Private Sub Form_Load()
    Timer1.Interval = 100
    End Sub
    
    Private Sub Timer1_Timer()
    Dim Cont As Long
    Dim StrTemp As String
    
    StrTemp = ""
    For Cont = 65& To 90&
      If GetAsyncKeyState(Cont) <> 0 Then
        StrTemp = StrTemp & Chr(Cont) & " "
      End If
    Next Cont
    StrTemp = RTrim(StrTemp)
    
    If Len(StrTemp) > 0 Then
      MsgBox StrTemp
    End If
    End Sub
    L'esempio considera le lettere della tastiera.
    ... e non usare while wend è una sintassi deprecata

Permessi di invio

  • Non puoi inserire discussioni
  • Non puoi inserire repliche
  • Non puoi inserire allegati
  • Non puoi modificare i tuoi messaggi
  •  
Powered by vBulletin® Version 4.2.1
Copyright © 2025 vBulletin Solutions, Inc. All rights reserved.