C# と VB.NET の質問掲示板

ASP.NET、C++/CLI、Java 何でもどうぞ

C# と VB.NET の入門サイト

Re[5]: ReplyMessageについて


(過去ログ 19 を表示中)

[トピック内 11 記事 (1 - 11 表示)]  << 0 >>

■7934 / inTopicNo.1)  ReplyMessageについて
  
□投稿者/ ゆめりん(初心者) (5回)-(2007/09/20(Thu) 11:17:11)

分類:[C#] 

教えてください。

DllImport("USER32.dll")を使用し、ReplyMessage(long lResalt)を
使用しています。

デバック時、アンマネージターゲットシグネチャが一致していないことが原因で
スタックを不安定にしていると警告が出ました。

ReplyMessage(1)


どうすれば正常にReplyMessageを送信できるでしょうか?

よろしくお願いいたします。

引用返信 編集キー/
■7936 / inTopicNo.2)  Re[1]: ReplyMessageについて
□投稿者/ Blue (345回)-(2007/09/20(Thu) 11:29:53)
>http://msdn2.microsoft.com/en-us/library/ms644948.aspx
より引数はLRESULTとなっているので
>ReplyMessage(long lResalt)
longではないのでは?→intでは?

long型→64ビットの数値型
LRESULT→Win32APIでのLONG型→32ビットの数値型


また戻り値のBOOL型についても32ビットの整数型です。
引用返信 編集キー/
■7941 / inTopicNo.3)  Re[2]: ReplyMessageについて
□投稿者/ 渋木宏明(ひどり) (369回)-(2007/09/20(Thu) 12:06:03)
渋木宏明(ひどり) さんの Web サイト
> >ReplyMessage(long lResalt)
> longではないのでは?→intでは?

IntPtr が正解。
LRESULT は 64bit 環境だと 64bit す。

>また戻り値のBOOL型についても32ビットの整数型です。

も、bool で受けた方がよろしいかと。
(マーシャラは理解してくれます)

引用返信 編集キー/
■7942 / inTopicNo.4)  Re[3]: ReplyMessageについて
□投稿者/ Blue (347回)-(2007/09/20(Thu) 12:15:52)
2007/09/20(Thu) 12:21:19 編集(投稿者)

>LRESULT は 64bit 環境だと 64bit す。

>DllImport("USER32.dll")を使用し
という前提だったので32bitでいいのかと思っていましたが、XXX32.dllでも64bitになる可能性があるのでしょうか?
(そのつもりでの "Win32 APIで" と書いた。)

どちらにせよIntPtrのほうが正しいでした。
引用返信 編集キー/
■7943 / inTopicNo.5)  Re[3]: ReplyMessageについて
□投稿者/ Hongliang (191回)-(2007/09/20(Thu) 12:48:34)
Hongliang さんの Web サイト
> >また戻り値のBOOL型についても32ビットの整数型です。
>
> も、bool で受けた方がよろしいかと。
> (マーシャラは理解してくれます)

UnmanagedType.Bool の MarshalAs 属性を付けて 4 バイト値であることを明示しろ、と FxCop 先生が仰っています。
引用返信 編集キー/
■7944 / inTopicNo.6)  Re[4]: ReplyMessageについて
□投稿者/ 渋木宏明(ひどり) (370回)-(2007/09/20(Thu) 13:00:05)
渋木宏明(ひどり) さんの Web サイト
> >DllImport("USER32.dll")を使用し
> という前提だったので32bitでいいのかと思っていましたが、XXX32.dllでも64bitになる可能性があるのでしょうか?

ありますよ。

64bit Windows でも User32.dll は User32.dll というファイル名です。(すごくイヤだけど)

引用返信 編集キー/
■7945 / inTopicNo.7)  Re[4]: ReplyMessageについて
□投稿者/ 渋木宏明(ひどり) (371回)-(2007/09/20(Thu) 13:01:00)
渋木宏明(ひどり) さんの Web サイト
> UnmanagedType.Bool の MarshalAs 属性を付けて 4 バイト値であることを明示しろ、と FxCop 先生が仰っています。

暗黙変換はよくないってこと?>FxCop
引用返信 編集キー/
■7946 / inTopicNo.8)  Re[5]: ReplyMessageについて
□投稿者/ Blue (348回)-(2007/09/20(Thu) 13:08:50)
No7944 (渋木宏明(ひどり) さん) に返信
> ありますよ。
>
> 64bit Windows でも User32.dll は User32.dll というファイル名です。(すごくイヤだけど)
へぇ、そうなんですか。
(64bit Windowsをつかったことないから)
XXXX64ってのにしてあるかと思っていました。

ちなみに、Win64 APIって言い方はあるのかなぁ?と。
引用返信 編集キー/
■7950 / inTopicNo.9)  Re[6]: ReplyMessageについて
□投稿者/ 魔界の仮面弁士 (430回)-(2007/09/20(Thu) 14:29:28)
No7946 (Blue さん) に返信
> ちなみに、Win64 APIって言い方はあるのかなぁ?と。

正式か公式か俗称かはともかく、実際に使用されてはいるようですね。
http://www.google.co.jp/search?q="Win64+API"+site:microsoft.com

# そういえば、大昔には Win32c とか Win32s なんて呼び名もあったなぁ…。関係ないけど。
引用返信 編集キー/
■7968 / inTopicNo.10)  Re[5]: ReplyMessageについて
□投稿者/ ゆめりん(初心者) (6回)-(2007/09/20(Thu) 17:37:15)
みなさん、ありがとうございました。

IntPtr型に変更したらうまくいきました。


解決済み
引用返信 編集キー/
■8026 / inTopicNo.11)  Re[6]: ReplyMessageについて
□投稿者/ 渋木宏明(ひどり) (375回)-(2007/09/21(Fri) 12:10:19)
渋木宏明(ひどり) さんの Web サイト
>>64bit Windows でも User32.dll は User32.dll というファイル名です。(すごくイヤだけど)
> へぇ、そうなんですか。
> (64bit Windowsをつかったことないから)
> XXXX64ってのにしてあるかと思っていました。

たぶん、名指しで LoadLibrary() してるアプリ(32bit → 64bit 移植組み?)とかがいた場合の対策なんじゃないかとは思います。

個人的には、そんな中途半端な対応してるアプリなんか淘汰されてしまえ!と思いますが、そんなこと言うと、.NET で DllImport してるアプリは全滅とゆー (^^;

まぁ、最初に xxx32.dll なんて名前をつけたヤツがA級戦犯というtこで ;-p

引用返信 編集キー/


トピック内ページ移動 / << 0 >>

このトピックに書きこむ

過去ログには書き込み不可

管理者用

- Child Tree -