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

VBAでのWindows API関数EnumWindowsの定義は下記になっています。

Declare Function EnumWindows Lib "user32" (ByVal lpEnumFunc As Long, ByVal lParam As Long) As Long

そこで、コールバック関数(lpEnumFunc)へのパラメータ(lParam)に文字列を指定したくて定義を下記のように変更しましたが旨く行きません。(定義をこのように変更することが許されているかも分っていませんが)
  変更前:ByVal lParam As Long
  変更後:ByRef lParam As String

EnumWindowsのコールバック関数へのパラメータに文字列を指定する方法があれば教えて頂きたくよろしくお願いします。

A 回答 (2件)

ByRef lParam As String


じゃなくて
ByVal lParam As String
じゃないとダメなんじゃないかと思います。

あと、文字列はそのままではダメみたいです。

EnumWindows AddressOf EnumWindowProc, StrConv("hoge",vbUnicode)

みたいにしないと文字化けしてしまいました。
    • good
    • 0
この回答へのお礼

教えて頂いたとおりの修正で旨くいきました。

Long型のlParamでのコードが、これですっきりした分り易いコードとすることができました。

早速回答頂きありがとうございました。

お礼日時:2011/04/01 15:14

何がどううまくいかないのかを書いて頂かないと?



EnumWindows の型を変えたのなら関連する関数等の型もすべて変更されたのでしょうか?
    • good
    • 0

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