C# と VB.NET の質問掲示板

ASP.NET、C++/CLI、Java 何でもどうぞ

C# と VB.NET の入門サイト

Re[24]: フロッピードライブを開いた時のイベント取得について [1]


(過去ログ 39 を表示中)

[トピック内 50 記事 (21 - 40 表示)]  << 0 | 1 | 2 >>

■20312 / inTopicNo.21)  Re[6]: フロッピードライブを開いた時のイベント取得について
  
□投稿者/ VB初心者 (23回)-(2008/06/09(Mon) 15:18:36)
No20310 (れい さん) に返信
> ■No20306 (VB初心者 さん) に返信

れいさんありがとうございます。

> 文体が一見きつく見えるかもしれませんが、
> 文章だからニュアンスが伝わりづらいのです。
> 厳しいなぁと感じたら、
> 勝手に脳内で文末に顔文字つけてみるといいですよ。
>
> 「(^^;」とか「:D」とか「OTL」とか「(笑」とか。
なるほど。なるほど。

>
>> でもれいさんにはヒントを頂いたので、調べてみます。
>> ありがとうございました!
>
> ただ正直ですね、
> やりたい内容が全然「お気軽」ではないので…
>
> どれだけ大変か、どうなってしまいそうか知ってる人は
> 暗い気分、厳しい口調になってしまうのは仕方がないかと。
>
> 私もデスマーチとかダメプロダクトへの後押しをしてしまった気分です。
>
> 責任逃れのためにもう一度いっておきますが、
> フロッピーを開くのを検知する方針はやめておいた方がいいです。
> 何通りかやり方がありますが、どれもオススメできません。
>
> ご健闘を。
>
> #あくまのきしに挑む勇者を見送る気分。
分かりました。経験者の方からすると
おいおい、無謀だよっって事ですね(笑)
今回は開発元に対応する方向で進めてみます。
お時間・お手間頂き、れいさん どうもありがとうございました。


引用返信 編集キー/
■20313 / inTopicNo.22)  Re[6]: フロッピードライブを開いた時のイベント取得について
□投稿者/ επιστημη (1067回)-(2008/06/09(Mon) 15:22:21)
επιστημη さんの Web サイト
2008/06/09(Mon) 15:34:49 編集(投稿者)

# 解決の後でアレなんですけど、

FDを抜き差しすると WM_DEVICECHANGE メッセージが飛ばなかったっけ?

これが飛んでくれるなら、フロッピーをejectしたときに
「保存してないよ!」あるいは「保存しましたか?」をポップアップ
するくらいならイケるんじゃないかしら。
オペレータのミスを(皆無とはいかないまでも)軽減できそうに思います。

解決済み
引用返信 編集キー/
■20314 / inTopicNo.23)  Re[6]: フロッピードライブを開いた時のイベント取得について
□投稿者/ VB初心者 (24回)-(2008/06/09(Mon) 15:24:21)
No20309 (επιστημη さん) に返信
>>生産情報は社外で作られたソフトなので
>>そのような変更は出来ないのです。
>
> うーん...要するに、ですね。
> 大事な生産情報を取りこぼし得るのはそのソフトの欠点/欠陥なわけですよね。
> ならばそのほころびを繕うのが上策だと思うのですよ。
> 社外のソフトってことは、使うコチラはお客様なんでしょ?
> 文句のひとつも言えないんでしょうか。
>
> # FDアクセスを検出してうんぬんてのは所詮"対症療法"に過ぎんだろ、と。
>

επιστημη さん ありがとうございます。

ああぁ、なるほど。そうゆう事ですか!!
確かにそうですね。

でも難しい所があって、各ユーザーによって使い方が違うので
その生産情報が必要無いって会社もあるのです
(例えば生産日報は手作業で取得しているような会社です)

でも、また開発元に依頼する時にそのような事も指摘してみます。
どうもありがとうございました。
最初から最後まで見守って頂いてありがとうございました。
お時間とらせてすみませんでした。


引用返信 編集キー/
■20315 / inTopicNo.24)  Re[7]: フロッピードライブを開いた時のイベント取得について
□投稿者/ VB初心者 (25回)-(2008/06/09(Mon) 15:26:14)
No20313 (επιστημη さん) に返信
> # 解決の後でアレなんですけど、
>
> FDを抜き差しすると WM_DEVICECHANGE イベントが飛ばなかったっけ?
>
> これが飛んでくれるなら、フロッピーをejectしたときに
> 「保存してないよ!」あるいは「保存しましたか?」をポップアップ
> するくらいならイケるんじゃないかしら。
> オペレータのミスを(皆無とはいかないまでも)軽減できそうに思います。
>

