Visualizzazione dei risultati da 1 a 8 su 8
  1. #1
    Utente di HTML.it L'avatar di luisa227
    Registrato dal
    Mar 2002
    Messaggi
    2,305

    Vb5/vb6 Programma Sempre Col Focus

    Devo far si che la finestra del mio programma abbia sempre il focus. Cioè io devo controllare quando da tastiera si preme un determinato tasto e quindi, ad esempio se premo il tasto Y, mi deve uscire un msgbox. Ho provato con delle API x avere sempre il fiocus e funziona solo che se ad esempio ho word aperto, quando il focus passa al mio programma word si blocca e non riesco piu a digitare su word (giustamente). Io voglio che il mio programma intercetti i tasti anche se non è attivo, spero di essermi spiegata.
    Le mie richieste qui sul forum sono al 99,9% considerate assurde e senza senso, ma per me un senso lo hanno e gradirei una risposta più seria possibile. Grazie

  2. #2
    Utente di HTML.it L'avatar di luisa227
    Registrato dal
    Mar 2002
    Messaggi
    2,305
    mi sono spiegata o devo rifare la domanda meglio? fatemi sapere...
    Le mie richieste qui sul forum sono al 99,9% considerate assurde e senza senso, ma per me un senso lo hanno e gradirei una risposta più seria possibile. Grazie

  3. #3
    ciao, se non sbaglio e se ho capito bene, c'è una proprietà nella form che si chiama keypreview e permette di intercettare il tasto premuto quando la form è attiva. Così quando la form è attiva e l'utente preme Y puoi far apparire un msgbox.
    es: form_keydown(....)
    if keycode = vbKeyF7 (oppure = "Y") Then
    msgbox"""
    endif

    ciao

  4. #4
    Utente di HTML.it L'avatar di luisa227
    Registrato dal
    Mar 2002
    Messaggi
    2,305
    Originariamente inviato da verardoelvis
    ciao, se non sbaglio e se ho capito bene, c'è una proprietà nella form che si chiama keypreview e permette di intercettare il tasto premuto quando la form è attiva. Così quando la form è attiva e l'utente preme Y puoi far apparire un msgbox.
    es: form_keydown(....)
    if keycode = vbKeyF7 (oppure = "Y") Then
    msgbox"""
    endif

    ciao
    si, ok... ma se il mio prog non è attivo?? ho provato a passargli il focus ma facendo cosi mi si bloccano gli altri prog...
    Le mie richieste qui sul forum sono al 99,9% considerate assurde e senza senso, ma per me un senso lo hanno e gradirei una risposta più seria possibile. Grazie

  5. #5
    scusa, ma non ho capito cosa vuoi.
    cioè se ad es. hai word aperto e il tuo programma aperto con il focus su word, vuoi che premendo F7 (o qualsiasi altro tasto) faccia qualcosa?!?! sul tuo programma?
    spiega meglio, se puoi
    ciao

  6. #6
    Utente di HTML.it L'avatar di junx
    Registrato dal
    May 2004
    Messaggi
    322
    ma scusa tu vuoi semplicemente una specie di keylogger?

  7. #7
    Utente di HTML.it L'avatar di luisa227
    Registrato dal
    Mar 2002
    Messaggi
    2,305
    Originariamente inviato da junx
    ma scusa tu vuoi semplicemente una specie di keylogger?
    boh...credo...
    mettiamo il caso che io sono su Word e sto scrivendo, quando premo la Y il mio programma mi deve mandare un msgbox, quando premo l'ok del msgbox devo essere in grado di continuare la mia scrittura su word...

    Se il mio prog non ha il focus non riesce ad intercettare i tasti...ma se io da word (o da altro qualsiasi programma) passo il focus al mio prog per il controllo, word si blocca (e non riesco piu a scrivere) perchè ovviamente ha perso il focus, che è passato al mio prog...
    capito?
    Le mie richieste qui sul forum sono al 99,9% considerate assurde e senza senso, ma per me un senso lo hanno e gradirei una risposta più seria possibile. Grazie

  8. #8
    Utente di HTML.it L'avatar di junx
    Registrato dal
    May 2004
    Messaggi
    322
    ok, non so se ho capito.

    in un modulo bas:

    codice:
    Public Const SWP_NOACTIVATE = &H10
    Public Const SWP_SHOWWINDOW = &H40
    Public Const HWND_TOPMOST = -1
    Public Const HWND_NOTOPMOST = -2
    Declare Function SetWindowPos Lib "user32" _
        (ByVal hwnd As Long, ByVal hWndInsertAfter As Long, _
        ByVal X As Long, ByVal Y As Long, ByVal cx As Long, _
        ByVal cy As Long, ByVal wFlags As Long) As Long
    
    Public Sub AlwaysOnTop(X As Form, Y As Boolean)
        Select Case Y
            Case Is = True
                SetWindowPos X.hwnd, HWND_TOPMOST, 0, 0, 0, 0, _
                    SWP_NOACTIVATE Or SWP_SHOWWINDOW
                Case Is = False
                SetWindowPos X.hwnd, HWND_NOTOPMOST, 0, 0, 0, 0, _
                    SWP_NOACTIVATE Or SWP_SHOWWINDOW
        End Select
    End Sub
    nella form (es. Form1 con un Timer):

    codice:
    Private Declare Function GetAsyncKeyState Lib "user32" (ByVal vKey As Long) As Integer
    Function KeysPressed(ByVal KeyCode1 As KeyCodeConstants) As Boolean
        If GetAsyncKeyState(KeyCode1) > 0 Then
            AlwaysOnTop Me, True
            MsgBox "hai premuto Y"
        Else
             AlwaysOnTop Me, False
        End If
    
    End Function
    Private Sub Timer1_Timer()
         KeysPressed vbKeyY
    End Sub
    prova....
    fammi sapere.

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.