2015年2月24日火曜日

日記ちゃん


正統派! 乙女系 シューティングRPG ゴシックは魔法乙女 - YouTube
ゴシックは魔法乙女~さっさと契約しなさい!~ Cave新作スマフォSTG。

 稼ぐと好感度が上がるSTGといえばプロギアだったけど、この作品はどういうのなんだろうか。
エフェクトなんかはドンパッチ寄りっぽい。
事前登録でなんかもらえるっぽいの出取りあえず登録しておいた。
ゲーム配信開始時に登録したメールアドレスへシリアルコードが送られてくるそうだ。
手持ちのスマフォで遊べるかどうかはまだわからん。

2015年2月18日水曜日

バルーンチップを表示するプログラム


 タスクトレイにアイコンを置き、バルーンチップを表示するプログラムサンプル。
WM_CREATEでトレイアイコンを設置。
ボタンを押すとトレイアイコンの位置にバルーンチップを表示します。
参考になれば幸い。

#define _WIN32_WINNT 0x501
#include <windows.h>

#define CLASS_NAME  TEXT("BalloonTest") 
#define WINDOW_TITLE TEXT("BalloonTest")
#define BUTTON_TITLE TEXT("Balloon")
#define IDC_BTN_BALLOON 1
#define TASKTRAY_ID  2
#define WM_TASKTRAY    (WM_APP+1)





void balloon( HWND hWnd )
{
 if ( hWnd )
 {
  NOTIFYICONDATA notifyIcon = {0};
  notifyIcon.cbSize = sizeof(notifyIcon);
  notifyIcon.hWnd = hWnd;
  notifyIcon.uID = TASKTRAY_ID;
  notifyIcon.uFlags = NIF_INFO;
  notifyIcon.dwInfoFlags = NIIF_ERROR;

  lstrcpy( notifyIcon.szInfoTitle, TEXT("バルーンタイトル") );
  lstrcpy( notifyIcon.szInfo, TEXT("バルーン文字") );
  
  Shell_NotifyIcon( NIM_MODIFY, ¬ifyIcon );
 }
}



void putTrayIcon( HWND hWnd )
{
 // タスクトレイアイコン追加
 NOTIFYICONDATA notifyIcon = {0};
 notifyIcon.cbSize = sizeof(notifyIcon);
 notifyIcon.uID = TASKTRAY_ID;
 notifyIcon.hWnd = hWnd;
 notifyIcon.uFlags = NIF_ICON | NIF_TIP | NIF_MESSAGE;
 notifyIcon.uCallbackMessage = WM_TASKTRAY;
 notifyIcon.hIcon = LoadIcon( NULL, IDI_APPLICATION );
 lstrcpy( notifyIcon.szTip, WINDOW_TITLE );
 Shell_NotifyIcon( NIM_ADD, ¬ifyIcon );
}



void removeTrayIcon( HWND hWnd )
{
 NOTIFYICONDATA notifyIcon = {0};
 notifyIcon.cbSize = sizeof(notifyIcon);
 notifyIcon.hWnd = hWnd;
 notifyIcon.uID = TASKTRAY_ID;
 Shell_NotifyIcon( NIM_DELETE, ¬ifyIcon );
}