ええっ!そうなんですか。ちょっと調べてみます。
どうもありがとうございます。

引用返信 編集キー/
■20316 / inTopicNo.25)  Re[8]: フロッピードライブを開いた時のイベント取得について
□投稿者/ επιστημη (1068回)-(2008/06/09(Mon) 15:32:32)
επιστημη さんの Web サイト
>>FDを抜き差しすると WM_DEVICECHANGE イベントが飛ばなかったっけ?
>
> ええっ!そうなんですか。ちょっと調べてみます。

それがダメなら GetLogicalDrives() 呼べば使用可能なドライブのリスト(bit列)が
手に入り、そいつの最下位ビットがdrive-Aです。
これ使うなら、一定間隔で呼び続けFDの挿抜を検出せなあかんでしょう。

引用返信 編集キー/
■20317 / inTopicNo.26)  Re[9]: フロッピードライブを開いた時のイベント取得について
□投稿者/ VB初心者 (26回)-(2008/06/09(Mon) 15:42:43)
No20316 (επιστημη さん) に返信
> >>FDを抜き差しすると WM_DEVICECHANGE イベントが飛ばなかったっけ?
>>
>>ええっ!そうなんですか。ちょっと調べてみます。
>
> それがダメなら GetLogicalDrives() 呼べば使用可能なドライブのリスト(bit列)が
> 手に入り、そいつの最下位ビットがdrive-Aです。
> これ使うなら、一定間隔で呼び続けFDの挿抜を検出せなあかんでしょう。
>

επιστημη さん どうもありがとうございました。
こちらも合わせて調べてみます。
どうもありがとうございました。

引用返信 編集キー/
■20318 / inTopicNo.27)  Re[10]: フロッピードライブを開いた時のイベント取得について
□投稿者/ じゅで (17回)-(2008/06/09(Mon) 15:46:50)
No20317 (VB初心者 さん) に返信
> ■No20316 (επιστημη さん) に返信
>>>>FDを抜き差しすると WM_DEVICECHANGE イベントが飛ばなかったっけ?

FindFirstChangeNotificationで、FDのディレクトリに対する変更監視が出来るかも?
ただし、VB6.0で実現できるかは、不明・・・
引用返信 編集キー/
■20319 / inTopicNo.28)  Re[11]: フロッピードライブを開いた時のイベント取得について
□投稿者/ VB初心者 (27回)-(2008/06/09(Mon) 15:50:58)
No20318 (じゅで さん) に返信
> ■No20317 (VB初心者 さん) に返信
>>■No20316 (επιστημη さん) に返信
> >>>>FDを抜き差しすると WM_DEVICECHANGE イベントが飛ばなかったっけ?
>
> FindFirstChangeNotificationで、FDのディレクトリに対する変更監視が出来るかも?
> ただし、VB6.0で実現できるかは、不明・・・

じゅで さん ありがとうございます。
色々と調べてみます。本当にどうもありがとうございます。



引用返信 編集キー/
■20327 / inTopicNo.29)  Re[12]: フロッピードライブを開いた時のイベント取得について
□投稿者/ ぽぴ王子 (382回)-(2008/06/09(Mon) 16:42:20)
ぽぴ王子 さんの Web サイト
No20319 (VB初心者 さん) に返信
> ■No20318 (じゅで さん) に返信
>>■No20317 (VB初心者 さん) に返信
> >>■No20316 (επιστημη さん) に返信
>>>>>>FDを抜き差しすると WM_DEVICECHANGE イベントが飛ばなかったっけ?
>>
>>FindFirstChangeNotificationで、FDのディレクトリに対する変更監視が出来るかも?
>>ただし、VB6.0で実現できるかは、不明・・・
>
> じゅで さん ありがとうございます。
> 色々と調べてみます。本当にどうもありがとうございます。

