Версия для печати темы
Нажмите сюда для просмотра этой темы в оригинальном формате |
Форум программистов > C++ Builder > Обслуживание съемных носителей. |
Автор: бройлер 26.11.2006, 21:48 |
Нужно написать программу, которая распозновала бы флэшку и CD. Определяла бы тип носителя, размер места на нем ну т.д. Я написал вот такую штуку, но уменя больше ума не хватает ее закончить. Она работает, но только выдает информацию при вставке флэшки или носителя, и выемки их. Остальное ничего не работает. Я не могу ее дописать. Хотелось бы еще чтобы она выполняла копирование файлов куда нибудь с носителя. Заранее спасибо. #include <vcl.h> #pragma hdrstop #include "Unit1.h" //--------------------------------------------------------------------------- #pragma package(smart_init) #pragma resource "*.dfm" TForm1 *Form1; //--------------------------------------------------------------------------- __fastcall TForm1::TForm1(TComponent* Owner) : TForm(Owner) { } //--------------------------------------------------------------------------- void __fastcall TForm1::WndProc(Messages::TMessage &Message) { switch(Message.Msg) { case WM_DEVICECHANGE: switch(Message.WParam) { case DBT_DEVICEARRIVAL: { ShowMessage("DEVICEARRIVAL!"); DEV_BROADCAST_HDR* p = (DEV_BROADCAST_HDR*)Message.LParam; p->dbch_devicetype; break; } case DBT_DEVICEQUERYREMOVE: { ShowMessage("DEVICEQUERYREMOVE!"); DEV_BROADCAST_HDR* q = (DEV_BROADCAST_HDR*)Message.LParam; q->dbch_reserved; break; } case DBT_CONFIGCHANGED: { ShowMessage("CONFIGCHANGED!"); break; } case DBT_DEVICEREMOVECOMPLETE: { ShowMessage("DEVICEREMOVECOMPLETE!"); DEV_BROADCAST_HDR* s = (DEV_BROADCAST_HDR*)Message.LParam; s->dbch_size; break; } Close(); } } TForm::WndProc(Message); } void __fastcall TForm1::DeviceMsgHeaderDecode(Messages::TMessage &Message) { DEV_BROADCAST_HDR* p = (DEV_BROADCAST_HDR*)Message.LParam; switch(p->dbch_devicetype) { case DBT_DEVTYP_DEVICEINTERFACE: ShowMessage("DEV_BROADCAST_DEVICEINTERFACE structure" ); break; case DBT_DEVTYP_HANDLE: ShowMessage("The DEV_BROADCAST_HANDLE structure" ); break; case DBT_DEVTYP_OEM: ShowMessage("The DEV_BROADCAST_OEM structure" ); break; case DBT_DEVTYP_PORT: ShowMessage("The DEV_BROADCAST_PORT structure" ); break; case DBT_DEVTYP_VOLUME: ShowMessage("The DEV_BROADCAST_VOLUME structure" ); DEV_BROADCAST_VOLUME* q=(DEV_BROADCAST_VOLUME*)Message.LParam; break; } } |
Автор: Partizan 30.11.2006, 14:50 |
если вся инфа по девайсу получена, то наверняка известна и литера которая новому носителю в системе присвоена... копирование можно сделать точно также как и на локальном диске....между локальными дисками... |
Автор: бройлер 30.11.2006, 20:49 |
Если не сложно могли бы прописать, как это можно сделать? |