8/24の質問とほぼ同内容ですがお許し下さい。
出来る事なら8/24の質問を削除したいのですが。
題名が質問内容と変わってしまったので、
改めて質問させていただきます。
vb.netにてOS起動完了を認識する事はできるでしょうか?
USBメモリを刺しっぱなしでPCに電源を投入すると、
スタートアップに登録されているUSBメモリ認識アプリが
USBメモリを認識できません。
OSが立ち上がり切れていないため、認識できないようです。
USBメモリ認識アプリ起動後、ツールバーにUSBのインジケータが
表示されている事から、
スタートアップ→USBメモリ認識
となっているようです。
これを解消し、スタートアップでメモリを認識させたいです。
そこで、OS起動完了時にUSBメモリ認識アプリを実行したいのですが、
.netでOS起動完了を検知する事ができますでしょうか?
スタートアップでアプリを起動し、アプリ内部でOS起動完了を待ってから、
実処理に移ろうと考えてます。vbでOS起動完了を検知したら次の処理に
移るという記述をしようと考えています。
このような事が可能でしょうか?
何を以ってOS起動完了とするか・・・
システムサービスの遅延起動もありますし、処理が重い機能のものが
あれば、CPU負荷はなかなか軽くならない。
USBのデバイス認識を行うと、そのイベントが発生しますので、そ
れを取得して・・・と言うのもありますが、アプリの起動が必ずその
USBデバイスの認識前だとは言えないので・・・
よって、SetupAPI関連の機能を使ってデバイスを列挙し、目的のもの
が認識されるのを待つような仕組みが必要ではないですか?
以上。参考まで
オショウ様、ありがとうございます。
OS起動完了の定義は自分ではしっかりしていません。
すいません。OS起動完了していれば、当然、USBも認識
しているだろうくらいにしか考えていなかったので。
厳密に言えば、USBの有無を確認完了のタイミングというのが
知りたいです。
USBの有無を確認してから、USB認識アプリを起動したいのです。
システムサービスの遅延というのは、意図したカスタマイズ
による物でしょうか?
XpEmbeddedなので特殊なのかもしれませんが、起動に関してはカスタマイズ
しておらず、ごく一般的な起動をするものと考えてます。
説明不足だった点を、補足させて下さい。
USB認識アプリは、
①USBメモリを認識しなかったら、Aアプリを呼び出す。
②認識した場合、USB認識アプリのフォームを表示し続ける。
という機能を実現する物です。
せっかくのアドバイスで申し訳無いのですが、
目的の物が認識されるまで待つとしてしまうと、
②が実現できなくなってしまいそうです。
上の発言ですが、
『②が実現できなくなってしまいそうです。』
ではなく、
『①が実現できなくなってしまいそうです。』
の間違いです。
すいません。
Embededですか・・・一番厄介でもあり、環境のセットアップ
では、融通がきくものでもあり・・・
まずUSBに認識は、BIOS側とOS側に分かれます。
タイミングは、CPU負荷にも左右され、特にOS起動時は
不安定です。
よって、極論を言うと・・・
※私がやった手法ですので、いかなる環境でもOKではありません。
システムサービスで一番遅く立ち上がるものを見定め、スタート
アップに登録した独自アプリが起動した時点で、そのサービスが
起動していれば、ほぼOSの起動は終わりつつあると推測。
そこから一定時間待ってからデバイス検索を行い、目的のものが
認識されていたら・・・
と言う順序です。
もっと確実に行うなら、スタートアップにアプリを登録するので
はなく、システムサービスに遅く立ち上がるであろうサービスに
依存関係を持たせた独自サービスを作り稼働させ、同様の行為を
行わせ、サービス側からデスクトップに指定にアプリを起動させ
る。と言う方法もありかと。
私は、後者のシステムサービスで行っています。
因みに、ちゃんと作ると、WinXP/VISTA/Win7でも、同様にサービス
側からデスクトップにアプリ起動ができます。
以上。参考まで
> USB認識アプリは、
> ①USBメモリを認識しなかったら、Aアプリを呼び出す。
> ②認識した場合、USB認識アプリのフォームを表示し続ける。
> という機能を実現する物です。
このアプリは①の状態の時にUSBメモリを挿したら
②になってくれるの?
逆に②の状態で抜いたら①になってくれるの?
なるんだったらOS起動とか関係ないよね。
その瞬間に認識できるかどうかだけの条件で表示を
切り替える事になるから。
切り替わらないんだったら、アプリとして実行時エラー
続出して使えないんじゃないの?「ネットワークに接続
されていません」アイコンのイメージで捉えてるんだけど。
オショウ様ありがとうございます。
前者の方法で検討しております。
設定ではなく、アプリの上書きなどの方が、手軽で
自分以外の人間にも対策してもらい易いためです。
alg.exe、ファイアウォールを立ち上げているサービス?
が結構遅めに立ち上がってるようなので、このサービス
から一定時間sleepさせてから実処理を行おうかと検討しております。
ラスク様ありがとうございます。
説明不足です。申し訳無いです。
①で、Aアプリを立ち上げると同時にUSB認識アプリは自分を落とします。
USBメモリが刺しっぱなしで起動されたかどうかを判定したいです。