解決した?ような感じなので、ちょっと脇道に。
MOやCD-ROMみたいなデバイスはハード的に抜き差しが検出できるけど、FDはどうなんでしょうね。
>FDを抜き差しすると WM_DEVICECHANGE イベントが飛ばなかったっけ?
あ、↑コレの話ね。
実際に WM_DEVICECHANGE イベントが飛ぶとしたら、それはOSが偉いのかも(監視してる?)と思います。

# 解決済みが消えてるけど、戻しちゃっていいの?
引用返信 編集キー/
■20332 / inTopicNo.30)  Re[13]: フロッピードライブを開いた時のイベント取得について
□投稿者/ PATIO (84回)-(2008/06/09(Mon) 16:50:34)
> >FDを抜き差しすると WM_DEVICECHANGE イベントが飛ばなかったっけ?
> あ、↑コレの話ね。
> 実際に WM_DEVICECHANGE イベントが飛ぶとしたら、それはOSが偉いのかも(監視してる?)と思います。

私のPCにはFDDが付いていないのでー。(^^;
ついている人試してみてくだせえ。
まあ、厳密な事言い出すとキリが無いけど、
警告程度で良いと言う話ならそういうもの有りなのかなぁ。
ちなみに私はFDDは変えないで単純に読み込み指示をするだけなのかと
思ってました。物理的に入れ替え作業が発生するなら
こういうのも有りですよねぇ。

引用返信 編集キー/
■20335 / inTopicNo.31)  Re[13]: フロッピードライブを開いた時のイベント取得について
□投稿者/ 774RR (192回)-(2008/06/09(Mon) 16:59:53)
FD の抜き差しで WM_DEVICECHANGE が飛ぶとは限らないです
(というより、原理的に飛ばない・飛ばせないはずであって、飛ぶとしたらかなり例外的マシン)
少なくとも俺の手元にある数台全部飛ばないです。
FDD 初期の頃の装置には抜き差し検出できる構造が入っていませんでした。
互換性維持の理由により現代の装置にも入っていない/入っていても使われていないはずです。
# USB FDD の抜き差しなら飛んできますが・・・

っていうか、もともとの話題は
・ユーザーが Explorer 上でフロッピーディスクに対して操作を行おうとした、ことの検出
であったはずなのにいつの間に
・フロッピーディスクが抜かれた、ことの検出
の話になっているのだろう。
引用返信 編集キー/
■20336 / inTopicNo.32)  Re[14]: フロッピードライブを開いた時のイベント取得について
□投稿者/ れい (629回)-(2008/06/09(Mon) 17:01:44)
2008/06/09(Mon) 17:11:08 編集(投稿者)

あー。

A:なFDDに関してはWM_DEVICECHANGEは飛ばないと思います。
また、GetLogicalDrivesも常にAが存在するとして返ってくるかと思います。

USBだったりATAPIだったりすると知りませんが。

ちょっと詳しくは忘れましたが。
FDDドライバで
「アクセスしてみないと入ってるかどうかわからない」
という感じにしてあったかと。

キャッシュとかの関係で。

追記

No20335 (774RR さん) に返信
> FDD 初期の頃の装置には抜き差し検出できる構造が入っていませんでした。
> 互換性維持の理由により現代の装置にも入っていない/入っていても使われていないはずです。

!!
そうでした。論理が逆でした。
FDDが抜き差し検出もともとできなかったから、
FDDに関しては抜けてもキャッシュを消さないのでした。

> キャッシュとかの関係で。

大うそつきです。
引用返信 編集キー/
■20338 / inTopicNo.33)  Re[15]: フロッピードライブを開いた時のイベント取得について
□投稿者/ επιστημη (1073回)-(2008/06/09(Mon) 17:09:45)
επιστημη さんの Web サイト
> A:なFDDに関してはWM_DEVICECHANGEは飛ばないと思います。
> また、GetLogicalDrivesも常にAが存在するとして返ってくるかと思います。

そーなのかー (ルーミア風に

> ちょっと詳しくは忘れましたが。
> FDDドライバで
> 「アクセスしてみないと入ってるかどうかわからない」
> という感じにしてあったかと。

だとすれば確実に存在するディレクトリ(A:\かな?)をアクセスしますか。
でもねー、そのたんびにガコガコうるさいよねぇ?

引用返信 編集キー/
■20340 / inTopicNo.34)  Re[15]: フロッピードライブを開いた時のイベント取得について
□投稿者/ じゅで (20回)-(2008/06/09(Mon) 17:11:00)
No20336 (れい さん) に返信

