[ 新規に投稿する ]

他のアプリにキーコードを送信出来ますかNo.02561
海猫屋 さん 20/02/08 00:05 [ コメントを投稿する ]
  秀丸エディタを動画の文字起こしに使用しています。
動画再生ソフトと秀丸エディタのウィンドウを同時に開いて作業を行っています。
動画の再生アプリの一時停止と再生がスペースキーに、5秒戻すが ← キーに割り当てられているので、秀丸エディタから該当のキーを再生ソフト側に送りたいのですが、マクロやDLLを使えば可能でしょうか?
[ ]
RE:02561 他のアプリにキーコードを送信出来ますかNo.02562
秀丸担当 さん 20/02/10 09:30 [ コメントを投稿する ]
 
一般的に外部から動画作成ソフトを操作する方法が無いか検索して調べてみたところでは、VBScriptでSendKeysを使ってキー操作を送る方法があるようでした。
APIとかを通じてやるわけではなく、アクティブを切り替えてキー操作するというちょっと雑な方法なので、通用しない場合もあるかもしれません。
それを秀丸エディタのマクロに書き直すと以下のような感じになります。

if( iskeydown(0x10)||iskeydown(0x11)||iskeydown(0x12)){
    message "Ctrl/Shift/Altの組み合わせのマクロには割り当てないほうがよさそう";
    endmacro;
}
#objShell = createobject("WScript.Shell");
sleep 100;
#a=member( #objShell, "AppActivate", "VLCメディアプレイヤー" );
//#a=member( #objShell, "AppActivate", "Windows Media Player" );
if(#a){
    sleep 100;
    #a=member(#objShell, "SendKeys", " " );  //スペース
    //#a=member(#objShell, "SendKeys", "{left}" );  //左矢印
    //#a=member(#objShell, "SendKeys", "^(p)" );  //Ctrl+P
    $hidemarutitle=gettitle(0);
    #a=member( #objShell, "AppActivate", $hidemarutitle );
    sleep 100;
} else {
    message "プレーヤーが見つからない";
}
endmacro;


例えば、マクロファイル用のフォルダに、test.macというファイル名で保存して、[マクロ]→[マクロ登録...]でtest.macとマクロ1に登録して、[その他]→[キー割り当て...]でF1にマクロ1を割り当てるとF1キーで操作できました。

"AppActivate"の右にある文字列はウィンドウのタイトルになるようです。例では個人的に使っていたVLCメディアプレイヤーです。
"SendKeys"の右にある文字列は具体的なキー操作です。SendKeysでGoogle検索すると書き方とかがわかると思います。
sleep 100;というのはアクティブを切り替えたりした後に待つ時間で、100ms=0.1秒待つという意味です。このあたりが雑なので、うまくいかない場合は増やしたりするといいかもしれないです。

他には、WMPをプログラム的に操作する方法として、
#obj=createobject("WMPlayer.OCX");
とかして、そのメソッドで操作する方法もあるみたいですが、大変そうなのとWMP限定になるので、上記のSendKeysのほうが簡単そうです。

--------

この会議室は秀Termの会議室になっています。秀丸エディタのサポート会議室は以下のページになります。
https://www.maruo.co.jp/hidesoft/2/
[ ]
RE:02562 他のアプリにキーコードを送信出来ますかNo.02563
海猫屋 さん 20/02/10 14:37 [ コメントを投稿する ]
  ご返答、ありがとうございます。
明日まで忙しいので明後日試してみます。
また会議室を間違えて申し訳ありません。
これからもよろしくお願いします。
[ ]
RE:02562 他のアプリにキーコードを送信出来ますかNo.02564
海猫屋 さん 20/02/11 17:48 [ コメントを投稿する ]
  今日、時間が取れたので試してみました。
きちんと動作しました。
これで随分と作業効率が上がります。
ありがとうございました。
[ ]

[ 新規に投稿する ]