- PR -

C#でWin32APIの呼び出し

投稿者投稿内容
未記入
大ベテラン
会議室デビュー日: 2005/08/25
投稿数: 145
投稿日時: 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

と何が違うのでしょうか?

呼び出し方というのでしょうか、なんと表現していいか
妥当な言葉が見つからないのですが
この二つの違いについてご存知の方教えていただけると嬉しいです。
かるあ
ぬし
会議室デビュー日: 2003/11/16
投稿数: 1190
お住まい・勤務地: センガワ→ムサシノ
投稿日時: 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
_________________
かるあ のメモスニペット
未記入
大ベテラン
会議室デビュー日: 2005/08/25
投稿数: 145
投稿日時: 2007-03-23 14:43
すいません。書き方が下手でした。

違いはおぼろげながらわかるのですが

[DllImport("OLE32.DLL")]
public extern static HRESULT CoCreateInstance

これを

using OLE32.DLL;

こんな感じでできないのかなと思いまして質問させていただきました。
Hongliang
ぬし
会議室デビュー日: 2004/12/25
投稿数: 576
投稿日時: 2007-03-23 14:49
全く違うものなので当然できません。

で、本筋なのか全くの筋違いなのか判断に迷うところですが、リンク先にもあるとおり CoCreateInstance するぐらいなら ComImport 使って定義した方が便利です。
未記入
大ベテラン
会議室デビュー日: 2005/08/25
投稿数: 145
投稿日時: 2007-03-23 14:57
できないのですか。ありがとうございます。

同じDLLで呼び出し方が
usingを使うのと
DllImportを使うので分かれるのでしょうか?
素朴な疑問です。

CoCreateInstanceではなくComImportというのが便利なのですか
ありがとうございます。
DirectPlayで音声通信をしようと思って
C++で書かれた文献をC#に翻訳している最中なのですが
なかなか難儀しております。
burton999
ぬし
会議室デビュー日: 2003/10/06
投稿数: 898
お住まい・勤務地: 東京
投稿日時: 2007-03-23 15:03
Win32APIはアンマネージコードだからです。
未記入
大ベテラン
会議室デビュー日: 2005/08/25
投稿数: 145
投稿日時: 2007-03-23 15:16
マネージコードとアンマネージコードがあるんですね。
ありがとうございます。
僕の中のもやもやが解消されました。
すっきりです。
じゃんぬねっと
ぬし
会議室デビュー日: 2004/12/22
投稿数: 7811
お住まい・勤務地: 愛知県名古屋市
投稿日時: 2007-03-23 15:42
引用:

未記入さんの書き込み (2007-03-23 14:57) より:

同じDLLで呼び出し方が
usingを使うのと
DllImportを使うので分かれるのでしょうか?
素朴な疑問です。


using で DLL (関数) の呼び出しはできません。
そもそも同じ土俵で比べること自体が間違っているのです。

マネージコード / アンマネージ コードかどうかは、using 自体には直接関係のないお話です。
(なぜなら、"呼び出しができる" という前提が間違っているのですから)

_________________
C# と VB.NET の入門サイト
じゃんぬねっと日誌

スキルアップ/キャリアアップ(JOB@IT)