ここで聞いて良いか悩みましたが、非常に気になったので、
質問させてください。

> 責任逃れのためにもう一度いっておきますが、
> フロッピーを開くのを検知する方針はやめておいた方がいいです。
> 何通りかやり方がありますが、どれもオススメできません。

上記の何通りかのやり方というと
どのような感じのものがあるでしょうか?

先ほど、エクスプローラ上のツリービューに対するメッセージなどを
ログにとってみたんですが、ツリービューだけからしかアクセス
しないわけでもないですし(右の方の作業領域からもアクセスが)、
エクスプローラに対してメッセージの
フックをしてみた方が良いのでしょうか?

そして、フックするとして、どのメッセージをフックするのが良いのか
というのと、フックなんかしなくてもAPIが用意されていたりします?

技術的に興味があったので、質問となりますが、
手が空いた時にでも、いくつか例をあげていただければ、
今後の参考になりますので、よろしければお願い致します。

もし場違いな質問だと言う事であれば、削除いたします。

引用返信 編集キー/
■20341 / inTopicNo.35)  Re[14]: フロッピードライブを開いた時のイベント取得について
□投稿者/ επιστημη (1074回)-(2008/06/09(Mon) 17:13:05)
επιστημη さんの Web サイト
> ・ユーザーが Explorer 上でフロッピーディスクに対して操作を行おうとした、ことの検出
> であったはずなのにいつの間に
> ・フロッピーディスクが抜かれた、ことの検出
> の話になっているのだろう。

えと、現状の欠点は
「情報を保存しないまま新たなデータを読ませて次のフェーズに行って(行けて)しまう」
だったかと。

で、"データを読ませて"の際に必ずFDの抜き差しが伴うならば、
それを検出できればいぃんぢゃね? ってことで。

引用返信 編集キー/
■20346 / inTopicNo.36)  Re[16]: フロッピードライブを開いた時のイベント取得について
□投稿者/ ぽぴ王子 (383回)-(2008/06/09(Mon) 17:32:26)
ぽぴ王子 さんの Web サイト
> FD の抜き差しで WM_DEVICECHANGE が飛ぶとは限らないです
> (というより、原理的に飛ばない・飛ばせないはずであって、飛ぶとしたらかなり例外的マシン)
> 少なくとも俺の手元にある数台全部飛ばないです。

そうなんじゃないかなー?と思っていましたが、774RRさんに言っていただけると
裏がとれた感じがして(笑)納得です。

> # USB FDD の抜き差しなら飛んできますが・・・

これは考えていませんでした。USB FDDって抜き差し検知の機能があるんですね。
というか、いわゆるA/Bドライブは互換性維持のためだからあえて報告しないだけなのか。

> だとすれば確実に存在するディレクトリ(A:\かな?)をアクセスしますか。
> でもねー、そのたんびにガコガコうるさいよねぇ?

PC-98のドライブに比べると、PC/AT互換機のドライブってうるさいですしね。
ただ、検出できない以上は仕方がないとあきらめるか、ほかの道を探すかぐらい
でしょうか。


> えと、現状の欠点は
> 「情報を保存しないまま新たなデータを読ませて次のフェーズに行って(行けて)しまう」
> だったかと。

実は「保存しないまま新たなデータを読まないようにしましょう」って張り紙をしておくだけで
なんとかなったりするような話だったりして。
引用返信 編集キー/
■20349 / inTopicNo.37)  Re[17]: フロッピードライブを開いた時のイベント取得について
□投稿者/ 渋木宏明(ひどり) (776回)-(2008/06/09(Mon) 18:07:32)
渋木宏明(ひどり) さんの Web サイト
>># USB FDD の抜き差しなら飛んできますが・・・
>
> これは考えていませんでした。USB FDDって抜き差し検知の機能があるんですね。

メディアの抜き差しは分からないでしょ?

ドライブの USB 接続・切断時になら WM_DEVICECHANGE 他が飛んでくるはずですが、メディアの挿抜は FDD が USB 接続であるかどうかにかかわらず、通知されなかったと思います。

