02_Sample_HDDStatus.hsp

sample\hspsmart\02_Sample_HDDStatus.hsp » Plain Format

#include "hspsmart.as"

	// ディスクの温度や回転数を取得するサンプル
	
	// 管理者権限を持っているかどうか?
	if smart_IsCurrentUserLocalAdministrator() == 0{
		mes "管理者権限が必要です"
		stop
	}

	title "ディスクを選択してください"
	
	// 初期化
	hSmart = smart_Init()
	
	// USB/IEEE1394接続のHDDを検出対象にする
	smart_SetUSB1394 hSmart, FLAG_USB_ALL
	// IDE/ATA_PASS_THROUGH を使用します(問題がある場合はOFFに)
	smart_SetAtaPassThroughSmart hSmart, 1
	// IntelRAID環境下でCSMIを自動有効にする
	smart_SetCsmiType hSmart, CSMI_TYPE_ENABLE_AUTO
	
	// ディスクを検出する(CDIの再検出と同じ)
	// 初回起動時やディスクが後から追加・変更・削除されたりしたときに実行してください
	// この処理はやや重いです。再生中の音声が一瞬途切れることもあります。
	smart_DiskScan hSmart, 1, 1, 0, 1, 1, 0
	
	if smart_GetCount(hSmart) <= 0{
		dialog "ディスクがないか、エラーが発生しました"
		end
	}
	
	// ディスク一覧作成
	sdim disklist, 1024
	repeat smart_GetCount(hSmart)
		// 格納に必要なサイズを取得
		size = smart_GetInfoStringSizeW(hSmart, cnt, INFO_MODEL)
		sdim buf, size + 2
		// モデル名取得
		smart_GetInfoStringW hSmart, cnt, INFO_MODEL, buf, size
		disklist += cnvwtos(buf) + "\n"
	loop
	
	// GUI
	width 320, 200
	objsize 320, 180
	listbox disklist_id, 0, disklist
	objsize 320, 20
	button "選択したディスクの情報を見る", *go

stop

*go
	cls
	;width 640, 480
	
	list.0 = INFO_MODEL, INFO_TEMPERATURE, INFO_DEVICENOMINALFORMFACTOR, INFO_INTERFACE
	list.4 = INFO_CURRENTTRANSFERMODE, INFO_POWERONCOUNT, INFO_DETECTEDPOWERONHOURS
	list_s.0 = "モデル名: %s", "温度: %d度", "フォームファクタ: %s", "インターフェース: %s"
	list_s.4 = "転送モード: %s", "電源投入回数: %d回", "使用時間: %d時間"
	
	repeat length(list)
		// 文字列情報取得
		size = smart_GetInfoStringSizeW(hSmart, disklist_id, list.cnt)
		sdim buf, size + 2
		smart_GetInfoStringW hSmart, disklist_id, list.cnt, buf, size
		if stat == 0 {
			mes strf(list_s.cnt, cnvwtos(buf))
		}
		if list.cnt == INFO_MODEL : title cnvwtos(buf)
		
		// 数値型取得
		i = 0
		smart_GetInfoInt hSmart, disklist_id, list.cnt, i
		if stat == 0 {
			mes strf(list_s.cnt, i)
		}
	loop