VoiceroidEx その2
前回記事で紹介したVoiceroidExのコードについてちょっと
言語はC#でWin32 APIを叩くことでテキスト入力、ボタン操作をしています。
ソースコードはGitHub-VoiceroidExにて公開しています。
ライセンスに従って使用してもらって構いません。
構成ファイル
- ReadIniFile.cs # 設定ファイル読み出し用、でっちあげ
- VoiceroidEx.cs _# 基底クラス
- VoiceroidEx4Win7.cs _# Win7用
- VoiceroidEx4WinXP.cs # WinXP用。要修正
- WindowHandleSearch.cs # ウィンドウハンドル検索を外出し
- bin/Release/set.ini # 設定ファイル
SendMessageTimeout
Win32APIには指定ウィンドウへメッセージを投げて同期を取る「SendMessage」と非同期の「PostMessage」の二つがある。
SendMessageはTimeoutを指定することもできる。「SendMessageTimeout」
Clipboard
Clipboard.SetDataObjectを使用。
Clipboard.SetTextを使用すると時々フリーズする。
クリック操作
ボタンのクリック操作は実装毎に異なるらしい。
PostMessage(Button, WM_NULL, WM_NULL, WM_NULL);
PostMessage(Button, WM_CLICK, WM_NULL, WM_NULL);
VoiceroidEx4WinXP.cs
WinXP用。
Win7とはダイアログのUIが異なるので別に作成。
問題点: 保存ダイアログにパスが入力出来ない ver1.0
WindowHandleSearch.cs
Win32APIの
- EnumChildWindows
- FindWindow
を使用して子ウィンドウハンドルをリストに保存。