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

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

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

Re[1]: My.Computer.Infoについて


(過去ログ 127 を表示中)

[トピック内 15 記事 (1 - 15 表示)]  << 0 >>

■75592 / inTopicNo.1)  My.Computer.Infoについて
  
□投稿者/ 鏡月 (30回)-(2015/04/10(Fri) 14:58:27)

分類:[.NET 全般] 

環境
Vistual Studio2010
.NET Framework4.0
Windows フォームアプリケーション

参考サイトURL:http://dobon.net/vb/dotnet/system/wmi_os.html

参考サイトのURLにのっております「My.Computer.Info」を使用し、メモリ使用量を取得しようとしているのですが
'Computer'は'My'のメンバーではありませんとエラーメッセージが出力されてしまいます。

「My.Computer.Info」を使用する場合何か設定等が必要なのでしょうか。

お手数お掛けしますがご教授下さい。
引用返信 編集キー/
■75593 / inTopicNo.2)  Re[1]: My.Computer.Infoについて
□投稿者/ kiku (42回)-(2015/04/10(Fri) 15:11:57)
自身の環境で試してみましたが、
サンプル通りに動作していることを確認しました。
環境依存かと思われます。
引用返信 編集キー/
■75594 / inTopicNo.3)  Re[1]: My.Computer.Infoについて
□投稿者/ shu (728回)-(2015/04/10(Fri) 15:13:43)
No75592 (鏡月 さん) に返信

MyはVB用ですがC#などで試しているとかありませんか?
その場合、再度提示リンク先を見ると分かるかと思います。
引用返信 編集キー/
■75595 / inTopicNo.4)  Re[2]: My.Computer.Infoについて
□投稿者/ 鏡月 (31回)-(2015/04/10(Fri) 15:14:37)
No75593 (kiku さん) に返信
> 自身の環境で試してみましたが、
> サンプル通りに動作していることを確認しました。
> 環境依存かと思われます。
→回答ありがとうございます。
 どこが怪しいかなにかご存知でしょうか。
 私の方でも新規プロジェクトを作成し試してみようと思います。
引用返信 編集キー/
■75597 / inTopicNo.5)  Re[3]: My.Computer.Infoについて
□投稿者/ WebSurfer (539回)-(2015/04/10(Fri) 15:52:01)
No75595 (鏡月 さん) に返信

VB.NET は詳しくないのでハズレかもしれませんが・・・

Windows Forms アプリの My は C# でいう this で、それと VB 独自の My が衝突(?)を
起こしているのではないですか?

参考にされている記事の C# のコードと同様に、以下のようにしたらどうなりますか?

Dim info As Microsoft.VisualBasic.Devices.ComputerInfo = New Microsoft.VisualBasic.Devices.ComputerInfo()
Console.WriteLine("利用可能仮想メモリ:{0}バイト", info.AvailableVirtualMemory)

引用返信 編集キー/
■75598 / inTopicNo.6)  Re[4]: My.Computer.Infoについて
□投稿者/ WebSurfer (540回)-(2015/04/10(Fri) 15:56:25)
No75595 (鏡月 さん) に返信

Windows Form アプリで Console.WriteLine は使えなかったですね。上のコードの Console.WriteLine
は Windows Forms アプリで使えるものに読み替えてください。
引用返信 編集キー/
■75599 / inTopicNo.7)  Re[4]: My.Computer.Infoについて
□投稿者/ 魔界の仮面弁士 (284回)-(2015/04/10(Fri) 16:08:42)
No75597 (WebSurfer さん) に返信
> Windows Forms アプリの My は C# でいう this で、

それは My ではなく Me ですよね?

「_MY何某」系の条件付きコンパイル定数を設定することで
意図的に My.Computer を使えない状態にされている可能性も
考えられます。とはいえ、流石にそんなところを弄るとも思えませんけど。
https://msdn.microsoft.com/ja-jp/library/ms233781.aspx


> それと VB 独自の My が衝突(?)を
> 起こしているのではないですか?
フォーム上に任意のコントロール(Label とか TextBox とか)を貼り、
そのコントロールの名前を「My」にすると、
My.Computer.Info とは書けなくなります。
コントロール名ではなく、フィールド変数などでも同様です。


もし、フォーム上に My という名の別メンバーがあり、
それと競合してしまうような場合には、
  Dim info = Global.WindowsApplication1.My.Application.Info
