Pagina 1 di 4 1 2 3 ... ultimoultimo
Visualizzazione dei risultati da 1 a 10 su 37
  1. #1

    Windows API USB

    Ciao a tutti!

    Vi scrivo perchè ho un problemone che non sono riuscito a risolvere leggendo i vari post qperti qua e la...

    Ho bisogno di scrivere in C++ un'applicazione Windows in grado di monitorare la presenza di una penna USB e, qualora questa venga introdotta, di copiare dei files (da penna a hard disk).
    Immagino (o meglio, spero!) che Windows 7 fornisca delle API per interfacciarsi al driver del dispositivo USB, ma non ho trovato nessuna informazione "utile" sul web.
    Diciamo che in prima istanza potrei "accontentarmi" di un programmino in grado di stampare un messaggio ogni qualvolta venga introdotta o rimossa una penna USB...

    Qualcuno di voi può aiutarmi?

    Grazie mille, cia ciao!
    DR

  2. #2
    Utente di HTML.it L'avatar di oregon
    Registrato dal
    Jul 2005
    residenza
    Roma
    Messaggi
    36,464
    Devi rilevare il messaggio di Windows

    WM_DEVICECHANGE
    http://msdn.microsoft.com/en-us/library/aa363480(VS.85).aspx

    ed esaminare il parametro wParam controllando l'evento

    DBT_DEVICEARRIVAL
    http://msdn.microsoft.com/en-us/library/aa363205(v=VS.85).aspx
    No MP tecnici (non rispondo nemmeno!), usa il forum.

  3. #3
    Ciao Oregon, e grazie per la risposta!

    Ero già finito su quella pagina MSDN, che mi ha portato a il codice che riporto di seguito.
    Compila, ma inserendo una penna USB (che viene correttamente rilevata da S.O.) non accade nulla!

    Cosa sbaglio? Io uso Visual Studio 2010!

    Grazie!

    ----- CODICE ----

    // usb_handler.cpp : Defines the entry point for the console application.
    //

    #include "stdafx.h"
    #include <stdlib.h>
    #include <Windows.h> //WindProc
    #include <Dbt.h> //DBT_DEVICEARRIVAL

    LRESULT CALLBACK WindowProcedure(HWND hWnd, UINT uiMsg, WPARAM wParam, LPARAM lParam);

    int _tmain(int argc, _TCHAR* argv[])
    {
    fprintf(stdout, "USB handler....\n");
    while(1)
    {
    ;
    }
    //system("pause");
    return 0;
    }


    LRESULT CALLBACK WindowProcedure(HWND hWnd, UINT uiMsg, WPARAM wParam, LPARAM lParam)
    {
    printf("entro!!!\n");
    switch (uiMsg)
    {
    case WM_DEVICECHANGE:
    {
    //PDEV_BROADCAST_HDR pHdr = (PDEV_BROADCAST_HDR) lParam;
    switch (wParam)
    {
    case DBT_DEVICEARRIVAL:
    MessageBox(hWnd, (LPCWSTR)"A device has been inserted.", (LPCWSTR) "USB Notice", MB_OK);
    break;
    case DBT_DEVICEREMOVECOMPLETE:
    MessageBox(hWnd, (LPCWSTR)"A device has been removed.", (LPCWSTR) "USB Notice", MB_OK);
    break;
    }
    }
    break;
    default:
    return DefWindowProc(hWnd, uiMsg, wParam, lParam);
    break;
    }
    return 0;
    }
    DR

  4. #4
    Utente di HTML.it L'avatar di oregon
    Registrato dal
    Jul 2005
    residenza
    Roma
    Messaggi
    36,464
    Sicuro che questo codice sia effettivamente quello di MSDN?

    Questa è una applicazione "console" e non potrà mai funzionare dato che la

    WindowProcedure

    non è utilizzata da una applicazione console.
    No MP tecnici (non rispondo nemmeno!), usa il forum.

  5. #5
    No, questo codice l'ho scritto io, "prendendo spunto" dalle librerie MSDN...

    Ho capito perchè non funziona, ma io ho bisogno di realizzare un'applicazione console...e non sono riuscito a trovare un modo per farla!!!

    Tu sai come si fa???
    Grazie!
    DR

  6. #6
    Utente di HTML.it L'avatar di XWolverineX
    Registrato dal
    Aug 2005
    residenza
    Prague
    Messaggi
    2,565
    Devi inizializzare un ciclo dei messaggi e processare solo quelli che ti interessano
    http://msdn.microsoft.com/en-us/libr...8VS.85%29.aspx
    "Se proprio devono piratare, almeno piratino il nostro." (Bill Gates)

    "Non è possibile che 2 istituzioni statali mi mettano esami nello stesso giorno." (XWolverineX)

    http://xvincentx.netsons.org/programBlog

  7. #7
    Utente di HTML.it L'avatar di oregon
    Registrato dal
    Jul 2005
    residenza
    Roma
    Messaggi
    36,464
    Originariamente inviato da danielerusso19
    No, questo codice l'ho scritto io, "prendendo spunto" dalle librerie MSDN...
    Ah ... ecco ...

    Ho capito perchè non funziona, ma io ho bisogno di realizzare un'applicazione console...e non sono riuscito a trovare un modo per farla!!!

    Tu sai come si fa???
    Se devi utilizzare per forza una applicazione console (perchè?) devi creare un nuovo thread, creare una finestra nascosta (con la CreateWindow impostando altezza e larghezza a zero) e utilizzare il suo "message loop".
    No MP tecnici (non rispondo nemmeno!), usa il forum.

  8. #8
    Utente di HTML.it L'avatar di XWolverineX
    Registrato dal
    Aug 2005
    residenza
    Prague
    Messaggi
    2,565
    Originariamente inviato da oregon
    Ah ... ecco ...



    Se devi utilizzare per forza una applicazione console (perchè?) devi creare un nuovo thread, creare una finestra nascosta (con la CreateWindow impostando altezza e larghezza a zero) e utilizzare il suo "message loop".
    O fare una applicazione Win32 e dare un bel AllocConsole()
    "Se proprio devono piratare, almeno piratino il nostro." (Bill Gates)

    "Non è possibile che 2 istituzioni statali mi mettano esami nello stesso giorno." (XWolverineX)

    http://xvincentx.netsons.org/programBlog

  9. #9
    Utente di HTML.it L'avatar di oregon
    Registrato dal
    Jul 2005
    residenza
    Roma
    Messaggi
    36,464
    Originariamente inviato da XWolverineX
    O fare una applicazione Win32 e dare un bel AllocConsole()
    Certo ... ma non è piu' una applicazione Console (ecco perchè chiedevo se fosse necessaria l'applicazione console).
    No MP tecnici (non rispondo nemmeno!), usa il forum.

  10. #10
    Utente di HTML.it L'avatar di XWolverineX
    Registrato dal
    Aug 2005
    residenza
    Prague
    Messaggi
    2,565
    Io penso che gli basti avere una console su cui scrivere.
    "Se proprio devono piratare, almeno piratino il nostro." (Bill Gates)

    "Non è possibile che 2 istituzioni statali mi mettano esami nello stesso giorno." (XWolverineX)

    http://xvincentx.netsons.org/programBlog

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 © 2024 vBulletin Solutions, Inc. All rights reserved.