前回のぽけカレのソースを公開してからなんだかんだでもう半年が過ぎていました(汗)簡単なソースから順に公開してる感じなので今回はOneTapのソースを公開させていただきます。企画倒れしたわけではありませんので、またお付き合い下さいませ。
→ タップせざるを得ないあの部分をタップ OneTap
【ダウンロード】
OneTapのソース(823KB)
ソース行数はたったの21行。
embedded Visual C++3.0で「A simple Windows CE application」として新規プロジェクトを作成してから追加した行数だと8行という短さです^^;
◆単純なコマンドライン取得方法◆
OneTapでは「OneTap.exe 37,40」というようにコマンドラインでタップ位置を指定出来るようになっているのですが、その指定されたコマンドラインを取得しているのが、
swscanf(lpCmdLine,L"%d,%d", &px, &py);
になります。
→ MSDN Library:swscanf
swscanfは文字を読み取るための関数です。
lpCmdLineという変数にはアプリを起動させた時に指定されたコマンドラインが入るようになっているので、それを読み取り対象として第1引数に指定します。
第2引数には、読み取る形式を指定します。
今回の場合だと、カンマ区切りで2つの数値を読み取って欲しいので%d,%dと指定しています。
ちなみに数値として読み取る時は%d、文字列として読み取る時は%sになります。
その後に読み取った数値を格納するための変数を、読み取る数値の分だけ引数として指定します。
今回の場合は&px, &pyがそれに当たります。
OneTapの場合は、「OneTap.exe 37,40」とただ数値をカンマ区切りで指定するようになっていますが、もし「OneTap.exe x=37,y=40」と分かりやすく指定させたいと思った場合は、
swscanf(lpCmdLine,L"x=%d,y=%d", &px, &py);
となります。
swscanfを使えばこのように簡単にコマンドラインを指定させて動作を変えるアプリを作ることが出来ますね。
◆マウスの動作をエミュレート◆
OneTapでは指定したX座標、Y座標の位置をタップさせているのですが、そのタップ動作を擬似的に行っているのが、
mouse_event(MOUSEEVENTF_ABSOLUTE|MOUSEEVENTF_MOVE,0,0,0,0);
mouse_event(MOUSEEVENTF_LEFTDOWN,x,y,0,0);
mouse_event(MOUSEEVENTF_LEFTUP,0,0,0,0);
になります。
→ MSDN Library:mouse_event
ちなみに私は最初この関数を知らなくて、擬似タップ動作を実現するために調べて知りました^^;
ここで言うマウスは「スタイラス」と考えて下さい。
1行目ではスタイラスをX座標、Y座標0(画面左上)に移動させています。
第1引数にMOUSEEVENTF_ABSOLUTEを指定すると「絶対座標系」になります。
逆にこれを指定しないと「相対座標」(現在居る位置を基準とした移動)になります。
次に2行目で、コマンドラインで指定された位置をスタイラスで画面に押し付けた状態にします。
そして3行目で、押し付けた状態のスタイラスを画面から離します。
2行目→3行目で「タップ動作」を実現しているわけですね。
それなら2行目と3行目だけでいいのでは?と思われるかもしれませんが、起動した時の初期位置が0,0とは限らないため、一度位置を0,0に移動させなければいけないので1行目も必要になります。
このmouse_eventを自作のアプリで利用することで、ユーザビリティを向上させることが出来ると思いますので、機会があったら使ってみて下さい☆
→ タップせざるを得ないあの部分をタップ OneTap
【ダウンロード】
ソース行数はたったの21行。
embedded Visual C++3.0で「A simple Windows CE application」として新規プロジェクトを作成してから追加した行数だと8行という短さです^^;
◆単純なコマンドライン取得方法◆
OneTapでは「OneTap.exe 37,40」というようにコマンドラインでタップ位置を指定出来るようになっているのですが、その指定されたコマンドラインを取得しているのが、
swscanf(lpCmdLine,L"%d,%d", &px, &py);
になります。
→ MSDN Library:swscanf
swscanfは文字を読み取るための関数です。
lpCmdLineという変数にはアプリを起動させた時に指定されたコマンドラインが入るようになっているので、それを読み取り対象として第1引数に指定します。
第2引数には、読み取る形式を指定します。
今回の場合だと、カンマ区切りで2つの数値を読み取って欲しいので%d,%dと指定しています。
ちなみに数値として読み取る時は%d、文字列として読み取る時は%sになります。
その後に読み取った数値を格納するための変数を、読み取る数値の分だけ引数として指定します。
今回の場合は&px, &pyがそれに当たります。
OneTapの場合は、「OneTap.exe 37,40」とただ数値をカンマ区切りで指定するようになっていますが、もし「OneTap.exe x=37,y=40」と分かりやすく指定させたいと思った場合は、
swscanf(lpCmdLine,L"x=%d,y=%d", &px, &py);
となります。
swscanfを使えばこのように簡単にコマンドラインを指定させて動作を変えるアプリを作ることが出来ますね。
◆マウスの動作をエミュレート◆
OneTapでは指定したX座標、Y座標の位置をタップさせているのですが、そのタップ動作を擬似的に行っているのが、
mouse_event(MOUSEEVENTF_ABSOLUTE|MOUSEEVENTF_MOVE,0,0,0,0);
mouse_event(MOUSEEVENTF_LEFTDOWN,x,y,0,0);
mouse_event(MOUSEEVENTF_LEFTUP,0,0,0,0);
になります。
→ MSDN Library:mouse_event
ちなみに私は最初この関数を知らなくて、擬似タップ動作を実現するために調べて知りました^^;
ここで言うマウスは「スタイラス」と考えて下さい。
1行目ではスタイラスをX座標、Y座標0(画面左上)に移動させています。
第1引数にMOUSEEVENTF_ABSOLUTEを指定すると「絶対座標系」になります。
逆にこれを指定しないと「相対座標」(現在居る位置を基準とした移動)になります。
次に2行目で、コマンドラインで指定された位置をスタイラスで画面に押し付けた状態にします。
そして3行目で、押し付けた状態のスタイラスを画面から離します。
2行目→3行目で「タップ動作」を実現しているわけですね。
それなら2行目と3行目だけでいいのでは?と思われるかもしれませんが、起動した時の初期位置が0,0とは限らないため、一度位置を0,0に移動させなければいけないので1行目も必要になります。
このmouse_eventを自作のアプリで利用することで、ユーザビリティを向上させることが出来ると思いますので、機会があったら使ってみて下さい☆









