- - PR -
C#でWin32APIの呼び出し
投稿者 | 投稿内容 | ||||
---|---|---|---|---|---|
|
投稿日時: 2007-03-23 14:12
このページを参考に
http://www5.plala.or.jp/atata/references/functions/CoCreateInstance.html http://www.atmarkit.co.jp/fdotnet/dotnettips/024w32api/w32api.html Win32APIのCoCreateInstance関数を呼び出そうと 思っているのですが 参照の追加で using System; こんな感じで設定するのと [DllImport("OLE32.DLL")] public extern static HRESULT CoCreateInstance と何が違うのでしょうか? 呼び出し方というのでしょうか、なんと表現していいか 妥当な言葉が見つからないのですが この二つの違いについてご存知の方教えていただけると嬉しいです。 | ||||
|
投稿日時: 2007-03-23 14:35
なっなんというか、全く別物ですよ。。。
とりあえず MSDN で確認したほうがいい。。。 DllImport属性の使用(MSDN) http://msdn.microsoft.com/library/ja/default.asp?url=/library/ja/vccore/html/vcwlkSysimportAttributeTutorial.asp using ディレクティブ http://msdn.microsoft.com/library/ja/default.asp?url=/library/ja/csref/html/vclrfUsingDirective.asp _________________ かるあ のメモ と スニペット | ||||
|
投稿日時: 2007-03-23 14:43
すいません。書き方が下手でした。
違いはおぼろげながらわかるのですが [DllImport("OLE32.DLL")] public extern static HRESULT CoCreateInstance これを using OLE32.DLL; こんな感じでできないのかなと思いまして質問させていただきました。 | ||||
|
投稿日時: 2007-03-23 14:49
全く違うものなので当然できません。
で、本筋なのか全くの筋違いなのか判断に迷うところですが、リンク先にもあるとおり CoCreateInstance するぐらいなら ComImport 使って定義した方が便利です。 | ||||
|
投稿日時: 2007-03-23 14:57
できないのですか。ありがとうございます。
同じDLLで呼び出し方が usingを使うのと DllImportを使うので分かれるのでしょうか? 素朴な疑問です。 CoCreateInstanceではなくComImportというのが便利なのですか ありがとうございます。 DirectPlayで音声通信をしようと思って C++で書かれた文献をC#に翻訳している最中なのですが なかなか難儀しております。 | ||||
|
投稿日時: 2007-03-23 15:03
Win32APIはアンマネージコードだからです。
| ||||
|
投稿日時: 2007-03-23 15:16
マネージコードとアンマネージコードがあるんですね。
ありがとうございます。 僕の中のもやもやが解消されました。 すっきりです。 | ||||
|
投稿日時: 2007-03-23 15:42
using で DLL (関数) の呼び出しはできません。 そもそも同じ土俵で比べること自体が間違っているのです。 マネージコード / アンマネージ コードかどうかは、using 自体には直接関係のないお話です。 (なぜなら、"呼び出しができる" という前提が間違っているのですから) _________________ C# と VB.NET の入門サイト じゃんぬねっと日誌 |