のように、グローバルルートから辿ればアクセスできます。
(WindowsApplication1 の部分は適宜書き換えて下さい)
引用返信 編集キー/
■75600 / inTopicNo.8)  Re[5]: My.Computer.Infoについて
□投稿者/ 魔界の仮面弁士 (285回)-(2015/04/10(Fri) 16:25:08)
No75598 (WebSurfer さん) に返信
> Windows Form アプリで Console.WriteLine は使えなかったですね。

使えますよ。Windows Form の場合は、[Ctrl]+[Alt]+[O]などで表示される
『出力』ウィンドウに、Console.WriteLine の結果が出力されます。


あるいは Console.WriteLine と似たような機能として、
Debug.WriteLine や Trace.WriteLine もありますね。

これらも、結果は『出力』ウィンドウに表示されることになりますが、
[ツール]-[オプション]-[デバッグ]-[全般] の設定を変更することで、
『出力』ではなく『イミディエイト』ウィンドウに表示させることができたり、
Debug.Listeners を用いて、任意の出力先を設定できるといった違いがあります。
引用返信 編集キー/
■75601 / inTopicNo.9)  Re[4]: My.Computer.Infoについて
□投稿者/ 鏡月 (32回)-(2015/04/10(Fri) 16:25:38)
No75597 (WebSurfer さん) に返信
> Dim info As Microsoft.VisualBasic.Devices.ComputerInfo = New Microsoft.VisualBasic.Devices.ComputerInfo()
> Console.WriteLine("利用可能仮想メモリ:{0}バイト", info.AvailableVirtualMemory)
→ WebSurfer さん回答ありがとうございます。
  infoでMy.Computer.Infoと同様の値を取得することが出来ました。
 ありがとうございます。
引用返信 編集キー/
■75602 / inTopicNo.10)  Re[5]: My.Computer.Infoについて
□投稿者/ WebSurfer (541回)-(2015/04/10(Fri) 16:28:57)
No75599 (魔界の仮面弁士 さん) に返信
> ■No75597 (WebSurfer さん) に返信
>>Windows Forms アプリの My は C# でいう this で、
>
> それは My ではなく Me ですよね?

そうでした。失礼しました。

でも、My を使わなければ問題ないということであれば、原因がはっきりしない
ので対症療法的ではありますが、先の私のレスのようにしたらよさそうに思いま
すがいかがでしょう?>質問者さん
引用返信 編集キー/
■75603 / inTopicNo.11)  Re[5]: My.Computer.Infoについて
□投稿者/ 鏡月 (33回)-(2015/04/10(Fri) 16:33:25)
No75599 (魔界の仮面弁士 さん) に返信
>>それと VB 独自の My が衝突(?)を
>>起こしているのではないですか?
> フォーム上に任意のコントロール(Label とか TextBox とか)を貼り、
> そのコントロールの名前を「My」にすると、
> My.Computer.Info とは書けなくなります。
> コントロール名ではなく、フィールド変数などでも同様です。
→魔界の仮面弁士さん 回答ありがとうございます。
 一応探してみたのですが特に使用しているところは見当たりませんでした。

>
> もし、フォーム上に My という名の別メンバーがあり、
> それと競合してしまうような場合には、
>   Dim info = Global.WindowsApplication1.My.Application.Info
> のように、グローバルルートから辿ればアクセスできます。
> (WindowsApplication1 の部分は適宜書き換えて下さい)
→Dim info = Global.???.My.Application.Infoで記載しました処、「'???'は<Default>のメンバーではありません」とのエラーメッセージが出力されてしまいました。
引用返信 編集キー/
■75604 / inTopicNo.12)  Re[5]: My.Computer.Infoについて
□投稿者/ WebSurfer (542回)-(2015/04/10(Fri) 16:33:53)
No75601 (鏡月 さん) に返信

>   infoでMy.Computer.Infoと同様の値を取得することが出来ました。

すみません、レスが前後してしまいました。

もし、なぜ My ではダメだったかが分かりましたら。教えていただくると幸いです。
引用返信 編集キー/
■75605 / inTopicNo.13)  Re[6]: My.Computer.Infoについて
□投稿者/ 鏡月 (34回)-(2015/04/10(Fri) 16:37:22)
No75602 (WebSurfer さん) に返信
> でも、My を使わなければ問題ないということであれば、原因がはっきりしない
> ので対症療法的ではありますが、先の私のレスのようにしたらよさそうに思いま
> すがいかがでしょう?>質問者さん
→WebSurfer さん回答ありがとうございます。
 WebSurfer さんが教えて下さった内容で問題は無いのですが魔界の仮面弁士 さんに教えて頂いた方法でも
 確認を取ってみたかったので解決済みのチェックを入れずにしているのですがこちらは一度解決済みにした方が よろしいでしょうか?
