スクリーンキャプチャ

フォーラム(掲示板)ルール
フォーラム(掲示板)ルールはこちら  ※コードを貼り付ける場合は [code][/code] で囲って下さい。詳しくはこちら
ジグ

スクリーンキャプチャ

#1

投稿記事 by ジグ » 13年前

現在スクリーンキャプチャソフトを作成しています。

Gyazoというソフトはご存知でしょうか?
D&Dで範囲を選択し、サーバー上にpngでアップロードするソフトです。

それと似たソフトを作成しています。

GetSystemMetricsでスクリーンの大きさを取得し、CreateWindowでウィンドウを作成したあと、
プロシージャ内にGetWindowDCを置いてデバイスコンテキストを取得するところまでは作成しました。

次にWinsockで作成した自前のサーバーにソケットで送り、BitBltで表示したいのですが、その辺りがよくわかりません。

ソケット通信ではチャットや、HTTPクライアント、パケットキャプチャなどの経験があるので多少はできます。

まず、ボクがやろうとしてることは構造上、可能なのでしょうか?
まず、取得したデバイスコンテキストのハンドルには何が入ってるのでしょうか?

ハンドルのデータをソケットで送信することは可能なのでしょうか?

アバター
Ciel
記事: 252
登録日時: 13年前

Re: スクリーンキャプチャ

#2

投稿記事 by Ciel » 13年前

う~ん。このあたりはどうでしょうか。
http://www.sm.rim.or.jp/~shishido/deskt.html
oui C'est la Vie♪

ジグ

Re: スクリーンキャプチャ

#3

投稿記事 by ジグ » 13年前

Ciel さんが書きました:う〜ん。このあたりはどうでしょうか。
http://www.sm.rim.or.jp/~shishido/deskt.html
ありがとございます。
とても参考になりました。

このあと、クライアントとサーバでループしてキャプチャを半リアルタイムで表示する、デスクトップ監視ツールに挑戦しています。あともう少しで完成しそうなのですが、サーバで表示するときに新しいデータのウィンドウが重なってしまいます。
これを回避するにはどうしたらいいのでしょうか?

http://karinto.puny.jp/uploader/download/1297132601.zip

ファイルをアップロードしましたので見て頂いてもよろしいでしょうか?
ダウンロードパスは【ntc2mza】です。

それから、あれもこれもで申し訳ないのですが、
完成したクライアントとサーバを配布するとします。
そのとき、ソースは配布しないものとし、実行ファイルのみ配布とする予定なのですが、クライアントとサーバを配布するとなると一番気になるのはIPとPortの設定です。
みなさんIPは違うし、Portも自由に決めたいと思いまし。
サーバを変更したらクライアントも変更しなければなりません。
逆アセンブルして値を変更できるような人ならば問題ないと思いますが、それだけの技術を持った人はこんなソフト自分で作れると思います。
そこで、素人でも簡単に値を変更できるようなものは作れないでしょうか?
理想はIPとPortを入力したら変更してくれるパッチプログラムみたいなのがあればと思ってます。
その辺りの情報もいただけると有難いです。

長くなってしまってすみません。

アバター
みけCAT
記事: 6734
登録日時: 13年前
住所: 千葉県
連絡を取る:

Re: スクリーンキャプチャ

#4

投稿記事 by みけCAT » 13年前

ジグ さんが書きました:それから、あれもこれもで申し訳ないのですが、
完成したクライアントとサーバを配布するとします。
そのとき、ソースは配布しないものとし、実行ファイルのみ配布とする予定なのですが、クライアントとサーバを配布するとなると一番気になるのはIPとPortの設定です。
みなさんIPは違うし、Portも自由に決めたいと思いまし。
サーバを変更したらクライアントも変更しなければなりません。
逆アセンブルして値を変更できるような人ならば問題ないと思いますが、それだけの技術を持った人はこんなソフト自分で作れると思います。
そこで、素人でも簡単に値を変更できるようなものは作れないでしょうか?
理想はIPとPortを入力したら変更してくれるパッチプログラムみたいなのがあればと思ってます。
その辺りの情報もいただけると有難いです。
自作のゲームのステージ数変更パッチを作った時は、まずソースコードに書き込んだ値を元にバイナリエディタであたりをつけ、
そこのオフセットを指定して値を書きかえるソフトを作りました。
サンプルを添付します。
henkoupch.exeにpch.exeでパッチを当てます。
henkoupch.exeを元に(ソースコードの状態に)戻すときは、
自分でコンパイルしなおさず、henkoupch.bak.exeをリネームしてください。
(自分でコンパイルするとオフセットが変わる場合があるため)

