2010/8/22:本掲示板は閲覧専用です。データが一部破損しておりますがご了承ください。
  新規投稿 ┃ツリー表示 ┃スレッド表示 ┃一覧表示 ┃トピック表示 ┃番号順表示 ┃検索 ┃設定 ┃過去ログ ┃ホーム  
1870 / 3573 ←次へ | 前へ→

Re:今日のところはこの辺で...
←back ↑menu ↑top forward→
 HGST使い?  - 08/4/7(月) 13:06 -

引用なし
パスワード
   ▼ひよひよさん:
>残念ながら WSH -> C++ を簡単に出来ませんでした。WSH と C++ に精通した方々のアドヴァイスお待ちしております。基本的には、置き換えるだけのはずなのですが…。

やってることは
・Win32_LogicalDiskでA〜Zのドライブ名ベースのリストからHDD(DriveType=3)だけリストアップ(この指定が無いとFDや光学といったデバイスも動く)
http://msdn2.microsoft.com/en-us/library/aa394173(VS.85).aspx
・Win32_DiskPartitionでディスクパーティションをリストアップ
http://msdn2.microsoft.com/en-us/library/aa394135(VS.85).aspx
・Win32_LogicalDiskToPartitionで上記2つのリストから総当りで組み合わせて解決できるかを実際に試行
http://msdn2.microsoft.com/en-us/library/aa394175(VS.85).aspx
・エラーにならず解決できたらその組み合わせは正しいし、エラーなら違うので無視
という、あまりスマートではないかもしれない方法ですね。

未だにVB6使いなので↓のように移植してますが確かに動作してるようで。
コメント付けましたが言語が違うので無意味かも。全角スペースでインデントされてます。
# 余談ですが、あのWSHを動かすならコマンドプロンプトでcscript 〜.jsのように実行した方がメッセージボックスが出ないので快適です。

'長いので文字列一時保存用
Dim buf As String

'WMIサービスに接続する。
Dim svc As Object
Set svc = GetObject("winmgmts:{impersonationLevel=impersonate}\\.\root\CIMV2")

'WMIより論理ドライブ名ベースの固定ディスク一覧を取得
Dim objEnumLogicalDisk As Object
Set objEnumLogicalDisk = svc.execQuery("SELECT * FROM Win32_LogicalDisk WHERE DriveType = 3", "WQL", 0)

'WMIよりディスクのパーティションテーブル一覧を取得
Dim objEnumDiskPartition As Object
Set objEnumDiskPartition = svc.execQuery("SELECT * FROM Win32_DiskPartition", "WQL", 0)

'For Each用
Dim Disk As Object, Partition As Object
'Win32_LogicalDiskToPartitionの受け皿(使い捨て)
Dim objLogicalDiskToPartition As Object

'総当りチェック開始
For Each Disk In objEnumLogicalDisk
  For Each Partition In objEnumDiskPartition
    'このDiskとPartitionの組み合わせが正しいかWin32_LogicalDiskToPartitionを使って実際に総当りでやってみる
    buf = "Win32_LogicalDiskToPartition.Antecedent='" & Partition.path_.relpath & "',Dependent='" & Disk.path_.relpath & "'"
    'try catchが使えるならもうちょいスッキリする
    'try{
    On Error Resume Next
    '実際にやってみる
    Set objLogicalDiskToPartition = svc.get(buf, 0)
    'エラーなし>この組み合わせはどうやら正しいようだ
    If Err.Number = 0 Then
      'ドライブレター対応追加処理をここに書く
      Debug.Print objLogicalDiskToPartition.path_.relpath
    End If
    On Error GoTo 0
    '}catch(e){}
  Next
Next

126 hits

ERROR:該当するツリーデータを読み込めませんでした。

1870 / 3573 ←次へ | 前へ→
  新規投稿 ┃ツリー表示 ┃スレッド表示 ┃一覧表示 ┃トピック表示 ┃番号順表示 ┃検索 ┃設定 ┃過去ログ ┃ホーム  
ページ:  ┃  記事番号:   
98287
(SS)C-BOARD v3.8(とほほ改ver2.1) is Free