掲示板システム
ホーム
アクセス解析
カテゴリ
ログアウト
エージェントについて・・ (ID:17909)
名前
ホームページ(ブログ、Twitterなど)のURL (省略可)
本文
MSWSystem は TObject から派生したクラスで・・・ アプリケーション内で使用している グローバル変数や、関数をひとまとめにしたものです。 どうしてこんなことしてるかというと。 支援機能を使ったときに [MSWSystem.]で変数名や、関数名の参照が出るためです。 そうすると[MSWSystem]だけ覚えておけばあとの共通で使用する関数や 変数といったものは支援機能のリストで表示されるからで、 VCLとかのクラスからの派生じゃありません。 MSWSystem.pas (基本ユニット)を作成しグローバル部で --------------------------------- var MSWSystem: TMSWSystem; --------------------------------- と記述して、後は、MSWSystem を使用するユニット(すべてのユニット)に Uses で追加指定して使用しています。 前置きが長くなりましたが、本題にはいります。 以下は現在のテストプログラムです ●ステップ実行で1行ずつ実行していくと3種類の音量になると思います。 ●次に普通に実行します。そうするとPCにより違うかもしれませんが メッセージ1とメッセージ2は同じ音量で、 メッセージ3は音がでません。 ●イベント部分にブレークポイントを入れると停止します。 イベントは発生しています。 −−−−−−−−−−−−−−−−−−−−−−−−−−−−−−−−− unit Unit1; interface uses Windows, Messages, SysUtils, Variants, Classes, Graphics, Controls, Forms, Dialogs, OleCtrls, AgentObjects_TLB, StdCtrls, MMSystem; type TForm1 = class(TForm) Button1: TButton; Agent1: TAgent; procedure Button1Click(Sender: TObject); procedure Agent1RequestComplete(Sender: TObject; const Request: IDispatch); procedure FormCreate(Sender: TObject); private Character: IAgentCtlCharacterEx; RequestPRocess: Boolean; public end; var Form1: TForm1; implementation {$R *.dfm} procedure TForm1.FormCreate(Sender: TObject); begin Agent1.Characters.Load('MyChara', 'C:\Windows\MSAGENT\CHARS\Peedy.acs'); Character := Agent1.Characters.Character('MyChara') as IAgentCtlCharacterEx; Character.Set_TTSModeID('{A778E061-A936-11d1-B17B-0020AFED142E}'); Character.LanguageID := $0411; end; procedure TForm1.Button1Click(Sender: TObject); begin Character.Show(False); WaveOutSetVolume(0, $40404040); RequestPRocess := True; Character.Speak('メッセージ1', ''); while RequestPRocess do Application.ProcessMessages; WaveOutSetVolume(0, $80808080); RequestPRocess := True; Character.Speak('メッセージ2', ''); while RequestPRocess do Application.ProcessMessages; WaveOutSetVolume(0, $FFFFFFFF); RequestPRocess := True; Character.Speak('メッセージ3', ''); while RequestPRocess do Application.ProcessMessages; WaveOutSetVolume(0, 0); Character.Hide(False); end; procedure TForm1.Agent1RequestComplete(Sender: TObject; const Request: IDispatch); begin RequestPRocess := False; end; end.
←解決時は質問者本人がここをチェックしてください。
更新する
戻る
掲示板システム
Copyright 2021 Takeshi Okamoto All Rights Reserved.