Déconnexion de matériel USB
Le
Kam
Salut,
j'ai un disque dur sur port USB qui me sert à faire des sauvegardes.
Jusque la, tout va bien.
Par contre, j'aimerais pouvoir automatiser la déconnection de ce disque.
Actuellement, je suis obligé de cliquer sur l'iocne de 'Déconnexion ou
éjection de matériel' (celle avec la fleche verte au dessus d'une carte
style PCMCIA), puis d'arrêter mon périphérique de stockage.
Quelle est la dll ou le composant qui permet de faire ça en programmant ?
Cela permettrait de plannifier dans le plannificateur de taches (logique)
une déconnection du matos une fois les sauvegardes finies.
Voili voila.
Merci d'avance !
Kam
Adresse mail : camille AT ankama DOT com
j'ai un disque dur sur port USB qui me sert à faire des sauvegardes.
Jusque la, tout va bien.
Par contre, j'aimerais pouvoir automatiser la déconnection de ce disque.
Actuellement, je suis obligé de cliquer sur l'iocne de 'Déconnexion ou
éjection de matériel' (celle avec la fleche verte au dessus d'une carte
style PCMCIA), puis d'arrêter mon périphérique de stockage.
Quelle est la dll ou le composant qui permet de faire ça en programmant ?
Cela permettrait de plannifier dans le plannificateur de taches (logique)
une déconnection du matos une fois les sauvegardes finies.
Voili voila.
Merci d'avance !
Kam
Adresse mail : camille AT ankama DOT com

Poser une question


La méthode propre consisterait probablement a
appeller CM_Request_Device_Eject.
Plus crado mais ça marche (chez moi en tout cas :-)
const char *szDeviceDesc = "MiniUSB Wireless Adapter";
HWND hWndHotPlug = FindWindow(NULL, "Déconnexion ou éjection de matériel");
if (hWndHotPlug)
{
HWND hDeviceList = GetDlgItem(hWndHotPlug, 0x12D);
int niIndex = SendMessage(hDeviceList, LB_FINDSTRING, -1, (LPARAM)
szDeviceDesc);
if (niIndex != CB_ERR)
{
SendMessage(hDeviceList, LB_SETCURSEL, niIndex, 0);
PostMessage(hWndHotPlug, WM_COMMAND, 0x131, 0); // "Arreter"
Sleep(1000);
HWND hConfirm = FindWindow(NULL, "Arrêt d'un périphérique
matériel");
{
int niIndex2 = SendMessage(hConfirm, LB_FINDSTRING, -1,
(LPARAM) szDeviceDesc);
if (niIndex2 != CB_ERR)
{
SendMessage(hDeviceList, LB_SETCURSEL, niIndex2, 0);
SendMessage(hConfirm, WM_COMMAND, 0x1, 0); // "OK"
}
}
}
}
C'est l'ancetre de l'automation :-)
--
« Willy, j'ai mangé le chat. »
La méthode propre consisterait probablement a
appeller CM_Request_Device_Eject.
Plus crado mais ça marche (chez moi en tout cas :-) :
const char *szDeviceDesc = "MiniUSB Wireless Adapter";
HWND hWndHotPlug = FindWindow(NULL, "Déconnexion ou éjection de matériel");
if (hWndHotPlug)
{
HWND hDeviceList = GetDlgItem(hWndHotPlug, 0x12D);
int niIndex = SendMessage(hDeviceList, LB_FINDSTRING, -1, (LPARAM)
szDeviceDesc);
if (niIndex != CB_ERR)
{
SendMessage(hDeviceList, LB_SETCURSEL, niIndex, 0);
PostMessage(hWndHotPlug, WM_COMMAND, 0x131, 0); // "Arreter"
Sleep(1000);
HWND hConfirm = FindWindow(NULL, "Arrêt d'un périphérique
matériel");
{
int niIndex2 = SendMessage(hConfirm, LB_FINDSTRING, -1,
(LPARAM) szDeviceDesc);
if (niIndex2 != CB_ERR)
{
SendMessage(hDeviceList, LB_SETCURSEL, niIndex2, 0);
SendMessage(hConfirm, WM_COMMAND, 0x1, 0); // "OK"
}
}
}
}
--
« Willy, j'ai mangé le chat. »
C'est pas que j'aime pas ta méthode, mais..... un peu bourrine, quandmême :)
Merci beaucoup pour le CM_...
Kam
"Thierry"
matériel");
?
(logique)
Kam a écrit :
Si ça marche sur la machine sur laquelle ca doit fonctionner, c'est le
principal :-)
Tu peux te baser sur ces samples du DDK : NTDDKsrcgeneralsetup
--
« Willy, j'ai mangé le chat. »
Ca doit pouvoir se faire avec WMI aussi (avec même un petit scrit VBS), à
condition (il me semble) que ca soit un 2K ou plus.
--
« Willy, j'ai mangé le chat. »