HSPポータル
サイトマップ お問い合わせ


HSPTV!掲示板


未解決 解決 停止 削除要請

2021
0826
XAINhspsmartのディスク健康度のUIを作成したい2解決


XAIN

リンク

2021/8/26(Thu) 20:08:44|NO.93696

HSPSMART.dll(https://hsp.moe)をダウンロードし、サンプルを実行したのですが、
その中に健康度チェックといったサンプルがあります。
<以下サンプル>

#include "hspsmart.as" // title "健康度チェック" // 管理者権限を持っているかどうか? if smart_IsCurrentUserLocalAdministrator() == 0{ mes "管理者権限が必要です" stop } // 初期化 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{ mes "ディスクがないか、エラーが発生しました" stop } mes "" + smart_GetCount(hSmart) + "台のディスクを検出しました" health = "不明", "良好", "注意", "異常" repeat smart_GetCount(hSmart) // 格納に必要なサイズを取得 size = smart_GetInfoStringSizeW(hSmart, cnt, INFO_MODEL) sdim buf, size + 2 smart_GetInfoStringW hSmart, cnt, INFO_MODEL, buf, size if stat == 0 { mes ""+cnvwtos(buf) + " の状態は" + health.smart_CheckDiskStatus(hSmart, cnt) + "です" } loop smart_UnInit hSmart
この時、ディスク名とともに「良好」、「注意」といったものが表示されると思うのですが、
ディスク名の後の「良好」、「注意」に個別の色を付けることはできますでしょうか?
例えば、「良好」であれば、「良好」のフォントカラーを緑に、「注意」であれば、「注意」
のフォントカラーを黄色、「異常」であれば、異常のフォントカラーを赤、「不明」であれば
不明のフォントカラーを灰色にしたいです。どうすればできるでしょうか?

HSP SMARTの命令と通常命令との区切りがよくわからず、上のような条件分岐がわからなかった
ため、質問させていただきました。よろしくお願いします。



この記事に返信する


沢渡

リンク

2021/8/26(Thu) 21:29:04|NO.93697

このソースコードで言う「smart_CheckDiskStatus(hSmart, cnt)」でディスクの健康度をあらわす
数値が0〜3で返ってくるのだから、このようにすれば良いのではないでしょうか。

#include "hspsmart.as" // title "健康度チェック" // 管理者権限を持っているかどうか? if smart_IsCurrentUserLocalAdministrator() == 0{ mes "管理者権限が必要です" stop } // 初期化 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{ mes "ディスクがないか、エラーが発生しました" stop } mes "" + smart_GetCount(hSmart) + "台のディスクを検出しました" health = "不明", "良好", "注意", "異常" repeat smart_GetCount(hSmart) // 格納に必要なサイズを取得 size = smart_GetInfoStringSizeW(hSmart, cnt, INFO_MODEL) sdim buf, size + 2 smart_GetInfoStringW hSmart, cnt, INFO_MODEL, buf, size if stat == 0 { mes ""+cnvwtos(buf) + " の状態は",1 status=smart_CheckDiskStatus(hSmart, cnt) switch status case 0 //不明 color 127,127,127 : swbreak //灰色 case 2 //注意 color 200,200,0 : swbreak //黄色 case 3 //異常 color 200,0,0 : swbreak //赤 default //良好 color 0,200,0 : swbreak //緑 swend mes health(status),1 color 0,0,0 : mes "です" pos 0,ginfo_cy //カレントポジションを左端に } loop smart_UnInit hSmart



XAIN

リンク

2021/8/29(Sun) 09:27:20|NO.93717

都合により返信が遅れてしまい、すみませんでした。
実行したところ、色分けできていました。
smart_CheckDiskStatusの0~3の値を使ってcase文で分岐するのは盲点でした。
ありがとうございました。



ONION software Copyright 1997-2023(c) All rights reserved.