LRESULT CALLBACK wndProc( HWND hWnd, UINT msg, WPARAM wp, LPARAM lp )
{
 static UINT uiTaskbarRestart = WM_NULL;
 switch ( msg )
 {
 case WM_CREATE:
  putTrayIcon( hWnd );
  uiTaskbarRestart = RegisterWindowMessage( TEXT("TaskbarCreated") );
  break;
 case WM_CLOSE:
  removeTrayIcon( hWnd );
  break;
 case WM_DESTROY:
  PostQuitMessage(0);
  return 0;
 case WM_COMMAND:
  switch( LOWORD(wp) )
  {
  case IDC_BTN_BALLOON:
   balloon( hWnd );
   break;
  }
  return 0;
 case WM_TASKTRAY:
  switch ( lp )
  {
  case WM_LBUTTONDOWN:
   MessageBox( hWnd, TEXT("タスクトレイクリック"), WINDOW_TITLE, MB_OK );
   return 0;
  case NIN_BALLOONUSERCLICK:
   MessageBox( hWnd, TEXT("バルーンクリック"), WINDOW_TITLE, MB_OK );
   return 0;
  }
  break;
 }

 // タスクバー再起動時のアイコン再設定処理
 if ( msg == uiTaskbarRestart )
 {
  removeTrayIcon( hWnd );
  putTrayIcon( hWnd );
 }

 return DefWindowProc( hWnd , msg , wp , lp );
}



int WINAPI WinMain( HINSTANCE hInstance, HINSTANCE hPrevInstance, PSTR lpCmdLine, int nCmdShow )
{

 WNDCLASS winc = {0};
 winc.style  = CS_HREDRAW | CS_VREDRAW;
 winc.lpfnWndProc = wndProc;
 winc.cbClsExtra = 0;
 winc.cbWndExtra = 0;
 winc.hInstance  = hInstance;
 winc.hIcon   = LoadIcon(NULL , IDI_APPLICATION);
 winc.hCursor  = LoadCursor(NULL , IDC_ARROW);
 winc.hbrBackground = (HBRUSH)GetStockObject(WHITE_BRUSH);
 winc.lpszMenuName = NULL;
 winc.lpszClassName = CLASS_NAME;

 if ( !RegisterClass(&winc) ) return 0;

 HWND hWnd = CreateWindow(
   CLASS_NAME, WINDOW_TITLE,
   WS_OVERLAPPEDWINDOW | WS_VISIBLE,
   CW_USEDEFAULT, CW_USEDEFAULT, 400, 200, NULL, NULL,
   hInstance, NULL );
 if ( hWnd == NULL ) return 0;


 
 CreateWindow(
  TEXT("BUTTON"), BUTTON_TITLE,
  WS_CHILD | WS_VISIBLE | BS_PUSHBUTTON,
  10, 10, 300, 100, hWnd, reinterpret_cast(IDC_BTN_BALLOON), hInstance, NULL );


 MSG msg;
 while ( GetMessage(&msg, NULL, 0, 0) )
 {
  DispatchMessage(&msg);
 }
 

 return msg.wParam;
}

 ちなみに、dwInfoFlags にNIIF_ERRORを指定するとバルーンのアイコンがこうなります。


 NIIF_NONEだとアイコンなしに。




 2015-03-19
uiTaskbarRestart の初期値を WM_NULL に変更。存在を忘れてた。

2015年2月15日日曜日

windowCap ver1.00a





■ダウンロード

File: windowCap100a.zip
Size: 135KB




■概要
    PrintScreenが押されると、ウィンドウのスクリーンショットを撮って画像ファイルで出力します。
    対応出力形式:BMP、PNG
    ShiftやCtrl、Altキーの同時押しによる、キャプチャ範囲の個別設定が可能。(3つまで)
    音とバルーン表示でわかりやすく出力確認。
    出力ファイル名に日付を入れるといった、ちょっとだけ柔軟な名前設定もできます。



■動作環境
    Windows 8.1
    CPU 1GHz以上
    メモリ 1GB以上



■アンインストール
    レジストリは触っておりません。
    削除の際はフォルダごとゴミ箱へ。



