- 締切済み
HINSTANCEの名前空間
C#2008で開発しています。 HINSTANCE hInstDLL; と宣言したのですがHINSTANCEに赤波線が引かれてしまいます。 型または名前空間が見つからないらしいです。 なんと宣言すればよいのでしょうか?
- みんなの回答 (2)
- 専門家の回答
みんなの回答
- bluecampus
- ベストアンサー率66% (138/209)
>調べた結果 >HINSTANCE hInstDLL; >にたどり着いたのですが・・・ どのようにしてたどり着いたのでしょうか? C言語やC++ではwindows.hをincludeすることによってLoadLibraryの戻り値を格納できますが、、、 というか LoadLibrary の戻り値は HINSTANCEではなく HMODULE です。 <MSDN> http://msdn.microsoft.com/ja-jp/library/cc429241.aspx C#では HINSTANCE や HMODULE は定義されていませんし、C言語のように何かをincludeすれば解決できるようなものではありません。 C#では、IntPtrを使って、何らかのポインタというような扱いにするのが一般的です。 (参考) http://msdn.microsoft.com/ja-jp/library/cc465464.aspx ちなみに LoadLibrary は何のために必要でしょうか? C#であればあまり出番はないような気もしますけど。
- D-Matsu
- ベストアンサー率45% (1080/2394)
こういう話ですか? http://smdn.invisiblefulmoon.net/programming/tips/get_hinstance/ インスタンスハンドルはHINSTANCEではなくてIntPtrみたいですが。
補足
ありがとうございます。 LoadLibrary関数の戻り値を入れる変数を作りたいです。 調べた結果 HINSTANCE hInstDLL; にたどり着いたのですが・・・
お礼
[DllImport("kernel32")] static extern IntPtr LoadLibrary(string lpFileName); に変えたらできました。
補足
何個か前に質問にある「読み込むdllが名前違いでたくさんある場合について」を実装しています。 IntPtrにしてLoadLibraryを実行してみました。 戻り値が0になっているのですが 正しいのでしょうか?