引用返信 編集キー/
■75606 / inTopicNo.14)  Re[6]: My.Computer.Infoについて
□投稿者/ 魔界の仮面弁士 (286回)-(2015/04/10(Fri) 16:58:18)
No75603 (鏡月 さん) に返信
> →魔界の仮面弁士さん 回答ありがとうございます。
>  一応探してみたのですが特に使用しているところは見当たりませんでした。

エラーメッセージの内容からして、「My」そのものは VB 側に認識されているようです。
ただ、その My の中に、何故か Computer というメンバーが無い状態である、と。

この場合考えられるのは、以下のパターン。

(1) 何らかの理由で、My から Computer が使えなくなっている (例:条件付きコンパイラ定数の設定)
(2) 「My」が、同名の別のオブジェクトを指してしまっている

そして No75599 の冒頭に書いたのが (2) の場合で、
後半に書いたのが (1) の場合です。


> 一応探してみたのですが特に使用しているところは見当たりませんでした。
コードウィンドウに「My」とだけ書き、これを右クリックして
ポップアップメニューから『定義』を選んでみて下さい。

もしそれで、『オブジェクトブラウザー』の "WindowsApplication1.My" にジャンプするなら、
上記 (1) の可能性が疑われます。可能性としては低そうですが。

一方、オブジェクトブラウザーではなく、どこかのコードなどにジャンプするようであれば、
上記 (2) ということになるでしょう。



> →Dim info = Global.???.My.Application.Infoで記載しました処、「'???'は<Default>のメンバーではありません」とのエラーメッセージが出力されてしまいました。

「???」の部分の指定が間違っている時にでるエラーメッセージですね。
「???」の部分には、ルート名前空間の名前を指定して下さい。

これは、'My Project' のプロパティから、[アプリケーション]タブを開いたときに、
右上にある『ルート名前空間(R):』と記述されている部分のことを指しています。

もしもこのルート名前空間の欄が未記入となっている場合には、
 Global.WindowsApplication1.My.Application.Info
ではなく
 Global.My.Application.Info
という形式になります。
引用返信 編集キー/
■75607 / inTopicNo.15)  Re[7]: My.Computer.Infoについて
□投稿者/ 鏡月 (35回)-(2015/04/10(Fri) 17:20:28)
No75606 (魔界の仮面弁士 さん) に返信
>>一応探してみたのですが特に使用しているところは見当たりませんでした。
> コードウィンドウに「My」とだけ書き、これを右クリックして
> ポップアップメニューから『定義』を選んでみて下さい。
>
> もしそれで、『オブジェクトブラウザー』の "WindowsApplication1.My" にジャンプするなら、
> 上記 (1) の可能性が疑われます。可能性としては低そうですが。
>
> 一方、オブジェクトブラウザーではなく、どこかのコードなどにジャンプするようであれば、
> 上記 (2) ということになるでしょう。
→上記操作を試したところ、Resources.Designer.vb内のNamespace My.Resourcesに遷移しました…


>
>
>
>>→Dim info = Global.???.My.Application.Infoで記載しました処、「'???'は<Default>のメンバーではありません」とのエラーメッセージが出力されてしまいました。
>
> 「???」の部分の指定が間違っている時にでるエラーメッセージですね。
> 「???」の部分には、ルート名前空間の名前を指定して下さい。
>
> これは、'My Project' のプロパティから、[アプリケーション]タブを開いたときに、
> 右上にある『ルート名前空間(R):』と記述されている部分のことを指しています。
>
> もしもこのルート名前空間の欄が未記入となっている場合には、
>  Global.WindowsApplication1.My.Application.Info
> ではなく
>  Global.My.Application.Info
> という形式になります。
→無事に取得することが出来ました。
 私のわがままに付き合ってくださってありがとうございました。

解決済み
引用返信 編集キー/


トピック内ページ移動 / << 0 >>

このトピックに書きこむ

過去ログには書き込み不可

管理者用

- Child Tree -