■使い方
    ●キー設定
        スクリーンショットの撮り方と記録キーを設定できます。
        3種類まで設定できます。
        3種類で同じ記録キー設定も使用できます。その場合、複数枚の画像ファイルが出力されます。
        (クリップボード出力の場合は下側の設定が優先されます)

        ○記録するウィンドウに関する設定
        ・なし
            キーが押されても何もしません。
        ・デスクトップ全体
            メインディスプレイ全体を範囲とします。
        ・アクティブウィンドウ
            現在アクティブなウィンドウを範囲とします。
        ・アクティブウィンドウのクライアント領域
            現在アクティブなウィンドウのクライアント領域を範囲とします。
            *クライアント領域はウィンドウからタイトルバーなどのフレーム部分を除いた領域のこと。
        ・カーソル下のウィンドウ
            マウスカーソルの下にあるウィンドウを範囲とします。
        ・カーソル下のウィンドウのクライアント領域
            マウスカーソルの下にあるウィンドウのクライアント領域を範囲とします。
        ・複数のデスクトップ全体
            マルチディスプレイ用の設定で、複数ディスプレイそれぞれを範囲とします。
            ファイル出力の場合、複数ファイルに出力され、
                ファイル名には(1),(2)なと末尾に数値が追記されます。
            クリップボード出力だとプライマリディスプレイのみ対象になります。(デスクトップ全体と同じ)
        ・カーソル下のデスクトップ全体
            現在カーソルがあるディスプレイ全体を範囲とします。

        ○記録キーの同時押しの設定
            PrintScreenキー と同時に Shift、Ctrl、Alt キーを同時に押させるかを設定できます。

    ●キャプチャ設定
        マウスカーソルを含める
            チェックをいれると、画像にカーソルを含むことができます。
        出力先
            ファイルかクリップボードから選択できます。

    ●通知
        バルーン
            記録に成功したらバルーン表示でお知らせします。
        音を鳴らす
            記録に成功したら音を鳴らします。
            実行ファイルと同フォルダにある sound.wav を置き換えて好きな音に変更してください

    ●ファイル設定
        ファイル形式
            ビットマップかPNGで画像ファイルを保存できます
        上書き時に確認ウィンドウを出す
            画像ファイル出力先に出力するファイル名が既に存在していたら、確認ウィンドウを出すようにします。
            チェックが入っていなければ、自動的に上書きします。
        出力先フォルダ
            画像ファイルが出力されるフォルダを設定できます。
            指定したフォルダが存在していないと出力されませんのでご注意ください。
        ...ボタン
            フォルダ選択ウィンドウを出します。出力したいフォルダを選択してください。
        出力先フォルダを開く
            設定したフォルダを開きます。
            指定フォルダが存在してないと、グレー表示になり押すことができなくなります。
        ファイル名
            画像ファイル名を設定できます。
            ファイル名には「\」「/」?」「*」「"」「>」「<」「|」の文字は設定できません。
            また、以下の指定文字を使用すると、自動的に数値に置き換えられます。
                 「%y」年4桁
                 「%m」月
                 「%d」日
                 「%h」時
                 「%i」分
                 「%s」秒
                 「%l」ミリ秒
                 「%Y」年(下2桁。2015年であれば15と出力されます)
                 「%M」月(2桁。1月であれば01と出力されます)
                 「%D」日(2桁)
                 「%H」時(2桁)
                 「%I」分(2桁)
                 「%S」秒(2桁)
                 「%L」ミリ秒(3桁)
                 「%n」連番値
                 「%%」文字の%
            例
                [%y%m%d]cap%n → [2015213]cap0001
                [%Y%M%d]cap%n → [150213]cap0001
                [%Y-%M-%d]cap%n → [15-02-13]cap0001
                [%y%M%d_%H%I%S]cap%n → [20150213_010101]cap0001

            拡張子はファイル形式で設定されたファイルの拡張子が自動的につきます。

        連番値
            画像が出力されるごとに+1されていく数値です。ファイル名%nにて使用することできます。
        連番桁数
            ファイル名で%nを使用したときに、連番値が設定した桁数になるよう調整されます。
            4桁であれば1 → 0001、7桁であれば1 → 0000001 とファイル名に設定されるようになります。



