-
USBメモリーの存在確認を行うために、 PCのハードウェア情報の取得をWMI(Windows Management Instrumentation)を使います。
ManagementObjectSearcherクラスを使って、WMIの情報を取得します。
WMIにはいろいろな情報を持っていますが、それを取得するための言語WQL(WMI Query Language)を使って取得します。
SQL言語のような記述で、以下のソースの中では
「SELECT * FROM Win32_DiskDrive where InterfaceType='USB'」
の部分です。
ManagementObjectSearcherクラスのコンストラクタの第1引数のスコープの指定で、"root\cimv2"と設定します。
この"root\cimv2"はシステム管理者にとって関心のあるWMIクラスのほとんどが格納されているそうです。
(cimv2とはCommon Information Model Version 2 というらしい)
さてSELECT文の中のWin32_DiskDriveですが、 Win32_DiskDriveクラスは、Win32 オペレーティング システムを 実行しているコンピューターで見ることができる物理ディスクドライブを表すそうです。
InterfaceTypeには以下の種類があります。
・SCSI
・HDC
・IDE
・USB
・1394
この中の”USB”を指定します。
'''
尚、上記のプログラムをテストする場合に、プロジェクトの中の参照設定にSystem.Management.dllを追加する必要があります。''' USBメモリの存在チェック ''' ''' <param name="strPNPDeviceID">USBメモリのPNPDeviceID文字列</param> ''' <param name="lst">USB機器を列挙情報</param> '''True:存在する、False:存在しない Public Function CheckExistUSB(ByVal strPNPDeviceID As String, _ Optional ByRef lst As Hashtable() = Nothing) As Boolean '戻り値初期化 CheckExistUSB = False 'USBメモリの存在チェック処理 Try 'WMI(Windows Management Instrumentation)を利用してUSBの情報を取得 Dim searcher As New System.Management.ManagementObjectSearcher( _ "root\CIMV2", _ "SELECT * FROM Win32_DiskDrive where InterfaceType='USB'") '全てのUSB機器を列挙 For Each queryObj As System.Management.ManagementObject In searcher.Get() Dim s As String = "" If Not lst Is Nothing Then 'USB機器の情報をHashtableに格納 Dim hash As New Hashtable hash.Add("Caption", queryObj("Caption")) hash.Add("DeviceID", queryObj("DeviceID")) hash.Add("PNPDeviceID", queryObj("PNPDeviceID")) 'Hashtableの配列に格納 Dim i As Integer = LBound(lst) If Not lst(0) Is Nothing Then i += 1 ReDim Preserve lst(i) End If lst(i) = hash End If '指定のPNPDeviceIDが等しいかチェック If queryObj("PNPDeviceID") = strPNPDeviceID Then '指定のUSBメモリが見つかった CheckExistUSB = True Exit For End If Next Catch ex As System.Management.ManagementException MsgBox("WMI Error: " & ex.Message, MsgBoxStyle.Critical) End Try End Function '''''' USBをチェックするためのボタンClickイベント ''' Private Sub Button6_Click(ByVal sender As System.Object, ByVal e As System.EventArgs) Handles Button6.Click 'USB機器を列挙情報用のHashtable設定 Dim lst As Hashtable() ReDim lst(0) 'USBメモリの存在チェック(USB機器を列挙) Me.CheckExistUSB("", lst) 'USB機器を列挙 Dim str As String = "" For i As Integer = 0 To UBound(lst) If i > 0 Then str += vbCr For Each col As System.Collections.DictionaryEntry In lst(i) str &= col.Key & " : " & col.Value & vbCr Next Next MsgBox(str) End Sub
=====
2015/04/16:の時の情報
PR -
C#で作成されたシステムをVB.NETに変換したいことはよく発生します。
WEB上でC#のソースをVB.NETなどに変換してくれるサイトは存在するのですが、 もっと良いものがないかと探してみました。
フリーのソフトで SharpDevelop というC#の開発環境がありました。
これ自体でWindowsFormのアプリケーションを作ることができます。
SharpDevelop
http://www.icsharpcode.net/OpenSource/SD/Default.aspx
これをインストールして動作させてみました。
ダウンロードは以下のURLから「Downloads for SharpDevelop 4.4 」をダウンロードしました。
http://www.icsharpcode.net/OpenSource/SD/Download/
インストールは表示される内容に従って行えば特に問題なく終わります。
以下はSharpDevelopを最初に起動した画面です。
とあるc#のソリューションを読込ませます。
(このソースはあるサイトのオープンソースのものです)
メインメニューの中から以下の操作をします。
[File] ⇒ [Open] ⇒ [Project/Solution... Ctrl+Shift+O]
ソリューションが読込まれた様子がわかります。
そこで、ソリューション全体をVB.NETに変換してみます。
メインメニューの中から以下の操作をします。
[Project] ⇒ [Convert] ⇒ [From C# to VB.NET]
C#のソリューション名が「Socktes」なのでVB.NETの方は「Socktes.Converted」となり、ソースは全て「cs」から「vb」に変わったことが分かります。
1個のC#ソースをVB.NETに変換したい場合は、1個のソースファイルを選択状態にしておいてメインメニューの中から以下の操作をします。
[Tools] ⇒ [Convert code to] ⇒ [VB.NET]
「Generated.vb」というタブが生成されますので、この中身をコピーして別のところにでも貼り付ければOKです。
=====
2015/04/15:の時の情報
-
預金通帳をみると「お利息」という入金がありました。
この利息ですが、会計処理ではどの様に扱うのか?
私は自営業者なので、預金金利の勘定科目は「事業主借」としています。
なのですが、この利息そのものには既に分離課税として20%分が差し引かれています。
これを小口現金の収入換算して所得税の計算に参入すると二重課税になりますし...
ところで、二重課税といえばガソリンがあります。
ガソリン代として半分ぐらいガソリン税が占め、更にその金額に消費税が加わります。
これ何とかならないのでしょうか?
ガソリン税が導入されたのは1970年代かの田中角栄さんの時に導入されたと思います。
道路をいっぱい作る関係から導入したそうですが、これが無くなればガソリンも安くなるのですが。
さて、「利息」の話に戻しますが普通の会社では、相手勘定は「受取利息」として処理すればよい様です。
=====
2015/03/18:の時の情報
-
久々にOracleを動かそうとして、Oracle SQL Developerを起動し、データベースに接続すると接続エラーが発生しました。
エラーメッセージはORA-28001 the password has expired.
どうもパスワードの期限が切れているようです。
調べてみるとOracle11gではデフォルトでユーザのパスワードの期限が180日になっているそうです。
テストで動かすだけなので、SYSユーザでログインして、ユーザのパスワードを以下のコマンドで変更しました。
alter user 「USERNAME」 identified by 「PASSWORD」;
その後、以下のコマンドでロックを解除します。
alter user 「USERNAME」 account unlock;
これで、接続できるようになりました。
ただ「SQL*Plus」での接続では以下の図のようにエラーが表示されますが、
その後、新規パスワードの入力が促され、そこでパスワードを入力しなおせば再度接続されます。
SIDとしてはテスト用のDB「test」で、ユーザもテスト用のID/PASSを「test/test」して行いました。
オラクルサーバーへの接続文字列としては、@マーク以下「//192.168.1.207/」を頭に付けてローカルなLANのサーバマシンのIPを特定しています。
=====
2015/03/26:の時の情報
-
青ペン書きなぐり勉強法」でなにより重要なのは、達成感です。「ペンを1本使い切った」「今日1日でインクがこんなに減った」と、効果を「見える化」することにより、その量が「こんなにやった!」と自信に変わる。そうすると、義務感にかられての勉強が、「もっとやりたいもの」に変わります。さらに続けると「青ペンを握らないと調子が出ない」と“やみつきになる効果”があります。
「何もかも書く」がポイント
―社会人で、仕事のメモ術として役立てている方もいらっしゃるそうですね。
情報の整理に役立つという声は、よく聞きます。この勉強法は、もともとは授業内容を効率的に復習できる「再現性の高いノート」を作るための技でした。だから、「情報は取捨選択しないで何もかも書く」というのがポイント。当然、ビジネスシーンでも、そのまま使えます。ホワイトボードに書かれた内容や、渡された資料だけを見るのではなく、相手が話したことを「何もかも書く」。
ところがこれが、実際にやってみると、案外難しいのです。全部書こうと思っても、手が追いつかない。無理なことに気がつく。実は、この「気づき」がとても重要なんですね。意識しないと、私たちは自分の「主観」で勝手に情報の取捨選択をしてしまいます。でも、何が重要で、何が重要でないかなんて、通常、瞬時に判断できるはずがありません。だから効率よく復習したいと思ったら、まずは「全部書く!」と決める。そこから、再現性の高いノートが生まれるのです。
元塾生で、「青ペンで勉強していると、大切な試験の当日に、突然、文字が浮き上がって見えてくる」と言った生徒がいました。書きなぐっているときには気づかないのだけれど、いつの間にか脳に「しみ込んで」、ふとしたときに再現される、と。私はこの感覚は「第六感」に近いのではないかと思います。
目で見て声に出し、それを自分の耳で聞きながら、手を動かして記憶する――。五感をフルに活用して勉強すると、私たちの潜在能力が最大限に発揮されるようになるのではないでしょうか。
=====2015/03/18:の時の情報