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

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

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

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

解決済

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

betasei
betasei

総合スコア9

C#

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

1回答

0評価

0クリップ

221閲覧

投稿2022/05/21 01:10

編集2022/05/24 07:31

前提

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

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

良い質問の評価を上げる

以下のような質問は評価を上げましょう

  • 質問内容が明確
  • 自分も答えを知りたい
  • 質問者以外のユーザにも役立つ

評価が高い質問は、TOPページの「注目」タブのフィードに表示されやすくなります。

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

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

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

teratailでは下記のような質問を「具体的に困っていることがない質問」、「サイトポリシーに違反する質問」と定義し、推奨していません。

  • プログラミングに関係のない質問
  • やってほしいことだけを記載した丸投げの質問
  • 問題・課題が含まれていない質問
  • 意図的に内容が抹消された質問
  • 過去に投稿した質問と同じ内容の質問
  • 広告と受け取られるような投稿

評価を下げると、トップページの「アクティブ」「注目」タブのフィードに表示されにくくなります。

まだ回答がついていません

会員登録して回答してみよう

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

ただいまの回答率
87.20%

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

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

質問する

関連した質問

同じタグがついた質問を見る

C#

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