■そのほか
    このソフトウェアを使用し、何らかの障害が発生しても責任を取りかねますのでご了承ください。

    zlibライブラリを使用しています。
        Copyright (C) 1995-2005 Jean-loup Gailly and Mark Adler
        http://www.winimage.com/zLibDll/

    libpngライブラリを使用しています。
        Copyright (c) 1998-2007 Glenn Randers-Pehrson
        http://www.libpng.org/



■更新履歴
    2015-02-15 ver 1.00a
        終了確認メッセージウィンドウが出ているときにキャプチャすると強制終了していたのを修正
    2015-02-14 ver 1.00

日記ちゃん

 さっそくバグ発見。終了確認ウィンドウを表示中にキャプチャすると強制終了する。
あと音が鳴ったりならなかったりするバグも確認しているが原因がわからない。
起動後クリップボード出力なら音が鳴るが、ファイル出力だと鳴らなくなる。
これはファイル出力側の処理で、触ったらダメなところに触ってる系の動きっぽい。

 どのタイミングから音が出なくなるんだろうかとチェックするため、
1処理ごとに音を鳴らしながら確認した。
音ファイル読み込み直後→鳴る。
コンフィグ読み込み直後→鳴る。
キャプチャ受けつけ直後→なる。
画面コピー直後    →なる。
ファイル名生成直後  →ならない。
 といった感じにちまちま探した結果、以下のように間違っていた。

ZeroMemory( outputFileName, fileNameBufSize );
ZeroMemory( outputFileName, filePathBufSize );
↓ただしくはこう
ZeroMemory( outputFileName, fileNameBufSize );
ZeroMemory( outputFilePath, filePathBufSize );

 うん。
この手のバグはデバッガにどう表示したものかわからん。難しい。

 あとバルーン表示したときに「ぽっ」って音が鳴ってた覚えがあるんだけど、
デバッグしてても全然音がしない。
サウンド設定でならないようになってんのかな? 
と思いついて設定をのぞいてみたらそもそもWindows8では「ぽっ」って音じゃなくなってる。
「ぽーん」って感じに。
 でもそれ以前にほかのアプリで表示された時も音なんてした覚えがないぞ! と検索掛けてみたら、
Windows7では音が出ないんだそうな。だからたぶんWindows8でもこの音出てない。たぶんね!

2015年2月14日土曜日

windowCap ver1.00




■ダウンロード

File: windowCap100.zip
Size: 135KB





■概要
    PrintScreenが押されると、ウィンドウのスクリーンショットを撮って画像ファイルで出力する常駐アプリです。
    対応出力形式:BMP、PNG
    ShiftやCtrl、Altキーの同時押しによる、キャプチャ範囲の個別設定が可能。
    音とバルーン表示でわかりやすく出力確認。
    出力ファイル名に日付を入れるといった、ちょっとだけ柔軟な名前設定もできます。



■動作環境
    Windows 8.1
    CPU 1GHz以上
    メモリ 1GB以上



■アンインストール
    レジストリは触っておりません。
    削除の際はフォルダごとゴミ箱へ。



