アプリ版:「スタンプのみでお礼する」機能のリリースについて

ImmGetContextというDLL関係の関数をOfficeで使っています。
32bitから64bitにアップデートしてから定義を変えたら、
コンパイルエラーが起きました。
「型が一致しません」

宣言の仕方は以下の通りです。

Private Declare PtrSafe Function ImmGetContext Lib _
"imm32.dll" (ByVal hwnd As LongPtr) As LongPtr

どうすればコンパイルエラーが起きないように
正常に実行できるでしょうか?

ご存知の方、教えてください。

A 回答 (2件)

ImmGetContext 関数の宣言の記述は64bit用になっていますが、プロシージャ内での各関数の引数と戻り値のデータ型は、各関数の宣言通りの型になっていますか?


異なる箇所が有れば、そこが原因だと考えられますがいかがでしょうか?

宣言内容と使用箇所は一体不可分なので、定義のデータ型を変えたら、同時に使用する箇所も定義に合わせてデータ型を変えなければデータ型の不一致が起きます。
    • good
    • 0

こんにちは


初めからこんなこと書いてごめんなさい
私には原因が分かりませんが、
このAPIは Office365 64ビット版 では動作しない旨の情報がありますね
検証していませんので確度の高い情報とは言えませんが

代替えとしてPhonetic関数を使用する例がありましたが、
使用用途が分からないので出来るのかわかりません。

dllについては
こちらのサイトが参考になるかも知れません。
https://www.exefiles.com/ja/dll/imm32-dll/

API、DLL、組み込み関数、組み込みメソッド、オブジェクト構造などは
バージョン変更などで影響を受ける可能性がありますよね。
2010 2013 2016、への移行時 無駄に時間を使った記憶があります。
    • good
    • 0

お探しのQ&Aが見つからない時は、教えて!gooで質問しましょう!