teratail header banner
teratail header banner
質問するログイン新規登録

回答編集履歴

1

質問の編集に対応するよう回答を書き直し

2017/02/17 08:55

投稿

alg
alg

スコア2019

answer CHANGED
@@ -1,22 +1,12 @@
1
+ ※私が回答を書いている間に質問が編集されたようなので、回答を書き直しました。
2
+
1
3
  `axWindowsMediaPlayer1`は、[AxWindowsMediaPlayer](https://msdn.microsoft.com/ja-jp/library/windows/desktop/dd562388(v=vs.85).aspx) のインスタンスだと仮定します。
2
4
 
3
- ```lang:csharp
5
+ ```c#
4
- foreach (var i in axWindowsMediaPlayer1.status)
6
+ for(int i=0;i < axWindowsMediaPlayer1.currentMedia.duration; i++)
5
7
  ```
6
- [AxWindowsMediaPlayer.status](https://msdn.microsoft.com/ja-jp/library/windows/desktop/dd562466(v=vs.85).aspx) プロパティは単なる文字列(`System.String`)のようすが、これを`foreach`でループを回しているのような意図でょう
8
+ `int`でループを回しているの`axWindowsMediaPlayer1.currentMedia.duration`が秒数だとすると秒ごと画像しか保存できません。
7
- んとなく、この`foreach`は意図と違うことをしていて不要気がします。
9
+ 無理やりやる、こループを`for`はなく`while`で回、でしょうか
10
+ ただ、ちょっとどうかなとは思います……。
8
11
 
9
- ということで上記の`foreach`を外して、
10
- ```lang:csharp
11
- //確認用にファイル出力
12
- bmp.Save("C:\\entrypic\\"+i+".png");
13
- ```
14
-
15
- ```lang:csharp
16
- //確認用にファイル出力
17
- bmp.Save("C:\\entrypic\\"+axWindowsMediaPlayer1.status+".png");
12
+ `PlayStateChange`イベントではなく、[`PositionChange` イベント](https://msdn.microsoft.com/ja-jp/library/windows/desktop/dd562462(v=vs.85).aspx)で画像を保存してはどうでしょうか。
18
- ```
19
- とでも変えてみると、とりあえずエラーは出なくなるのではないでしょうか。
20
-
21
- ただし上記の修正をしただけだと、再生開始時の画像1枚が保存されるだけになりそうです。
22
- `axWindowsMediaPlayer1_PlayStateChange`メソッドではないところで、画像の保存をしたほうが良いように思えます。