前提
※追記:本件質問断念します。回答者が素人の私に答えるのが困難だと悟りました。 2022.05.23
Edge等でYouTube動画を再生しながら、音声だけMP3ファイルに録音してます。
指定時間だけ録音するプログラムは自作済みです。
実現したいこと
しかし、録音する動画は番組の途中でコマーシャルが入るので、コマーシャルまでの前半と、その後の後半とに分けて2回録音作業してます。
現行自作プログラムは、前半の再生が終了したら録音も自動停止しますが、再生はそのまま進行してしまうので、再生も同時に自動停止したいのです。
自作プログラムは、複数アプリの組み合わせなので、コンソールアプリなら追加できます。
YouTubeの再生動画は、動画ウィンドウ上でマウスを左クリックするだけで停止/再開するので、C#プログラムでやりたい操作は、動画ウィンドウをクリックするだけです。
下記サイトの記事を参考にしてます。
リンク内容
この中のお手本になりそうなC#プログラムを転記します。
該当のソースコード
C# コンソールアプリ
ソースコード
using System;
using System.Collections.Generic;
using System.Diagnostics;
using System.Linq;
using System.Runtime.InteropServices;
using System.Text;
namespace YouTubePause
{
class Program
{
public const int WM_LBUTTONDOWN = 0x201;
public const int WM_LBUTTONUP = 0x202;
public const int MK_LBUTTON = 0x0001;
[DllImport("user32.dll")] public static extern int SendMessage(IntPtr hWnd, uint Msg, uint wParam, uint lParam); static void Main(string[] args) { // 電卓のトップウィンドウのウィンドウハンドル(※見つかることを前提としている) //var mainWindowHandle = Process.GetProcessesByName("calc")[0].MainWindowHandle; var mainWindowHandle = Process.GetProcessesByName("calculator")[0].MainWindowHandle; // 対象のボタンを探す(これでボタンのハンドルが取得できる) var hWnd = FindTargetButton(mainWindowHandle); // マウスを押してから放す SendMessage(hWnd, WM_LBUTTONDOWN, MK_LBUTTON, 0x000A000A); SendMessage(hWnd, WM_LBUTTONUP, 0x00000000, 0x000A000A); } public static IntPtr FindTargetButton(IntPtr hTopWindow) {/* ...未作成 */} }
}
補足情報
SPY++ツールで見たウィンドウリスト画像を添付します。
「ウィンドウ 0005056E Intermediate D3D Window」が動画再生画面みたいです。
しかし私は、C#は初心者で、"user32.dll"の操作も初めてです。
具体的に質問します。
(1) 例示したプログラムは、目的に合ってるんでしょうか。
(2) var mainWindowHandle = Process.GetProcessesByName("calculator")[0].MainWindowHandle;
このコードから検討することになると思います。
元のサンプルは電卓"calc"(calc.exe)でした。
これはは古くて、Windows10では、"calculator.exe"になってます。
今回の案件、EdgeでYouTube動画を再生する場合も、".exe"のファイル名を指定することになりますか。
Edgeでもchromeでも、SPY++の画面は同じみたいですが、別のファイル名みたいなものを指定するんでしょうか。
とりあえずお尋ねします。
自分でも調査継続します。
回答1件
あなたの回答
tips
プレビュー
バッドをするには、ログインかつ
こちらの条件を満たす必要があります。