掲示板システム
ホーム
アクセス解析
カテゴリ
ログアウト
USBメモリを安全に取り外すには? (ID:38441)
名前
ホームページ(ブログ、Twitterなど)のURL (省略可)
本文
意外と簡単に対応できました。 クラスの作成者にも感謝です。 USBDev.pasをプロジェクトに加えて FormのPrivateクラスに private { Private 宣言 } FUsbDevices : TDeviceNodes; procedure OnGetDeviceInfo(aDevInst: Cardinal; var aCanSelect: Boolean); と定義して FormCreateイベント内に procedure TForm1.FormCreate(Sender: TObject); begin LoadApiLib; // 初期化? FUsbDevices := TDeviceNodes.Create; // USBデバイス情報取得クラス生成 FUsbDevices.GetDeviceInfo(OnGetDeviceInfo); // 情報を取得する?(取得完了/変化イベント?発生) end; あとは取り外しボタンのクリックイベントにて下記コードを記述すると目的の動作になりました。 おかげで間に合いそうです。ありがとうございました。 procedure TForm1.Button2Click(Sender: TObject); var d : TDeviceNode; s,snn : string; i,j : Integer; begin s := FUsbDevices.DriveToDeviceName('E'); // ドライブEのデバイス名を取得 for j := 0 to FUsbDevices.Count-1 do begin // USBデバイスの数だけループ d := FUsbDevices.Items[j]; // j番目のUSBデバイスクラス参照 for i := 0 to d.DeviceNodeCount-1 do begin // USBデバイスに関連するノード分ループ snn := d.DeviceNodeName[i]; // USBのデバイス名称を取得 if (snn = s) and (d.Removable) then begin // USBデバイス名が一致かつ取り外し可能な場合 d.EjectDevice(i); // USBデバイスを取り外す end; end; end; end;
←解決時は質問者本人がここをチェックしてください。
戻る
掲示板システム
Copyright 2020 Takeshi Okamoto All Rights Reserved.