引用返信 編集キー/
■20352 / inTopicNo.38)  Re[18]: フロッピードライブを開いた時のイベント取得について
□投稿者/ 774RR (193回)-(2008/06/09(Mon) 18:23:53)
御意。
FDD = Drive の PnP 時には WM_DEVICECHANGE がきます
FD = DiscMedia の挿入除去ではきません、の意
# 誤読する人が出るのではないかなと思っていたがやはりか・・・
引用返信 編集キー/
■20355 / inTopicNo.39)  Re[19]: フロッピードライブを開いた時のイベント取得について
□投稿者/ ぽぴ王子 (384回)-(2008/06/09(Mon) 18:28:24)
ぽぴ王子 さんの Web サイト
No20352 (774RR さん) に返信
> 御意。
> FDD = Drive の PnP 時には WM_DEVICECHANGE がきます
> FD = DiscMedia の挿入除去ではきません、の意
> # 誤読する人が出るのではないかなと思っていたがやはりか・・・

すいません。おもいっきり誤読してしまいました orz
引用返信 編集キー/
■20357 / inTopicNo.40)  Re[19]: フロッピードライブを開いた時のイベント取得について
 
□投稿者/ れい (630回)-(2008/06/09(Mon) 18:31:02)
No20340 (じゅで さん) に返信
> 上記の何通りかのやり方というと
> どのような感じのものがあるでしょうか?

えーと。
極めて普通の方法です。
OSの仕組みを考えて、
上から順番に実現できそうな層・コンポーネントを探していくだけです。

> そして、フックするとして、どのメッセージをフックするのが良いのか
> というのと、フックなんかしなくてもAPIが用意されていたりします?

当然、最初にAPIを探しますが、
「ドライブを開いたときに呼ばれる通知」
なんてものは無いでしょう。

なら、何とかして無理やり処理を割り込ませるしかない。

エクスプローラーでAを開こうとしたときに、
OSの各コンポーネントがどう振舞っているか、
その各コンポーネントとのどこに割り込ませたらいいかを考え、
一番うまく出来そうなのを選べばよいかと。

以下、かなり馬鹿らしいものも含まれてますが。

いちばんUI寄りな「画面」だと、例えば
「画面のキャプチャからAを開いていると認識する」
とか言うのも絶対できないわけではないですね。当然却下ですが。

エクスプローラをフックという手もありますね。
バージョン依存とかレイアウト依存がきついので、
絶対出来ないわけではないですが、私は嫌ですねぇ。

で、私なら次はシェル周りを調べるでしょう。
残念ながら私はシェルを殆ど扱ったことがないので…。もう忘れました。
もしかしたらなにか方法があるかもしれません。

で、シェルがだめなら次はWin32サブシステムを見ます。
が、これは殆どいじれないので…却下。

するともうカーネルに入っちゃいますね。
一番上はファイルシステムフィルタドライバ。
Aへのアクセスを拾って解析しちゃうフィルタ。
たぶんこの策が一番楽でしょう。
実際作るなら、フィルタドライバとVB6で通信することになりますね。
もうそれをVB6と言えるかどうか謎ですが。

次はstorageクラスドライバやfloppyデバイスドライバへのフィルタ。
もしくはデバイスドライバ自体の置き換え。
ドライブ番号を付け替えて自作のドライバに回してもいい。
これもまぁ殆どのことができます。

さらに激しいことをするなら、
FDDドライブの挿入検知スイッチとかシークランプから電気的にシグナルをとって、
それをデジタルI/Oなどで取得してもいい。
専用ハードと工作が必要ですが、プログラムはVB6でOK。

そうなってくるともういっそのこと、
USBの電気式ロックを作ってFDDに取り付けちゃったらいい。
VB6でUSBとか出来ますしね。

まぁこんな感じで、金と時間と能力が無限にあれば、何でも出来ます。
が、どれもかなりつらいですね。
現実的じゃない。

最後の「USBロック」なら3万円+一週間程度でできるかなぁ…
フィルタドライバなら1ヶ月とかでしょうか。
そんなHandMade感あふれるプロダクツを業務に使うのはどうかと思いますが。

あ。そうそう。
SCSIのフロッピーで、Aドライブとして使えるものがあります。
で、その中に「メディアのロック」ができる物があったかと思います。
それを使えばVB6からDeviceIoControlでFDDの交換防止ができるはずですが。
引用返信 編集キー/

<前の20件 | 次の20件>
トピック内ページ移動 / << 0 | 1 | 2 >>

管理者用

- Child Tree -