■使い方
    ●キー設定
        スクリーンショットの撮り方と記録キーを設定できます。
        3種類まで設定できます。
        3種類で同じ記録キー設定も使用できます。その場合、複数枚の画像ファイルが出力されます。
        (クリップボード出力の場合は下側の設定が優先されます)

        ○記録するウィンドウに関する設定
        ・なし
            キーが押されても何もしません。
        ・デスクトップ全体
            メインディスプレイ全体を範囲とします。
        ・アクティブウィンドウ
            現在アクティブなウィンドウを範囲とします。
        ・アクティブウィンドウのクライアント領域
            現在アクティブなウィンドウのクライアント領域を範囲とします。
            *クライアント領域はウィンドウからタイトルバーなどのフレーム部分を除いた領域のこと。
        ・カーソル下のウィンドウ
            マウスカーソルの下にあるウィンドウを範囲とします。
        ・カーソル下のウィンドウのクライアント領域
            マウスカーソルの下にあるウィンドウのクライアント領域を範囲とします。
        ・複数のデスクトップ全体
            マルチディスプレイ用の設定で、複数ディスプレイそれぞれを範囲とします。
            ファイル出力の場合、複数ファイルに出力され、
                ファイル名には(1),(2)なと末尾に数値が追記されます。
            クリップボード出力だとプライマリディスプレイのみ対象になります。(デスクトップ全体と同じ)
        ・カーソル下のデスクトップ全体
            現在カーソルがあるディスプレイ全体を範囲とします。

        ○記録キーの同時押しの設定
            PrintScreenキー と同時に Shift、Ctrl、Alt キーを同時に押させるかを設定できます。

    ●キャプチャ設定
        マウスカーソルを含める
            チェックをいれると、画像にカーソルを含むことができます。
        出力先
            ファイルかクリップボードから選択できます。

    ●通知
        バルーン
            記録に成功したらバルーン表示でお知らせします。
        音を鳴らす
            記録に成功したら音を鳴らします。
            実行ファイルと同フォルダにある sound.wav を置き換えて好きな音に変更してください

    ●ファイル設定
        ファイル形式
            ビットマップかPNGで画像ファイルを保存できます
        上書き時に確認ウィンドウを出す
            画像ファイル出力先に出力するファイル名が既に存在していたら、確認ウィンドウを出すようにします。
            チェックが入っていなければ、自動的に上書きします。
        出力先フォルダ
            画像ファイルが出力されるフォルダを設定できます。
            指定したフォルダが存在していないと出力されませんのでご注意ください。
        ...ボタン
            フォルダ選択ウィンドウを出します。出力したいフォルダを選択してください。
        出力先フォルダを開く
            設定したフォルダを開きます。
            指定フォルダが存在してないと、グレー表示になり押すことができなくなります。
        ファイル名
            画像ファイル名を設定できます。
            ファイル名には「\」「/」?」「*」「"」「>」「<」「|」の文字は設定できません。
            また、以下の指定文字を使用すると、自動的に数値に置き換えられます。
                 「%y」年4桁
                 「%m」月
                 「%d」日
                 「%h」時
                 「%i」分
                 「%s」秒
                 「%l」ミリ秒
                 「%Y」年(下2桁。2015年であれば15と出力されます)
                 「%M」月(2桁。1月であれば01と出力されます)
                 「%D」日(2桁)
                 「%H」時(2桁)
                 「%I」分(2桁)
                 「%S」秒(2桁)
                 「%L」ミリ秒(3桁)
                 「%n」連番値
                 「%%」文字の%
            例
                [%y%m%d]cap%n → [2015213]cap0001
                [%Y%M%d]cap%n → [150213]cap0001
                [%Y-%M-%d]cap%n → [15-02-13]cap0001
                [%y%M%d_%H%I%S]cap%n → [20150213_010101]cap0001

            拡張子はファイル形式で設定されたファイルの拡張子が自動的につきます。

        連番値
            画像が出力されるごとに+1されていく数値です。ファイル名%nにて使用することできます。
        連番桁数
            ファイル名で%nを使用したときに、連番値が設定した桁数になるよう調整されます。
            4桁であれば1 → 0001、7桁であれば1 → 0000001 とファイル名に設定されるようになります。



■そのほか
    このソフトウェアを使用し、何らかの障害が発生しても責任を取りかねますのでご了承ください。

    zlibライブラリを使用しています。
        Copyright (C) 1995-2005 Jean-loup Gailly and Mark Adler
        http://www.winimage.com/zLibDll/

    libpngライブラリを使用しています。
        Copyright (c) 1998-2007 Glenn Randers-Pehrson
        http://www.libpng.org/



■更新履歴
    2015-02-14 ver 1.00

2015年2月1日日曜日

ShakeExec ver1.2





■ダウンロード

