Help us understand the problem. What is going on with this article?

C#からWindows API(Win32API)を使いたいときに参考になるサイト集

自分はあまり深くは理解できていないが、良さそうなとこを挙げてみる。

APIを探す

  • Windows API リスト(公式) カテゴリー別になっており使いやすそう。※日本語のほうはリンクが切れている模様。

(やりたいことからAPI名を調べる場合は、ググったほうがはやい。)

API定義のC#での書き方

API名が判明している前提。

  • PInvoke
    公式からも参照されている。Dll名やAPI名が分かっていればここから探せる。

  • NativeMethods.cs - Microsoft
    internal classなので直接呼び出しはできないが、定義コードは参考になる。
    .Netの基本機能のなかで使われているものだけが定義されているようで、網羅はされていないので注意(例えばSendMessageがない)。

    ちゃんと理解できていない(HandleRefのあたりとかがよくわからない)ので一旦削除します。
    ・・・HandleRefこの辺 公式 によるとGC対策っぽいけど型のサイズが合ってないような。。。
    ⇒型の扱いについては特殊なルールが適用されているよう

なお、SendMessageIntPtr型のパラメータをintで書いているようなサイトのコードは64bit環境を考慮していないので、そのままでは使わないほうがよい。(msgパラメータはuint(もしくはint)だが)

属性の指定

属性([return: MarshalAs(UnmanagedType.Bool)]みたいなの)のつけかた。

型の読み替え

.Net(C#)とWin32API(C言語)の型の対応関係(読んでないけど挙げてみる())

構造体のPacking(アライメント) 32bit/64bit

まとまったサイトは未発見。

とりあえずはまったのでリンクしておく:
C# SendInputによるマウス操作の落とし穴 - 64bitの罠

Why do not you register as a user and use Qiita more conveniently?
  1. We will deliver articles that match you
    By following users and tags, you can catch up information on technical fields that you are interested in as a whole
  2. you can read useful information later efficiently
    By "stocking" the articles you like, you can search right away
Comments
Sign up for free and join this conversation.
If you already have a Qiita account
Why do not you register as a user and use Qiita more conveniently?
You need to log in to use this function. Qiita can be used more conveniently after logging in.
You seem to be reading articles frequently this month. Qiita can be used more conveniently after logging in.
  1. We will deliver articles that match you
    By following users and tags, you can catch up information on technical fields that you are interested in as a whole
  2. you can read useful information later efficiently
    By "stocking" the articles you like, you can search right away