WinXP・VB6SP6の環境で、SquirrelMailというウェブメールのHTMLを操作するプログラムを作っています。
データはWebBrowserでPOSTするのですが、第4引数のPostDataはVarType(バイト配列)だということを知り、メーラーへのログインは以下のコードで解決しました。
****************************************
Dim strData As String
Dim lngData As Long
Dim bytData() As Byte
strData=(POSTする文字列)
lngData = Len(strData)
ReDim bytData(lngData) As Byte
For i = 0 To lngData - 1
bytData(i) = Asc(Mid(strData, i + 1, 1))
Next
WebBrowser.Navigate2 URL, , , bytData
****************************************
しかし、上記はログインデータであるため、URLに対し、ID・パスワードである半角英数字の1バイト文字をPOSTしており、メール送信を行う際は、当然タイトル、内容に漢字、ひらがななどの2バイト文字が含まれるため、上記のコードではオーバーフローが起こります。
下記も参照したのですが解決策が思いつきません。ご教授願えますでしょうか。
****************************************
http://madia.world.coocan.jp/cgi-bin/VBBBS/wwwlng.cgi?print+200511/05110090.txt
http://madia.world.coocan.jp/cgi-bin/VBBBS/wwwlng.cgi?print+200405/04050020.txt
ADODB.Streamオブジェクトを使ってString型をShift-JISコード列にするとか
もっと安直にStrConv()関数を使うとかがあります
安直な例:
Dim v As Variant
Dim buf() As Byte
buf = StrConv("abcあいうdef", vbFromUnicode)
For Each v In buf
Debug.Print Right$("0" & Hex$(v), 2);
Next
※最近VBやってないのでちょっとあやふや
ツイート | ![]() |