Skip to content

wakewakame/GravityDesktop2

Folders and files

NameName
Last commit message
Last commit date

Latest commit

 

History

69 Commits
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 

Repository files navigation

demo

Gravity Desktop 2

デスクトップのアイコンが落下するジョークソフトです。

ダウンロード

GravityDesktop2 v1.0.0

ダウンロード後 GravityDesktop2.zip を展開し GravityDesktop.exe を実行するとデスクトップのアイコンが落下します。

操作方法

  • 実行するとデスクトップのアイコンが落下します
  • 右クリックでアイコンをつまむことができます
  • 左クリックで選択中の全てのアイコンを寄せ集めることができます
  • 1 キーを押しながらドラッグで重力を操作できます
  • 2 キーを押すと無重力状態になります
  • 3 キーを押すと全てのアイコンがマウスに寄ります
  • 4 キーを押すと初期位置に移動します
  • Esc キーで終了します

ビルド方法

Git、CMake、Visual Studioが必要になります。 これらがインストールされていない場合は事前にインストールしておいてください。

コマンドプロンプトを立ち上げ、任意の場所で以下のコマンドを実行します。

git clone https://github.com/wakewakame/GravityDesktop2.git
cd GravityDesktop2
git submodule update --init --recursive
mkdir build
cd build
cmake ..
cmake --build . --target GravityDesktop2 --target hook --config Release

コマンドを実行すると build/Release フォルダの中に GravityDesktop2.exe が生成されます。

配布用 zip ファイルの作成

cd build\Release
cmake -E copy ..\..\README.md .\
cmake -E copy ..\..\CREDIT .\
cmake -E copy ..\..\LICENSE .\
cmake -E tar "cfv" GravityDesktop2.zip --format=zip GravityDesktop2.exe hook.dll README.md CREDIT LICENSE

コマンドを実行すると build/Release フォルダの中に GravityDesktop2.zip が生成されます。

ファイル構成

ファイル名 説明
main.cpp このプログラムにmain関数が書かれています。
include/ C++のヘッダファイルがまとまっています。
src/ C++のソースファイルがまとまっています。
lib/ 依存ライブラリがここに格納されます。
lib/hook/ 他のウィンドウのマウスやキーボードのイベントをフックするライブラリです。
lib/DirectXTK/ 描画ライブラリです。
lib/directx-vs-templates/ DirectXの開発環境の雛形がまとまっています。
lib/box2d/ 二次元の物理演算ライブラリです。
examples/ サンプルプログラムがまとまっています。
CMakeLists.txt CMakeLists.txtです。CMakeで環境構築するので、それに使います。

仕組み

デスクトップの画面を再現したウィンドウを全画面に表示することでアイコンが落下しているように見せています。 具体的な処理の流れは以下の通りです。

  1. Win32API を用いてデスクトップ上の全てのアイコンの座標を取得する
  2. 1 の座標を用いて Box2D の仮想空間の中に長方形を生成する
  3. Windows の隠し API である DwmGetDxSharedSurface を用いてデスクトップのアイコンをαチャンネル付きでキャプチャする
  4. 2 で生成した落下する長方形に 3 で取得したアイコンのキャプチャを貼り付ける
  5. ウィンドウに対して送られてくるマウスイベントなどを座標変換したのちにデスクトップに転送する
  6. 3 に戻る

About

No description, website, or topics provided.

Resources

License

Stars

5 stars

Watchers

1 watching

Forks

Packages

 
 
 

Contributors