VOICEROID+ 結月ゆかり を使用してHSPからしゃべらせるサンプル。(作り途中) VOICEROID+ 結月ゆかり が別途必要。 http://www.amazon.co.jp/gp/product/B006GGRTZ6?ie=UTF8&tag=inovia2004-22&linkCode=shr&camp=1207&creative=8411&creativeASIN=B006GGRTZ6&redirect=true&ref_=s9_simh_gw_p65_d0_g65_i2 テキストの消去を切り取りで代用。
VOICEROID+ 結月ゆかり を使用してHSPからしゃべらせるサンプル。(作り途中) VOICEROID+ 結月ゆかり が別途必要。 http://www.amazon.co.jp/gp/product/B006GGRTZ6?ie=UTF8&tag=inovia2004-22&linkCode=shr&camp=1207&creative=8411&creativeASIN=B006GGRTZ6&redirect=true&ref_=s9_simh_gw_p65_d0_g65_i2 テキストの消去を切り取りで代用。
#include "user32.as"#include "kernel32.as"// ↓をダウンロードして使用// http://lldev.jp/hsp/module/clipboard_text.html#include "modClipboardText.hsp"#module __AttachThread__// 別スレッド(プロセス)のウィンドウのフォーカスを取得#defcfunc GetFocus2GetForegroundWindowGetWindowThreadProcessId stat, 0ttid = statGetCurrentThreadIdctid = statAttachThreadInput ctid, ttid, 1GetFocush = statAttachThreadInput ctid, ttid, 0return h// 別スレッド(プロセス)のウィンドウにフォーカスを当てる#deffunc SetFocus2 int _hGetWindowThreadProcessId _h, 0ttid = statGetCurrentThreadIdctid = statAttachThreadInput ctid, ttid, 1SetFocus _hAttachThreadInput ctid, ttid, 0return/*#deffunc ShowWindow2 int h, int fShowWindow h, freturn#deffunc IsWindow2 int _hIsWindow hreturn stat*/#global#module __VOICEROID__// ボイスロイドの起動数を調べる#defcfunc GetRunningNumVh = 0 : c = 0repeatFindWindowExA 0, h, "TkTopLevel", "VOICEROID+ 結月ゆかり"h = statif h == 0 : c = cnt : break // 0 になるまでループloopreturn c// ボイスロイドのトップのウィンドウを取得#defcfunc GetTopWindowVFindWindowA "TkTopLevel", "VOICEROID+ 結月ゆかり"return stat// ボイスロイドのテキストボックスを取得#deffunc GetTextBoxVFindWindowExA GetTopWindowV(), 0, "TkChild", 0hChild = statFindWindowExA hChild, 0, "TkChild", 0 // その子を取得(長男)FindWindowExA hChild, stat, "TkChild", 0 // 2番目(次男)FindWindowExA hChild, stat, "TkChild", 0 // その子の3番目の兄弟を取得(三男)といった感じhGrandchild = statreturn// ボイスロイドのテキストボックスを全選択する#deffunc TextAllSelectVsendmsg GetTopWindowV(), 0x0111/*WM_COMMAND*/, 60, 0return// ボイスロイドのテキストボックスにクリップボード経由で貼り付け#deffunc TextPasteVsendmsg GetTopWindowV(), 0x0111/*WM_COMMAND*/, 56, 0return// ボイスロイドのテキストボックスの中身を消す#deffunc TextDeleteVkeybd_event 46, 0, 0, 0 // DEL 押し // バックスペースなら 8keybd_event 46, 0, 2, 0 // DEL 離しreturn// ボイスロイドのテキストボックスの中身を消す(切り取りで代用)#deffunc TextDelete2Vsendmsg GetTopWindowV(), 0x0111/*WM_COMMAND*/, 52, 0return// テキストボックスに代入します(クリップボード経由)#deffunc SetText2V str _ss = _s// 現在のフォーカスのハンドルを取得nowHwnd = GetFocus2()// フォーカスをボイスロイドに当てるSetFocus2 GetTopWindowV()// テキストをクリアします。TextAllSelectVTextDelete2Vwait 1 // ウェイトがないと反映されない// クリップボードに転送setcbtext s// 貼り付けTextPasteV// フォーカスを元に戻すSetFocus2 nowHwndreturn// テキストを再生します。#deffunc PlayTextVFindWindowExA GetTopWindowV(), 0, "TkChild", 0hChild = statFindWindowExA hChild, 0, "TkChild", 0 // その子を取得FindWindowExA hChild, stat, "TkChild", 0 // その子の2番目の兄弟を取得hGrandchild = statFindWindowExA hGrandchild, 0, "Button", 0 // 2番目の兄弟の孫(長男)を取得FindWindowExA hGrandchild, stat, "Button", 0 // 2番目の兄弟の孫の2番目を取得FindWindowExA hGrandchild, stat, "Button", 0 // 2番目の兄弟の孫の3番目を取得FindWindowExA hGrandchild, stat, "Button", 0 // 2番目の兄弟の孫の4番目を取得FindWindowExA hGrandchild, stat, "Button", 0 // 2番目の兄弟の孫の5番目を取得hTarget = stat/*mes strf("0x%08X", hTarget)SetFocus2 hTargetSetForegroundWindow hTargetmes stat*/;PostMessageA hTarget, 0x0006/*WM_ACTIVATE*/, 1, 0//SendMessageA hTarget, 0x00F5/*BM_CLICK */, 0, 0;PostMessageA hTarget, 0x0201/*WM_LBUTTONDOWN */, 0x0001, 0x0017003D;PostMessageA hTarget, 0x0200/*WM_MOUSEMOVE*/, 0x0001, 0x0017003D;PostMessageA hTarget, 0x0203/*WM_LBUTTONUP */, 0x0000, 0x0017003DPostMessageA hTarget, 0x0000/*WM_NULL*/, 0x0000, 0x00000000 // これだけでも鳴るみたい。return#deffunc StopTextVFindWindowExA GetTopWindowV(), 0, "TkChild", 0hChild = statFindWindowExA hChild, 0, "TkChild", 0 // その子を取得FindWindowExA hChild, stat, "TkChild", 0 // その子の2番目の兄弟を取得hGrandchild = statFindWindowExA hGrandchild, 0, "Button", 0 // 2番目の兄弟の孫(長男)を取得FindWindowExA hGrandchild, stat, "Button", 0 // 2番目の兄弟の孫の2番目を取得FindWindowExA hGrandchild, stat, "Button", 0 // 2番目の兄弟の孫の3番目を取得FindWindowExA hGrandchild, stat, "Button", 0 // 2番目の兄弟の孫の4番目を取得hTarget = statPostMessageA hTarget, 0x0000/*WM_NULL*/, 0x0000, 0x00000000 // これだけでも鳴るみたい。return#global// メイン// 起動している場合は 1以上が返る。if GetRunningNumV() > 0 {SetText2V "マイクのテストテストテスト"PlayTextV}