サブタイトル:「mer2のマイノリティ・レポート(笑)」 --- 最近忍者ブログの仕様が変わったようで、一部の画像が見えなくなってますが、画像のURLコピペで見られます。(どうしよう困ったな) --- ご用件など、ございましたらtwitterまでどうぞ。
こちらで紹介したUScreenCaptureというスクリーンキャプチャソフトですが、ReadMe.txtを読んでみるとCOMインターフェイスって奴を使って自作のプログラムから利用できるようになっているらしいんですよね。こりゃあ楽しそうだってんっで温COM知新とか読んで勉強してみたんですが、当時はさーっぱり理解できなくて諦めてしまっていたんです。
その後、こんな事やってみたりしたらちょっとだけCOMって奴が分ってきた気がしてきたので、改めて温COM知新さんとこのこの記事を読んでみると、あら結構分かる。
という訳でこことかここを参考にしてプログラム組んでみたんですよ。(なんのかんの言って、私に理解できる解説がしてあるサイトは温COM知新さんとこしか見つかりませんでした。)
こんなんなりました。
CLSIDはフルバージョンのwindows SDKに入ってるOleView.EXEで調べました。
Object Classes -> All Objects -> UScreenCapture
の値をそのまま使用。(質問1:これでいいの?)
IIDはiscreencapture.h内でDEFINE_GUIDを使って定義されてるっぽいんだけど、なんだか使い方が分かんないので値はiscreencapture.hのものをそのまま使って別に定義しました。(質問2:DEFINE_GUIDの定義したIDってどうやって使うの?ここのいちばん下にはinitguid.h使えって書いてあるんだけど、上手くいかないの。)
後は温COM知新さんとこのサンプルをそのまま流用しています。こんなんで大丈夫なのかなと思っていたのですが、驚いた事にちゃんと動いているようです(本当に驚きました)。iscreencapture.h内で定義されている
put_Region(),put_FramesPerSec()
で設定した値が
get_Region(),get_FramesPerSec()
で読み出せています。
だけどUScreenCaptureの動作そのものには変化が無いんです。なんで?(質問3)
ReadMe.txtの中の
2. Image size and frame rate can be set via IAMStreamConfig interface.
の一文が怪しいので、IAMStreamConfigっていうのを使ってみようとあれこれしたんですが、これがさっぱり使い方が判りません。「こんなのちょろいよほえっ」っていう方がいらっしゃったら、使い方教えてください。(お願い)
ついで:
ReadMe.txtの中の
You can create the filter specifying one of these interfaces, or QueryInterface from IBaseFilter.
っていう文も怪しかったので、QueryInterfaceっていうのを使ってみました。
QueryInterface版
でも結果は同じ。
USBカメラ関連やってた時についでにキャプチャデバイス名を列挙するプログラムなんかできていたので、応用してみました。これだと事前にCLSIDを調べなくても大丈夫みたいです。しめしめ。だけどやっぱり結果は同じ。
もちろんこのプログラムで使えないかなと思ってこんなことしているのですが、このプログラムはUScreenCaptureを使わない方向に持っていこうと思ってるのでこのままでも別に構わないと言えば構わないのです。でも、なんかこのままじゃすっきりしないのです。
とりあえずsolutionファイルとprojectファイル。iscreencapture.hが必要です。
その後、こんな事やってみたりしたらちょっとだけCOMって奴が分ってきた気がしてきたので、改めて温COM知新さんとこのこの記事を読んでみると、あら結構分かる。
という訳でこことかここを参考にしてプログラム組んでみたんですよ。(なんのかんの言って、私に理解できる解説がしてあるサイトは温COM知新さんとこしか見つかりませんでした。)
こんなんなりました。
CLSIDはフルバージョンのwindows SDKに入ってるOleView.EXEで調べました。
Object Classes -> All Objects -> UScreenCapture
の値をそのまま使用。(質問1:これでいいの?)
IIDはiscreencapture.h内でDEFINE_GUIDを使って定義されてるっぽいんだけど、なんだか使い方が分かんないので値はiscreencapture.hのものをそのまま使って別に定義しました。(質問2:DEFINE_GUIDの定義したIDってどうやって使うの?ここのいちばん下にはinitguid.h使えって書いてあるんだけど、上手くいかないの。)
後は温COM知新さんとこのサンプルをそのまま流用しています。こんなんで大丈夫なのかなと思っていたのですが、驚いた事にちゃんと動いているようです(本当に驚きました)。iscreencapture.h内で定義されている
put_Region(),put_FramesPerSec()
で設定した値が
get_Region(),get_FramesPerSec()
で読み出せています。
だけどUScreenCaptureの動作そのものには変化が無いんです。なんで?(質問3)
ReadMe.txtの中の
2. Image size and frame rate can be set via IAMStreamConfig interface.
の一文が怪しいので、IAMStreamConfigっていうのを使ってみようとあれこれしたんですが、これがさっぱり使い方が判りません。「こんなのちょろいよほえっ」っていう方がいらっしゃったら、使い方教えてください。(お願い)
ついで:
ReadMe.txtの中の
You can create the filter specifying one of these interfaces, or QueryInterface from IBaseFilter.
っていう文も怪しかったので、QueryInterfaceっていうのを使ってみました。
QueryInterface版
でも結果は同じ。
USBカメラ関連やってた時についでにキャプチャデバイス名を列挙するプログラムなんかできていたので、応用してみました。これだと事前にCLSIDを調べなくても大丈夫みたいです。しめしめ。だけどやっぱり結果は同じ。
もちろんこのプログラムで使えないかなと思ってこんなことしているのですが、このプログラムはUScreenCaptureを使わない方向に持っていこうと思ってるのでこのままでも別に構わないと言えば構わないのです。でも、なんかこのままじゃすっきりしないのです。
教えて、エロイ人。
とりあえずsolutionファイルとprojectファイル。iscreencapture.hが必要です。
PR
最新記事
(04/20)
(11/21)
(01/01)
(06/12)
(06/12)
(05/29)
(05/22)
(05/21)
(12/25)
(12/20)
最新コメント
[08/27 BernardSr]
[08/27 BernardSr]
[08/27 BernardSr]
[12/29 GroverIcow]
[12/26 gayenKinesl]
[12/25 gayenKincfv]
[12/25 geRoesonokp]
[12/24 geRoesonmxu]
[06/30 LindsayDom]
[06/24 Ayukupim]
[06/22 francinerj2]
[06/21 Karsewis]
[06/17 Porsulik]
[06/16 Porsulik]
[06/16 Porsulik]
[06/16 Amimior]
[06/15 WilfordMof]
[06/11 lakeishatb1]
[06/04 Mathewlomi]
[05/31 tiopomWarriorvrp]
[05/31 Lasdumor]
[05/29 Aredorer]
[05/27 IMPUCKICT]
[05/26 Asosans]
[05/24 RaymondZice]
カテゴリー
リンク
アーカイブ
アクセス解析
カウンター
カレンダー
10 | 2024/11 | 12 |
S | M | T | W | T | F | S |
---|---|---|---|---|---|---|
1 | 2 | |||||
3 | 4 | 5 | 6 | 7 | 8 | 9 |
10 | 11 | 12 | 13 | 14 | 15 | 16 |
17 | 18 | 19 | 20 | 21 | 22 | 23 |
24 | 25 | 26 | 27 | 28 | 29 | 30 |
プロフィール
HN:
mer2
性別:
男性
趣味:
野良猫の餌付け