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

    [vb6] intercettare chiave usb

    Uso vba e uso il seguente codice per inteccettare la chiave usb.
    il problema è che su non tutti i pc la lettera associata alla chiave è F:\...
    come posso fare?
    Grazie
    Luisa

    codice:
    Private Declare Function GetLogicalDriveStrings Lib "kernel32" Alias _
    "GetLogicalDriveStringsA" (ByVal nBufferLength As Long, ByVal lpBuffer As _
    String) As Long
    
    Private Sub Form_Load()
    Dim S As String
    S = String(255, Chr(0))
    GetLogicalDriveStrings 255, S
    D = Split(S, Chr(0))
    For A = 0 To UBound(D)
    If D(A) = "F:\" Then
    MsgBox "TROVATA"
    Exit For
    Else
    If D(A) <> "" Then
    'MSgBox D(A) + " - " + Dir(D(A), vbVolume)
    End If
    End If
    Next A
    End Sub

  2. #2
    Utente di HTML.it
    Registrato dal
    Jul 2008
    Messaggi
    758
    Dipende.
    Se i PC su cui devi verificare la presenza della chiavetta sono sotto il tuo controllo puoi fare in modo che alla chiavetta stessa sia assegnata sempre la stessa lettera.

    Altrimenti puoi ricorrere alla funzione API GetDriveType che restituisce 2 se il dispositivo corrispondente alla lettera è rimovibile. Naturalmente dovrai scartare la lettera A.

  3. #3
    Un momento Luisa..

    Concordo con Grumpy: se in un altro pc (o nel tuo) hai più dispositivi, non saprai mai se stai analizzando la tua chiave.

    Comunque fai attenzione al fatto che, con il tuo codice, verifichi la presenza di un drive (nel tuo caso F SOLAMENTE all'avvio del form, e ciò non ti permette di intercettare la presenza della chiave: basta che la chiave sia immessa dopo che è stato espletato l'evento Load e non avrai risultati..

    Quindi sii più precisa riguardo a ciò che vuoi fare: se ti va bene controllare solo all'avvio del form allora puoi fare come ha detto Grumpy altrimenti....la situazione è più complicata..

    Ciao

  4. #4
    Utente di HTML.it L'avatar di luisa227
    Registrato dal
    Mar 2002
    Messaggi
    2,305
    Originariamente inviato da MdE2005
    Un momento Luisa..

    Concordo con Grumpy: se in un altro pc (o nel tuo) hai più dispositivi, non saprai mai se stai analizzando la tua chiave.

    Comunque fai attenzione al fatto che, con il tuo codice, verifichi la presenza di un drive (nel tuo caso F SOLAMENTE all'avvio del form, e ciò non ti permette di intercettare la presenza della chiave: basta che la chiave sia immessa dopo che è stato espletato l'evento Load e non avrai risultati..

    Quindi sii più precisa riguardo a ciò che vuoi fare: se ti va bene controllare solo all'avvio del form allora puoi fare come ha detto Grumpy altrimenti....la situazione è più complicata..

    Ciao
    Grazie a tutti e 2! proverò a usare GetDriveType. Inoltre... sì... in futuro vorrei che in QUALSIASI momento che inserisco la chiavetta me la riconosca... cosa devo usare? un timer o qualcosa del genere?
    Grazie

  5. #5
    Utente di HTML.it
    Registrato dal
    Jul 2008
    Messaggi
    758
    cosa devo usare? un timer
    Sì, certo. Ho un presentimento: come passo successivo vorrai verificare che la chiavetta inserita sia una in particolare e non una qualunque. Ci ho preso?

  6. #6
    Il Timer può andare bene, non è una soluzione comodissima ma tuttavia semplice..

    Hai mai sentito parlare di "subclassing" ? Se la risposta è no, usa il Timer..

    Ciao

  7. #7
    Utente di HTML.it L'avatar di luisa227
    Registrato dal
    Mar 2002
    Messaggi
    2,305
    Originariamente inviato da Grumpy
    Sì, certo. Ho un presentimento: come passo successivo vorrai verificare che la chiavetta inserita sia una in particolare e non una qualunque. Ci ho preso?
    questa è la prima cosa che ho fatto...

    posso sapere qual'è il tuo presentimento? se mi dai dei suggerimenti...

  8. #8
    Utente di HTML.it L'avatar di luisa227
    Registrato dal
    Mar 2002
    Messaggi
    2,305
    Originariamente inviato da MdE2005
    Il Timer può andare bene, non è una soluzione comodissima ma tuttavia semplice..

    Hai mai sentito parlare di "subclassing" ? Se la risposta è no, usa il Timer..

    Ciao
    veramente ho sentito cenni di tutti e 2 ma non so usare nè uno nè l'altro...

    :master: mi studio un attimino tutto.

    Grazie ancora
    Luisa

  9. #9
    Utente di HTML.it
    Registrato dal
    Jul 2008
    Messaggi
    758
    posso sapere qual'è il tuo presentimento?
    Te l'ho detto: che subito dopo vorrai riconoscere se la chiavetta inserita è quella giusta.

  10. #10
    Utente di HTML.it L'avatar di LMondi
    Registrato dal
    Sep 2004
    Messaggi
    1,291
    Ciao luisa227,
    il seguente codice scritto in VB6 dovrebbe andare bene anche per il tuo caso,
    in particolare fa uso FSO, quindi ricordati di attivare il riferimento:

    codice:
    Option Explicit
    ' Attivare il Riferimento a Microsoft Scripting Runtime
    ' Tipi di Drives:
    '    0: t = "sconosciuta"
    '    1: t = "rimuovibile"
    '    2: t = "fissa"
    '    3: t = "di rete"
    '    4: t = "CD-ROM"
    '    5: t = "disco RAM"
    ' Nel tuo caso "rimuovibile" = 1
    '----------------------------------------------------
    Private Sub Command1_Click()
        
        Dim FSO As FileSystemObject
        Dim drv As Drive
        'Variabile Unità di destinazione:
        Dim sPath As String
        Dim sUnit As String
        'Variabili spazio Unità PD:
        Dim dblTotalS As Double
        Dim dblFreeS As Double
            
        Set FSO = New FileSystemObject
    
    ' Individua la PD attiva:
        For Each drv In FSO.Drives
            If drv.DriveType = 1 And drv.IsReady Then
                sPath = drv.DriveLetter & ":\"
                Exit For
            End If
        Next
      
        If Len(sPath) = 0 Then
            MsgBox "Drive non trovato"
            Set FSO = Nothing
            Exit Sub
            Else: sUnit = sPath
            Label1.Caption = sUnit
        End If
        
        Set drv = FSO.GetDrive(FSO.GetDriveName(sUnit))
    
    'Legge la quantità di KB totali e liberi dell'Unità di destinazione:
        dblTotalS = Format(drv.TotalSize / 1024, "#,##0")
        Text1.Text = dblTotalS
        dblFreeS = Format(drv.FreeSpace / 1024, "#,##0")
        Text2.Text = dblFreeS
        
        Set FSO = Nothing
    End Sub
    Come vedi ti ho lascito la tabella dei riferimenti in modo tale che se ti serve
    trovare un altro drive lo puoi fare.
    LM

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.