Current release of Gyazowin (Gyazo client for Windows) now available at Gyazo.com.
以下は、公開当時の投稿です。
というわけで、Gyazo: 画像の楽々アップロード のWindows版クライアントができました。
(手元に XP と Vista しか環境がないので、それ以外の環境での動作が確認できていません。コメント欄に動作報告を頂けると幸いです。)
2007/11/14 更新: MSVCP80.DLL がない環境で起動できない問題を修正しました。( /MD → /MT しただけです)
- Gyazowin 2007/11/11a ( Windows XP, 2003, Vista はこちら )
- Gyazowin 2007/11/11a with gdiplus.dll ( Windows 2000, それ以前 )
- Gyazowin 2007/11/11 source code
画面上をマウスでドラッグして選択するだけで、スクリーンショットを簡単に Web 上にアップロードできます。アップロードされた画像は、即座にブラウザで表示され、 URL もクリップボードにコピーされているので、すぐにメッセンジャーやチャットに貼り付けることができます。 Gyazowin.exe に直接画像ファイルをドロップしてアップロードすることもできます。その他 Gyazo に関する詳しい説明は、公式ページをご覧ください。
Windows 以外にも、本家 Mac 版、 YAA さんが作られた Linux 版があります。スクリーンキャストによるデモは以下で。
Gyazo を知ったのがつい最近。画面のスクリーンショットをメッセや Twitter に貼りたいと思ったときにこれは便利! Windows にも欲しい!と思っても、残念ながら Windows だと Ruby も ImageMagick も入ってる、なんて環境はほとんどありません。指定した範囲のスクリーンショットを撮る便利なコマンドも用意されていません。うーん、ないなら作ってしまえ。折角作るんだったら、どこでも簡単に使えるようにしたいし、やっぱりスタンドアロンで動かせないと!・・・という感じで、そんなに時間は掛からないだろうと踏んで手をつけはじめたものの、結局色々書くことになりました。だいぶ手抜きしてるけど、スクリプトに比べるとやっぱり長いなぁ。
アップロードした画像が削除できないのは、(他の人にアドレスが推測されることはないとはいえ)やっぱり困るので、削除できる機構は早いところ欲しいですね。
jingと比べて何が凄いんですか?
Gyazo を始めたのは僕ではないので、 Gyazo の本来の思想とは違うかもしれませんが、少なくとも Gyazowin には、おそらく期待されるような凄さは何もありません。
ただ、簡単です。なんの手間もないです。
機能的には全然凄くないですが、とにかく手間が少ないのが特徴ですね。
id.txtが必ず作られてしまうのですが,これってなくせませんかね.
id.txt は名前通りユーザID代わりで、本来は削除機能などに利用される予定らしいので、オリジナルと同様に初回アップロード時に自動生成するようにしています。
readme.txt にも書いていますが、現在も http://gyazo.com/edit.cgi?id={id.txtの中身} にアクセスすることで自分のアップロードした画像の一覧が表示できるようになっています。
なるほど.
ソースコードのライセンスはどのようになっているのでしょうか.
特に小難しいことを言うつもりはないのですが、ひとまず Creative Commons Attribution-Noncommercial 2.1 Japan License にて公開しています。(このサイトのフッタ表示と同等です)
LRESULT CALLBACK WndProc(HWND hWnd, UINT message, WPARAM wParam, LPARAM lParam)
case WM_LBUTTONUP:
の最後で,
DestroyWindow(hWnd);
PostQuitMessage(0);
のようにPostQuitMessage(0);をDestroyWindow(hWnd);のすぐ後に書いたほうがいいと思います。DestroyWindowだけだと,WM_DESTROYが呼ばれずに,アプリケーションが終了しないことがあります(タスクマネージャを見ると残ってしまっているときがあります)。うちのXP環境でも再現しました。ご検討お願いしますー
おお、ご報告ありがとうございます。反映させていただきます。
なんとなくですが、
case WM_CLOSE: DestroyWindow(hWnd); break;
と定義して、 WM_CLOSE を PostMessage してやる方が Windows の作法的には良いのかも、とか思ったりしたんですがどうでしょう。
tnjさん
ちょっと調べてみたところ同じ問題で悩んでいる人もいました。
http://www.daniweb.com/forums/thread43819.html
DestroyWindow(hWnd); だけでは,アプリが終了しないという内容です。
作法に関しては,上記ページのコメントでWM_CLOSEはデフォルトのイベントハンドラがWM_DESTROYを呼ぶので特に何もかかなくてよいと書かれていますね。たしかにC++で白紙アプリを作ったときもWM_CLOSEイベントハンドラは記述がありません。
そうすると
WM_CLOSEをpostmessageして,イベントハンドラは以下だけでよいということではないでしょうか。
case WM_DESTROY:PostQuitMessage(0);break;
Windowの閉じるボタンが押されるとWM_CLOSE -> WM_DESTROYの順番に呼ばれるので,それを模してやるとこれが一番よいかもしれませんね。
間違えて起動したときにESCキーでキャンセルしたいなあ…と思っているのですが、これって実装可能でしょうか?
透過ウィンドウを使ってる関係上、キーボードのイベントは取れないので、ちょっと簡単には実装できません。
一応、右クリックでキャンセルにはなっているのですが、それではダメですか?
This is awesome software, thank you my Japanese friend!