Visual Basic Ver.6 で、MAPIセッションコントロールとMAPIメッセー
ジコントロールを使って、Outlook Express 5 の受信トレイにある
メッセージにアクセスしようとしています。

 メッセージの題名、差出人の名前は、日本語でもちゃんと表示される
のですが、メッセージ内容は次のように文字化けしてしまします。

・$B855$$=$&$G$9$M!*・(B

 なお、テキストボックスは、プロパティで Multiline をtrue にし、
ScroolBar を 2-垂直 としてる以外は標準のまま使っています。
 どうすれば良いかお教えください。

 環境は、Windows98、Office2000シリーズです。また、プログラム
は、「新Visual Basic入門シニア編 Ver.6.0対応(林晴比古著)」
p.176~p.177 に載っているものです。

 あと、このプログラムでは、メッセージ総数を MAPIMessages1.MsgCount
で、数えています。プログラムを走らせると、1度目はちゃんと数える
のですが、プログラムを終了させてもう一度走らせると、メッセージ総数
が2と表示されます。Visual Basic自体を終了させて、もう一度起動し、
プログラムの読込からすると、1回目は、またちゃんと数えるのですが・・・

 もし、よろしければ、この理由も教えてくだされば、ありがたく思います。

このQ&Aに関連する最新のQ&A

A 回答 (1件)

こんにちは.



Visual Basicで開発したことはないですが,以前メールソフトを作ったとき文字化けに悩まされた経験があります.文字化けの原因としては,JISコードとShift-JISコードの違いだと思います.メールの送信時にはShift-JISからJISに変換して送ります.受信するときにはJISからShift-JISに変換してメールを受信します.ということは,上記メッセージはJISコードのままと言うことです.

最初に記述したとおり,Visual Basicでの開発経験はないのでサンプルソースを書くことはできませんが,検索エンジン等で「VB Shift JIS 変換」等とキーワードを入力するとVBの専門家がいろいろと解決方法を記述してくれていますので参考にしてください.

参考URL:http://www.kit.co.jp/vbit/QAndA06.htm
    • good
    • 0
この回答へのお礼

早速、参考URLを見て,これがVB Ver.6でも使えるか試してみようと思い
ます。それにしても、メールの送信時にこのようなコードの変換が行われ
ていたとは知りませんでした。勉強になりました。

お礼日時:2001/08/16 08:53

このQ&Aに関連する人気のQ&A

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

このQ&Aを見た人が検索しているワード

このQ&Aと関連する良く見られている質問

QVisual Basicプログラムのエラーについて

「Visual Basicでエンジョイプログラミング」(CQ出版社)
という本の11章VisualBasicで動かす自作装置の製作方法、
A-Dコンバータの製作と題してA-Dコンバータのプログラムが書いてあるのですが

<同じプログラムが掲載されているホームページ>http://mweb.jrscomware.com/tie/data/KyouzaiDB/bg/07/76aa45a7e4cc774b6976aad26a0709/_5051b778aae80343/b778768d0222/b778768d0222.htm

本に従ってプログラムを書いたのですが、実行しようとしたら
Public Const CLRDTR = 6
Public Const SETDTR = 5
Public Const CLRRTS = 4
Public Const SETRTS = 3
Public Const MS_CTS_ON = &H10&
Public Const MS_DSR_ON = &H20&

の部分が赤色の表示になって
「コンパイルエラー
定数、固定長文字列、配列、ユーザー定義型、
およびDeclareステートメントはオブジェクトモジュールのパブリックメンバとしては使用できません。」
と表示されたのですが、僕はまったくの初心者なので
ヘルプを見てもどのように修正すればいいのか良く分かりません。

何か知っている方がいらしゃいましたら教えてください。よろしくお願いします。

「Visual Basicでエンジョイプログラミング」(CQ出版社)
という本の11章VisualBasicで動かす自作装置の製作方法、
A-Dコンバータの製作と題してA-Dコンバータのプログラムが書いてあるのですが

<同じプログラムが掲載されているホームページ>http://mweb.jrscomware.com/tie/data/KyouzaiDB/bg/07/76aa45a7e4cc774b6976aad26a0709/_5051b778aae80343/b778768d0222/b778768d0222.htm

本に従ってプログラムを書いたのですが、実行しようとしたら
Public Const CLRDTR = 6
Public Const SETDTR = 5
...続きを読む

Aベストアンサー

No 1 の方のおっしゃるように、
(1) プロジェクトエクスプローラの
プロジェクト名を右クリック→追加→標準モジュール
としてそちらに記載するか、

(2) フォームを一つしか使わないのであれば、全部Publicを省いて記述しても大丈夫だと思います。

QactiveX を 使った Visual Basicのプログラム

IteractiveBrokersという株のbrokerのサイトでサンプル プログラムを使いたいのですがよくわかりません。使用方法を下記します
Use the Visual Basic VBClient Sample Program

You can access the server through the ActiveX interface using the Visual Basic sample application.
To run the sample you must:
Install the API sample programs <-インストール完了
Configure the application to support the API components
ー>configure済み
Have MS Visual Studio (Visual Basic 6.0 or higher) installed on your PC. ー>visual studio 2005あり

The VBClient program is a sample program that shows you how to use the TWS ActiveX control to connect to the server from a Visual Basic application.

To use the VBClient program
1.From MS Visual Basic, open the project file VB_API_sample.vbp.
ー>open済み
2.On the Projects menu, select Components.
ー>VB2005で「はコンポーネントの追加」をクリック
3.In the Components dialog box, select TWS ActiveXControl module and click OK.ー>ダイアログにはTWS activeXControlがない

Press Ctrl + F5 to compile and run the project.

3.のTWS というのはこの会社の株取引用のツールです。
普通何もしないでダイアログにTWS ActiveXControlがあるはずがないとは思うのですが、何かが抜けているのか、やり方が悪いのか、またはテンプレート中のどれかをクリックして,TWSActiveControlという名前をつければよいのか、おわかりの方がおられたら教えてください。
直接聞けばよいのですが、英語の質問は苦手なもので、またAPIプログラムはサポートしないとあったものですから・・・・。
よろしくお願いします。

IteractiveBrokersという株のbrokerのサイトでサンプル プログラムを使いたいのですがよくわかりません。使用方法を下記します
Use the Visual Basic VBClient Sample Program

You can access the server through the ActiveX interface using the Visual Basic sample application.
To run the sample you must:
Install the API sample programs <-インストール完了
Configure the application to support the API components
ー>configure済み
Have MS Visual Studio (Visual Basic 6.0 or high...続きを読む

Aベストアンサー

VB.NETですと コンポーネントの追加で 『COM』タグあると思います
ここを 選択して『TWS ActiveX Control』を探してみましょう ...

QVisual CのコードをVisual Basicに直したいです

検索でVCのコードしか見つからず、VBに直しているのですが、下記がわかりません。

[VC]
public ExtendedWebBrowserSite(ExtendedWebBrowser wb) : base(wb)
{
parent = wb;
}

下記のところまでは、出来たのですが、最後の「 : base(wb)」の部分はどのようにすればよいのでしょうか?
[VB]
Public Sub ExtendedWebBrowserSite(ByVal wb As ExtendedWebBrowser)
parent = wb
End Sub

ご存知の方、よろしくお願いいたします。

Aベストアンサー

Convert C# to VB.NET
http://www.developerfusion.com/tools/convert/csharp-to-vb/

Q[Visual Basic 6.0]timerを使ったプログラムで質問です。

Visual Basic 6.0 で
Private Sub Timer1_Timer()
Randomize
a = Int(Rnd * 7000)
b = Int(Rnd * 7000)
d = 200 + Int(Rnd * (500 - 200 + 1))
e = 1 + Int(Rnd * 15)
FillColor = QBColor(e);FillStyle = 0
Picture1.Circle (a, b), d, QBColor(e), -0.00001, -3.14152
Picture1.Circle (a, b + 80), d * 1.6, QBColor(e), , , 0.3
Picture1.Circle (a + d, b + d * 0.7), d / 4, QBColor(e)
Picture1.Circle (a - d, b + d * 0.7), d / 4, QBColor(e)
の図形をtimerを使って永遠にでたり消えたりを五秒間隔で消えたり出てきたりするプログラムを作りたいのですがうまくいきません。あと図形の塗りつぶしをFillColor = QBColor(e);FillStyle = 0と指定しているのですが塗りつぶしになりません。わかる方お願いします。m(_ _)m

Visual Basic 6.0 で
Private Sub Timer1_Timer()
Randomize
a = Int(Rnd * 7000)
b = Int(Rnd * 7000)
d = 200 + Int(Rnd * (500 - 200 + 1))
e = 1 + Int(Rnd * 15)
FillColor = QBColor(e);FillStyle = 0
Picture1.Circle (a, b), d, QBColor(e), -0.00001, -3.14152
Picture1.Circle (a, b + 80), d * 1.6, QBColor(e), , , 0.3
Picture1.Circle (a + d, b + d * 0.7), d / 4, QBColor(e)
Picture1.Circle (a - d, b + d * 0.7), d / 4, QBColor(e)
の図形をtimerを使って永遠にでたり消えたりを...続きを読む

Aベストアンサー

単に
FillColor = QBColor(e):FillStyle = 0
と記述すると フォームに対しての設定になります

ピクチャーボックスに対して指示なら
Picture1.FillColor = QBColor(e):Picture1.FillStyle = 0
とオブジェクトを明示しましょう
# マルチステートメントの区切りは『;』ではなく『:』です

出たり消えたりさせたいのであれば
前回描画した範囲を覚えておき UFOを描画する前に LINEメソッドで消去してから UFOを描画しましょう

private TYPE RECT
x as integer
y as integer
w as integer
h as integer
End if

タイマーイベントの先頭に
static rc as RECT
と記述します

UFO描画前の行に
if rc.w<>0 and rc.h<>0 then
Picture1.Line(rc.x, rc.y)-step(rc.w,rc.h), picture1.backcolor,BF
' ピクチャーボックスの内容をすべて消してもいいのであれば
' Picture1.cls
' でもいいですよ
end if

タイマーイベントの End Subの手前に
rc.x = a - d * 2
rc.y = b - d * 2
rc.w = d * 4
rc.h = d * 4
を追加します
# 次回描画前に消去する範囲を記憶

といった具合でしょう

単に
FillColor = QBColor(e):FillStyle = 0
と記述すると フォームに対しての設定になります

ピクチャーボックスに対して指示なら
Picture1.FillColor = QBColor(e):Picture1.FillStyle = 0
とオブジェクトを明示しましょう
# マルチステートメントの区切りは『;』ではなく『:』です

出たり消えたりさせたいのであれば
前回描画した範囲を覚えておき UFOを描画する前に LINEメソッドで消去してから UFOを描画しましょう

private TYPE RECT
x as integer
y as integer
w as integer
h as inte...続きを読む

QVisual Basic 2008 で複数のうちのいずれかのイベントが発生した時のプログラムの実行方法について、

例えば、フォームに複数のボタンが貼り付けていて、その中のいくつかのボタンは同じ処理をする。

これを1つのプログラムで記述したいのだが、Handlesの所を次のように記述しても、同じ処理をするボタンが多すぎると冗長のような気がします。

Handles Button1.Click, Button2.Click

どうすれば同じ処理をするボタンをグループ化して1つのプログラムで記述することが出来るでしょうか?

Aベストアンサー

原則的にはHandles句へ追加するものを増やしていくしかないです。

コレクションに既に一覧があるのであれば,AddHandlerを使う事でループによるイベントハンドラの追加は可能ですが。


人気Q&Aランキング

おすすめ情報