トップへ
<---   取り出しトピック   --->
 
. kbgxscc.kpi Version 0.12alpha Kobarin 03/23土16:34#r57
. 曲の切り替わり時にフォーカスが奪われてしまう Kobarin 03/23土16:39#r58選択
. 再生周波数 Kobarin 03/23土19:25#r61
 

上の選択記事
. 曲の切り替わり時にフォーカスが奪われてしまう
     Kobarin ホームページ 2019/03/23土16:39 #r58
編集&削除  
今回のバージョンアップにより、個人的には kbgxscc.kpi はほぼ完成と
言えるレベルに到達出来たと思っていますが、あと1点だけ気になる点が
あって、再生時にウィンドウのフォーカスが奪われてしまうんですよね。

どうやってもフォーカスを奪うのを阻止出来ないので、仕方ないので

ファイルを開く直前に GetForegroundWindow してフォアグラウンドの
ウィンドウを取得しておき、再生が始まったら SetForegroundWindow
してフォーカスを元のウィンドウに戻す

という処理をしています。なので他の作業をしながら連続再生してると曲の
切り替わり時に一瞬だけウィンドウが奪われて少し作業がしづらいです。
(フォーカスを戻す処理をしてるだけマシなんですが)


GXSCC が呼び出す API に対して以下の処置をしていますがそれでも
足りません。他に対策として思い浮かぶものがあったらご指摘下さい。

・CreateWindowEx の dwExStyle に WS_EX_NOACTIVATE を付け加える
・SetActiveWindow/SetForegroundWindow/SetWindowPos/BringWindowToTop/SetFocus
 をフックして実際には何もさせない(起動してから「オーサリング」が始まる
 までの間に実際に呼ばれるのは SetActiveWindow のみのようです)

他のプロセスがフォーカスを持ってるのにそれを奪い取るというと
AttachThreadInput を使う必要があると思うんですが、GXSCC は
AttachThreadInput を呼び出していません。

GXSCC が呼び出す API は Dependency Walker で確認しています。

もしかしてウィンドウプロシージャを乗っ取る必要があるのかな。
関連するメッセージが思いつきませんが。

上へ






RAIBPL1.23-wakatiai.halfmoon.jp 2024/04/27土08:58