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


HSPTV!掲示板


未解決 解決 停止 削除要請

2009
0301
HSP初心者外部ドライブの状態のチェックについて6解決


HSP初心者

リンク

2009/3/1(Sun) 23:04:00|NO.23671

質問させていただきます。
たとえばフロッピーディスクや、SD,M,CF,などのドライブにハードが刺さってるか
チェックすることはできるのでしょうか?
PCに読み込まれてるドライブ(使用状況)をチェックするソースは6時間ぐぐって
見つけたのですが、ハードが刺さっているか刺さっていないかチェックするソースは
VB6で一つ見つけただけです。
しかし、VB使った時ないので理解できません。
ただ、そのやり方を見る限り正規なやり方ではなくエラー処理を逆手にとったやり方
みたいです。
http://homepage1.nifty.com/rucio/main/tyukyu/tyukyu3.htm
どなたかご教授お願いします。
なるべくエラーのdialogが出ないやり方でお願いします。



この記事に返信する


woodfields

リンク

2009/3/1(Sun) 23:52:15|NO.23672

たぶんこんな感じ

newcom oFS,"Scripting.FileSystemObject"
chrdrv=""
repeat 26
poke chrdrv, 0, 65+cnt
if oFS("DriveExists",chrdrv+":") {
oDrive=oFS("GetDrive", chrdrv+":")
if oDrive("IsReady") {
if oDrive("DriveType") == 0 : mes chrdrv+": 不明です。"
if oDrive("DriveType") == 1 : mes chrdrv+": リムーバルディスクです。"
if oDrive("DriveType") == 2 : mes chrdrv+": ハードディスクです。"
if oDrive("DriveType") == 3 : mes chrdrv+": ネットワークドライブです。"
if oDrive("DriveType") == 4 : mes chrdrv+": CD-ROMです。"
if oDrive("DriveType") == 5 : mes chrdrv+": RAMディスクです。"
}
}
loop
delcom oFS
stop



ANTARES

リンク

2009/3/2(Mon) 03:23:02|NO.23676

 FD, MO, MS(というかPSP)はメディアがないとどうしてもダイアログが
出てしまうようですし(onerrorもHSP2のskiperrも効かない)、
CD・DVDはダイアログは出ないものの、メディアなしとファイル・フォルダなしが
区別できません。
未フォーマットはメディアがなく試せませんでした。

#include "hspext.as" drive="E" ;調べたいドライブ(半角大文字) type="不明", "なし", "リムーバブル", "ハードディスク", "ネットワークドライブ" type.5="CD,DVD", "RAMディスク" fxinfo info, peek(drive,0)-'@', 8 mes type.info dir=drive+":\\" fxaget attr, dir: c=stat mes "attr="+attr+" stat="+stat mask=dir+"*.*" sdim buf,32000 dirlist buf, mask: c=stat mes "stat="+c+" ["+buf+"]" stop



HSP初心者

リンク

2009/3/2(Mon) 07:12:00|NO.23677

お〜〜〜〜すごい!!!
woodfieldsさんの十分使えます!!!
ハードが刺さっていないとそのドライブが表示されないから、
チェックすることができるようになりました!!

ANTARESさんのはなぜか実行することができません。
hspext.asファイルが壊れてるのかERRがでます。
すみません・・<(。_。)> モウシワケナイ
しかし、ありがとうございました。
大変助かります!!
これでファイル移植も完璧にできます。
本当にありがとうございました!!



woodfields

リンク

2009/3/2(Mon) 07:25:45|NO.23678

ついでに、たちの悪いカードリーダーなんかも無敵のWindowsVistaでも絶対に大丈夫な究極のどろなわです(極遅です)。


#include "hspext.as" chrdrv="" : buf_mes="" repeat 26 poke chrdrv, 0, 65+cnt sdim ln,4096 sdim buf,32000 pipeexec buf,"cmd /C dir "+chrdrv+": /w",1 ;if stat : dialog "実行できませんでした" : end ;mes "実行中..." repeat pipeget ln ; パイプの取得/更新 if stat=0 : break ; 実行終了ならループを抜ける wait 10 ;mes "実行完了..." loop notesel buf ;mes ""+notemax+"\n\n"+buf if notemax <= 1 { ; 標準エラー出力が1行わたされてる noteget buf_mes,0 ; 空行をカットしてる mes chrdrv+": "+buf_mes }else{ mes chrdrv+":【ドライブは使用可能です。】" } loop stop

ヘルプのpipegetのサンプルスクリプトを利用してますが、おかげで「指定されたパスが見つかりません。」
「デバイスの準備ができていません。」の標準エラー出力までパイプに渡されてるという新たな発見に遭遇しました。



HSP初心者

リンク

2009/3/2(Mon) 08:35:02|NO.23679

woodfieldsさんありがとうございます!!!
しかしAドライブだけチェックできません。(πーπ)グスグス
新しい方も試してみたんですがAドライブだけ認識してくれません!!

newcom oFS,"Scripting.FileSystemObject"
chrdrv=""
if oFS("DriveExists","A:") {
oDrive=oFS("GetDrive", "A:")
if oDrive("IsReady")=true : mes"err": else : mes"ok"

}

と、Aドライブだけ指定してもハードが刺さってない状態で認識されます。
タイムラグが出てるのでしょうか?
他のドライブはちゃんと認識するのですが・・????
意味が分かりません・・・。

は〜〜FDだけあきらめるしかないのでしょうか・・。
ヾ(@† ▽ †@)ノうわーん



HSP初心者

リンク

2009/3/2(Mon) 08:45:59|NO.23680

すみません・・。わかりました・・。
使えなくなったFD刺してました・・。
大変申し訳ありませんでした!!!!
m(._.)m ゴメン



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