忘備録/創作板

忘れないように、誰かの助けになるように

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

を使用して子ウィンドウハンドルをリストに保存。