質問をすることでしか得られない、回答やアドバイスがある。

15分調べてもわからないことは、質問しよう!

新規登録して質問してみよう
ただいま回答率
85.47%
C#

C#はマルチパラダイムプログラミング言語の1つで、命令形・宣言型・関数型・ジェネリック型・コンポーネント指向・オブジェクティブ指向のプログラミング開発すべてに対応しています。

Q&A

解決済

1回答

1189閲覧

Edge等でYouTube動画再生中、C#コンソールアプリで動画再生を停止/再開したい。

betasei

総合スコア15

C#

C#はマルチパラダイムプログラミング言語の1つで、命令形・宣言型・関数型・ジェネリック型・コンポーネント指向・オブジェクティブ指向のプログラミング開発すべてに対応しています。

0グッド

0クリップ

投稿2022/05/21 01:10

編集2022/05/22 22:09

前提

※追記:本件質問断念します。回答者が素人の私に答えるのが困難だと悟りました。 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++の画面は同じみたいですが、別のファイル名みたいなものを指定するんでしょうか。

とりあえずお尋ねします。
自分でも調査継続します。

気になる質問をクリップする

クリップした質問は、後からいつでもMYページで確認できます。

またクリップした質問に回答があった際、通知やメールを受け取ることができます。

バッドをするには、ログインかつ

こちらの条件を満たす必要があります。

guest

回答1

0

自己解決

迂闊でした。
YouTube動画を一時停止するのではなく、自作録音プログラムを、コマーシャル前で一旦終了し、コマーシャル後に再起動すればよいだけでした。
失礼しました。

投稿2022/05/23 22:31

betasei

総合スコア15

バッドをするには、ログインかつ

こちらの条件を満たす必要があります。

あなたの回答

tips

太字

斜体

打ち消し線

見出し

引用テキストの挿入

コードの挿入

リンクの挿入

リストの挿入

番号リストの挿入

表の挿入

水平線の挿入

プレビュー

15分調べてもわからないことは
teratailで質問しよう!

ただいまの回答率
85.47%

質問をまとめることで
思考を整理して素早く解決

テンプレート機能で
簡単に質問をまとめる

質問する

関連した質問