file: ShakeExec120.zip
size: 81.8KB



■概要
    マウスをガチャガチャすることで指定のファイルを実行できるようにします。



■動作環境
    Windows XP, 8
    CPU 800MHz以上
    メモリ 256MB以上



■アンインストール
    レジストリは触っておりません。
    削除の際はフォルダごとゴミ箱へ。



■使い方
    「変更」ボタンで実行したいファイルを選択してください。
    あとはマウスをガチャガチャと動かせば、指定したファイルが実行されるようになります。
    フォルダやURLも直接入力することで使用可能にできます。

    ■シェイク設定
        マウスをガチャガチャと動かした(以下シェイク)と判定される値を設定します。
    「回数」
        シェイク回数を設定します。設定回数シェイクされるとファイルが実行されます。
    「距離」
        指定の値以上カーソルが動いていないとシェイクしたと判定されません。
    「角度」
        シェイクしたと判定される角度を設定します。
        設定値以上に大きく角度が変化するとシェイクしたと判定されます。
        →↓とマウスを動かしたとき、シェイクしたと判定させたい場合は90度付近に設定します。
        シェイクの感度がよすぎる場合は値を大きくしてください。
    「受付時間」
        シェイク間の時間の設定で、
        設定した値の時間が経過するとシェイクが途切れたと識別され、シェイク回数がリセットされます。
        シェイクが途切れがちな場合は値を大きくしてみてください。
        単位はミリ秒です。「500」の場合、0.5秒になります。
    「実行後受付不能時間」
        ファイル実行後、一定時間シェイクを判定しなくなります。
        単位はミリ秒です。

    ●デフォルト設定に戻す
        識別設定の数値をデフォルト設定に戻します

    ●実行
        指定ファイルを即座に実行します。ファイル指定が正しくできているか確認するのにご使用ください。

    ●実行時に音を鳴らす
        実行したときに音が鳴るようになります。
        同フォルダ内のexec.wavを置き換えると変更することができます。

    ●シェイク
        シェイク状況を表示します。
        シェイクしたと判定されると「。」が表示されていき、実行回数まで到達すると「exec!」と表示されます。


    ■ログ
        ログ表示のチェックを入れることで、シェイク情報を表示することができます。
        シェイク設定値の参考にご使用ください。
        
    「シェイク」
        連続のシェイク回数。
        この回数が、設定の「回数」になると実行されます。
    「経過時間」
        前回シェイクからの経過時間(ミリ秒)
        設定の「受付時間」以内ならシェイク判定になります
    「距離」
        カーソルの直線移動距離
        設定の「距離」の値以上ならシェイク判定になります
    「角度」
        カーソルの移動角度。右が0度、下が90度、左が180度、上が270度になります。
    「角度差」
        前回シェイク時の移動角度と今回移動角度との角度差。
        設定の「角度」の値以上ならシェイク判定になります
    「シェイク判定」
        ○ならシェイク判定
        ×ならシェイクならず
        △なら実行後の無効時間中です。



■そのほか
    このソフトウェアを使用し、何らかの障害が発生しても責任を取りかねますのでご了承ください。



■更新履歴
    2015-02-02 ver1.2
        カーソル位置取得方法を元に戻しつつ、やや正確に計算するよう修正
    2015-01-28 ver1.1
        カーソル位置取得方法を変更
        シェイクログを表示するよう修正
    2014-07-08 ver1.01
        「実行時に音を鳴らす」を追加
        デフォルトの距離設定を32dotから56dotに変更
    2013-12-25 ver1.00b
        シャットダウン、ログオフ時にウィンドウ情報を保存できてなかったのを修正。
    2013-12-20
        Windows終了時に設定を保存していなかったのを修正
    2013-04-09 ver1.00a
        しばらくマウスを動かしてないとチェック周期が長くなるよう修正
        シェイク認識するとチェック周期が短くなるよう修正
    2013-04-06 ver1.00