hWnd = FindWindow(vbNullString, "アプリ")
hWnd = GetDlgItem(hWnd, 1002)
Call SendMessage(hWnd, WM_GETTEXT, 100, moji)
で取得しているのですが
なぜか一文字しか取得できません。
ちょっと聞きたいのですが第三引数に割り当てるのは
バイト数でしょうかそれとも文字数でしょうか?
一応100を割り当てているのですが
多く割り当てようと
一文字しか取得できません
どなたかご教示くださいませんか?
(mojiがString型変数の場合)
>一応100を割り当てているのですが
はmojiというString型変数に対してもやっていますか?
moji = String$(100, vbNullChar)
のように。
(取得した文字はvbNullCharの位置でLeft関数で切り出すのが一般的)
>ちょっと聞きたいのですが第三引数に割り当てるのは
>バイト数でしょうかそれとも文字数でしょうか?
はDeclare宣言によります。
→SendMessageのDeclare宣言文を載せてもらわないとどうも回答できない。
第4引数を ByVal lParam As Stringとしているなら
>moji = String$(100, vbNullChar)
としているなら、100になりそう。(Ansi文字列に変換したときに100バイトになるから)
あ〜.NETだった罠 orz
.NETの場合は一般的に文字列を取得するときはString型よりも
StringBuilderを使い且つ、UnmanagedTypeを指定ます。
参考
KEN's .NET [特集6] GetPrivateProfileStringにみるAPIの使用方法
http://www5b.biglobe.ne.jp/~yone-ken/VBNET/special/sp06_GetPrivateProfileString.html
Blueさん、
一応解決にします。
提示してもらったところはよく分かりませんが、
初期化の所で
moji = " "
としてやるとなぜか取得できる文字が増えました。
テキトーかもしれませんが、困ったらそこのサイトも拝見させていただきます。
サンクスです。
ツイート | ![]() |