あと、パッチにこだわらず、ダイアログでIPアドレスとポートを指定するのではだめですか?

参考
自分がパッチを作ったゲーム
http://dixq.net/forum/viewtopic.php?f=78&t=7278
自作の通信対戦サンプル(ダイアログを使用)
http://dixq.net/forum/viewtopic.php?f=3&t=7724
どちらもソースコードが付いています。
添付ファイル
henkoupch.zip
サンプルです。
(14.99 KiB) ダウンロード数: 100 回
複雑な問題?マシンの性能を上げてOpenMPで殴ればいい!(死亡フラグ)

アバター
Ciel
記事: 252
登録日時: 13年前

Re: スクリーンキャプチャ

#5

投稿記事 by Ciel » 13年前

ダイアログで設定させるのに何か問題でもあるんですか?

それとファイルのパスワードが間違っていると言われて、私の環境ではダウンロードできませんでした。
oui C'est la Vie♪

ジグ

Re: スクリーンキャプチャ

#6

投稿記事 by ジグ » 13年前

あぁ、すみません。
ダウンロードパスが間違っていました。
正しくは【57630】です。

それから、キャプチャが重なってしまうのは一緒にサーバの窓もキャプチャしていたためでした。
鏡と鏡を向かい合わせにしたときと同じ現象だったことに気付き、別の同一LAN内のパソコンで実験したら出来ました。

ローカルのIPで動かせば多少カクカクになりますが、そこまで気になりません。
ただ、知人に頼み、グローバルIPの方でインターネットを経由したデスクトップ共有がとてもストレス感じてしまいます。
スカイプの画面共有はなぜああもスムーズなのでしょうか?
送信するデータを圧縮しているのでしょうか?
スカイプの画面共有くらいスムーズにすることは可能ですか?

IPについては、ダイアログにしてはいけない理由はないです。
ただ、例えば、配布したクライアントとサーバをAさんがダウンロードしたとして、
AさんはクライアントをBさんに渡して使うわけですが、そのときBさんがダイアログでAさんのIPを入力する手間を取らせない為に、Aさんが予め自分のIPをセットしてからBさんに渡せば楽かな?と思っただけです。
このようにするにはパッチで直接書き換えるしかないのではないかと思って質問しました。

ISLe
記事: 2650
登録日時: 13年前
連絡を取る:

Re: スクリーンキャプチャ

#7

投稿記事 by ISLe » 13年前

ジグ さんが書きました:Aさんが予め自分のIPをセットしてからBさんに渡せば楽かな?と思っただけです。
iniファイル形式でIPアドレスを記録して実行ファイルといっしょに渡すようにすれば良いのではないでしょうかね。
テキストエディタで直接書き換えることもできるし。

ジグ

Re: スクリーンキャプチャ

#8

投稿記事 by ジグ » 13年前

ISLe さんが書きました: iniファイル形式でIPアドレスを記録して実行ファイルといっしょに渡すようにすれば良いのではないでしょうかね。
テキストエディタで直接書き換えることもできるし。
出来れば余計なファイルをなくして実行ファイルだけにしたかったのですが、、、
それしか方法はなさそうなのでそれでいきます。

それから通信速度が遅いのは未だにわからないのですが、
もう無理なのでしょうか?

アバター
Ciel
記事: 252
登録日時: 13年前

Re: スクリーンキャプチャ

#9

投稿記事 by Ciel » 13年前

ソース見てませんが、TCPで通信してるんじゃないですか?
UDPにすれば速度は早くなると思います。
それはそれで、データの欠損などの問題が発生したときの対処が別途必要にはなってくるんですが。
oui C'est la Vie♪

ISLe
記事: 2650
登録日時: 13年前
連絡を取る:

Re: スクリーンキャプチャ

#10

投稿記事 by ISLe » 13年前

ジグ さんが書きました:出来れば余計なファイルをなくして実行ファイルだけにしたかったのですが、、、
それしか方法はなさそうなのでそれでいきます。
文字列リソースを使うのはどうですか?

個人的には実行ファイルを書き換える面倒臭さに比べたら設定ファイルを余計とは思いませんが。
セキュリティリスクもありますし。

閉鎖

“C言語何でも質問掲示板” へ戻る