次の方法で共有

Windows API の 関数「EnumWindows」「EnumChildWindows」の引数「lParam」のビット数について

Anonymous
2020-08-20T00:25:38+00:00

Excelにて、Windows API 関数 「EnumWindows」「EnumChildWindows」を使用しております。

Windows7(32bit)では正常に動作しましたが、Windows10(64bit)では異常終了します。

Windows10(64bit)にて、以下のように宣言すると、異常終了します。

Private Declare PtrSafe Function EnumWindows Lib "user32.dll" (ByVal lpEnumFunc As LongPtr, ByVal lParam As LongPtr) As Long

しかし、以下のように宣言すると、正常に動作しました。

Private Declare PtrSafe Function EnumWindows Lib "user32.dll" (ByVal lpEnumFunc As LongPtr, ByVal lParam As Long) As Long

恐らくではありますが、引数「lParam」につきまして、64bit環境下でも32bitのままではないでしょうか。

これは意図的なものでしょうか。それとも、不具合でしょうか。

型「LPARAM」の、VBAとの互換性につきましては、以下のページに記載がございます。

https://docs.microsoft.com/ja-jp/office/client-developer/shared/compatibility-between-the-32-bit-and-64-bit-versions-of-office

引数「lParam」に変数のアドレス(64bit)を指定したくても出来ず、困っております。

ご回答いただけますと、幸いです。

開発者テクノロジ | Visual Basic for Applications

ロックされた質問。 この質問は、Microsoft サポート コミュニティから移行されました。 役に立つかどうかに投票することはできますが、コメントの追加、質問への返信やフォローはできません。

0 件のコメント コメントはありません

3 件の回答

並べ替え方法: 最も役に立つ
  1. Anonymous
    2020-08-20T02:21:41+00:00

    早々にご返信いただきまして、ありがとうございます。

    Excelは2019、Excelのビット数は64bitとなります。

    本ご質問を送信する際に OSやExcelのバージョンの選択欄があった為 記載を省きましたが、表示されておりませんでした・・・

    この回答は役に立ちましたか?

    0 件のコメント コメントはありません
  2. Anonymous
    2020-08-20T01:50:39+00:00

    Excelのバージョンと、Excelが64bit版なのか32bit版なのか確認したほうがいいでしょう。

    Windowsが64bit版でもExcelが32bit版であれば、32bit版として処理する必要があります。

    この回答は役に立ちましたか?

    0 件のコメント コメントはありません
  3. Anonymous
    2020-08-20T01:50:32+00:00

    Excelのバージョンと、Excelが64bit版なのか32bit版なのか確認したほうがいいでしょう。

    Windowsが64bit版でもExcelが32bit版であれば、32bit版として処理する必要があります。

    この回答は役に立ちましたか?

    0 件のコメント コメントはありません