現在スクリーンキャプチャソフトを作成しています。
Gyazoというソフトはご存知でしょうか?
D&Dで範囲を選択し、サーバー上にpngでアップロードするソフトです。
それと似たソフトを作成しています。
GetSystemMetricsでスクリーンの大きさを取得し、CreateWindowでウィンドウを作成したあと、
プロシージャ内にGetWindowDCを置いてデバイスコンテキストを取得するところまでは作成しました。
次にWinsockで作成した自前のサーバーにソケットで送り、BitBltで表示したいのですが、その辺りがよくわかりません。
ソケット通信ではチャットや、HTTPクライアント、パケットキャプチャなどの経験があるので多少はできます。
まず、ボクがやろうとしてることは構造上、可能なのでしょうか?
まず、取得したデバイスコンテキストのハンドルには何が入ってるのでしょうか?
ハンドルのデータをソケットで送信することは可能なのでしょうか?
スクリーンキャプチャ
Re: スクリーンキャプチャ
ありがとございます。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を入力したら変更してくれるパッチプログラムみたいなのがあればと思ってます。
その辺りの情報もいただけると有難いです。
長くなってしまってすみません。
Re: スクリーンキャプチャ
自作のゲームのステージ数変更パッチを作った時は、まずソースコードに書き込んだ値を元にバイナリエディタであたりをつけ、ジグ さんが書きました:それから、あれもこれもで申し訳ないのですが、
完成したクライアントとサーバを配布するとします。
そのとき、ソースは配布しないものとし、実行ファイルのみ配布とする予定なのですが、クライアントとサーバを配布するとなると一番気になるのは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) ダウンロード数: 101 回
複雑な問題?マシンの性能を上げてOpenMPで殴ればいい!(死亡フラグ)
Re: スクリーンキャプチャ
ダイアログで設定させるのに何か問題でもあるんですか?
それとファイルのパスワードが間違っていると言われて、私の環境ではダウンロードできませんでした。
それとファイルのパスワードが間違っていると言われて、私の環境ではダウンロードできませんでした。
oui C'est la Vie♪
Re: スクリーンキャプチャ
あぁ、すみません。
ダウンロードパスが間違っていました。
正しくは【57630】です。
それから、キャプチャが重なってしまうのは一緒にサーバの窓もキャプチャしていたためでした。
鏡と鏡を向かい合わせにしたときと同じ現象だったことに気付き、別の同一LAN内のパソコンで実験したら出来ました。
ローカルのIPで動かせば多少カクカクになりますが、そこまで気になりません。
ただ、知人に頼み、グローバルIPの方でインターネットを経由したデスクトップ共有がとてもストレス感じてしまいます。
スカイプの画面共有はなぜああもスムーズなのでしょうか?
送信するデータを圧縮しているのでしょうか?
スカイプの画面共有くらいスムーズにすることは可能ですか?
IPについては、ダイアログにしてはいけない理由はないです。
ただ、例えば、配布したクライアントとサーバをAさんがダウンロードしたとして、
AさんはクライアントをBさんに渡して使うわけですが、そのときBさんがダイアログでAさんのIPを入力する手間を取らせない為に、Aさんが予め自分のIPをセットしてからBさんに渡せば楽かな?と思っただけです。
このようにするにはパッチで直接書き換えるしかないのではないかと思って質問しました。
ダウンロードパスが間違っていました。
正しくは【57630】です。
それから、キャプチャが重なってしまうのは一緒にサーバの窓もキャプチャしていたためでした。
鏡と鏡を向かい合わせにしたときと同じ現象だったことに気付き、別の同一LAN内のパソコンで実験したら出来ました。
ローカルのIPで動かせば多少カクカクになりますが、そこまで気になりません。
ただ、知人に頼み、グローバルIPの方でインターネットを経由したデスクトップ共有がとてもストレス感じてしまいます。
スカイプの画面共有はなぜああもスムーズなのでしょうか?
送信するデータを圧縮しているのでしょうか?
スカイプの画面共有くらいスムーズにすることは可能ですか?
IPについては、ダイアログにしてはいけない理由はないです。
ただ、例えば、配布したクライアントとサーバをAさんがダウンロードしたとして、
AさんはクライアントをBさんに渡して使うわけですが、そのときBさんがダイアログでAさんのIPを入力する手間を取らせない為に、Aさんが予め自分のIPをセットしてからBさんに渡せば楽かな?と思っただけです。
このようにするにはパッチで直接書き換えるしかないのではないかと思って質問しました。
Re: スクリーンキャプチャ
iniファイル形式でIPアドレスを記録して実行ファイルといっしょに渡すようにすれば良いのではないでしょうかね。ジグ さんが書きました:Aさんが予め自分のIPをセットしてからBさんに渡せば楽かな?と思っただけです。
テキストエディタで直接書き換えることもできるし。
Re: スクリーンキャプチャ
出来れば余計なファイルをなくして実行ファイルだけにしたかったのですが、、、ISLe さんが書きました: iniファイル形式でIPアドレスを記録して実行ファイルといっしょに渡すようにすれば良いのではないでしょうかね。
テキストエディタで直接書き換えることもできるし。
それしか方法はなさそうなのでそれでいきます。
それから通信速度が遅いのは未だにわからないのですが、
もう無理なのでしょうか?
Re: スクリーンキャプチャ
ソース見てませんが、TCPで通信してるんじゃないですか?
UDPにすれば速度は早くなると思います。
それはそれで、データの欠損などの問題が発生したときの対処が別途必要にはなってくるんですが。
UDPにすれば速度は早くなると思います。
それはそれで、データの欠損などの問題が発生したときの対処が別途必要にはなってくるんですが。
oui C'est la Vie♪
Re: スクリーンキャプチャ
文字列リソースを使うのはどうですか?ジグ さんが書きました:出来れば余計なファイルをなくして実行ファイルだけにしたかったのですが、、、
それしか方法はなさそうなのでそれでいきます。
個人的には実行ファイルを書き換える面倒臭さに比べたら設定ファイルを余計とは思いませんが。
セキュリティリスクもありますし。