• ベストアンサー
※ ChatGPTを利用し、要約された質問です(原文:C#: DLL関数に整数の参照を渡すには?)

C# DLL関数に整数の参照を渡す方法

このQ&Aのポイント
  • Visual Studio 2012のC#でDLL関数に整数の参照を渡すプログラムを作成しましたが、期待通り動作しません。
  • マウスのボタンの数を取得してラベルとメッセージボックスに表示するプログラムですが、初期値の8が表示されて参照による取得ができません。また、GetNumberOfConsoleMouseButtons()の戻り値もFalse(0)が表示されます。
  • GetNumberOfConsoleMouseButtons()の使い方について教えてください。

質問者が選んだベストアンサー

  • ベストアンサー
  • wormhole
  • ベストアンサー率28% (1626/5665)
回答No.2

GetNumberOfConsoleMouseButtons()の仕様を確認してなかったんですが、 http://msdn.microsoft.com/ja-jp/library/cc429339.aspx >現在のコンソールで使われているマウスのボタン数を取得します。 と、なってますからコンソールでないと動作しないのでは?

stokyostokyo3
質問者

お礼

wormhole 様 前略 ・コンソールプログラムに変更したらうまくマウスのボタン数がかえってきました。ありがとうございます。  実行結果(コンソール画面のコピー)とプログラムを以下に添付します。 <追記>尚、実験したところ リード線付のマウス×2個では 添付の実行結果のどうりボタン数が3で外観と一致するのですが、通常私がつかっているワイヤレスマウス(ロジクール製)の場合同様にボタン数は3個に見えますが 何故か実行結果ではボタン数が16個となります。昨日はこの16個がプログラムが意図と違う動作をしているのではないかと思い昨日は1日悩んでいました。マウスによってはソフト的に16個もボタンがあるマウスもあるのでしょうかね.......??? //実行結果---------------------------------------------------------- DLL呼出し前: Num = 8 DLL呼出し前: Flag = False DLL呼出し後: Num = 3 DLL呼出し後: Flag = True 続行するには何かキーを押してください . . . //プログラム--------------------------------------------------------------- //Program.cs //GetNumberOfConsoleMouseButtons( )によりマウスのボタン数を取得するプログラム using System; using System.Collections.Generic; using System.Linq; using System.Text; using System.Threading.Tasks; using System.Runtime.InteropServices; // 追加 namespace DDL_Get_NumMouseBtn { class Program { //宣言部 [DllImport("kernel32.dll")] extern static bool GetNumberOfConsoleMouseButtons(ref uint lpNumberOfMouseButtons); static void Main(string[] args) { uint Num; bool Flag = false; Num = 8; Console.Write("DLL呼出し前: Num = {0:d}\n", Num); Console.Write("DLL呼出し前: Flag = {0:d}\n", Flag); Flag = GetNumberOfConsoleMouseButtons(ref Num); //関数の呼び出し Console.Write("DLL呼出し後: Num = {0:d}\n", Num); Console.Write("DLL呼出し後: Flag = {0:d}\n", Flag); } } }

その他の回答 (1)

  • wormhole
  • ベストアンサー率28% (1626/5665)
回答No.1

以下を参考にしてみるといいかも。 http://msdn.microsoft.com/ja-jp/magazine/cc164193.aspx

stokyostokyo3
質問者

お礼

前略  アドバイスありがとうございます。 しかし残念ながら 紹介していただいたURL”CLR 徹底解剖”を何度読んでも 私のC,C#言語レベルでは URLの内容もよく理解できないことから 悩んでおります。 具体的にどのようにコーディングすればよいのか教えていただければ幸いです。 以上