01266
金魚鉢
ホームページへ戻る
ご意見・ご要望ございましたらここに書き込みをお願いします。
最近はあまり対応できていなくて申し訳ありません。


マウスジェスチャについて。 / NoName
Windowfrogを愛用させていただいている者です。
この頃ほんの少しながらプログラムをかじり始め、
Windowfrogの便利なマウスジェスチャ機能を自作ツールの中でも実現出来たらと思ったのですが、
以下の点で悩んでおります。

@マウスフックプロシージャ内のcase WM_MOUSEWHEELにて、
GetAsyncKeyState(VK_LBUTTON)で左クリックされているかどうかを確認してPostMessage()するも、
自作ツールが反応するより先に、元から表示されているウインドウでスクロールが行われてしまいます。

A上記の点については目を瞑ってそのまま処理を続行するも、左クリックや右クリックを離したことを検出する方法が分かりません。

宜しければ、以下の二点について答えていただければと思います。

掲示板で相応しくない話題であれば、メールで答えていただければと思います。

No.175 2010/08/07(Sat) 21:39:24

Re: マウスジェスチャについて。 / Goldfish(管理人)
はじめまして。Windowfrogをご利用いただきありがとうございます。
こちらで返信させていただきます。

@フックプロシージャでメッセージを処理した際に0以外の値を返すとそのメッセージをそこで止めることができます。これで他のウィンドウのスクロールを阻止できると思います。

”If the hook procedure processed the message, it may return a nonzero value to prevent the system from passing the message to the target window procedure.”
http://msdn.microsoft.com/en-us/library/ms644988(v=VS.85).aspx

それでも上手くいかない場合は何らかの原因でグローバルフック自体に失敗している可能性も考えられると思います。

A左ボタン/右ボタンが離されたことを検出するにはそれぞれWM_LBUTTONUP/WM_RBUTTONUPというメッセージがあるので、それらを捕捉すれば可能です。

お役に立てば幸いです。もし見当はずれだったらすみません(^^;)

No.176 2010/08/07(Sat) 23:02:00

Re: マウスジェスチャについて。 / NoName
回答ありがとうございます。
@について、既にreturn 1;と言った具合にスクロールを潰す事は試したのですが、その場合自作ツールのウインドウの方でもスクロールが動いてくれません。
(これはwindowfrogの様に左クリック+ホイール操作を続けた場合のことであって、クリック操作を中断すれば勿論スクロールは可能です)

Aこれについても既に試しており、
ツールのウインドウが表示される以前に押下した場合、
WM_LBUTTONUPは自作ツール本体のウインドウプロシージャ及びDLLのフックプロシージャに飛んできませんでした。
(WM_NCLBUTTONUPも同様)

条件を後出し等と大変厚かましい行為をお許し下さい。

回答宜しくお願いします。

No.177 2010/08/07(Sat) 23:51:17

Re: マウスジェスチャについて。 / Goldfish(管理人)
う〜ん、フックって面倒ですよね・・笑

自ウィンドウがみえている時のみ飛んでくるとなると、グローバルなフックが上手くいっていない可能性が高いと思いますよ。(実は自分でも経験あります(^^;


自分的には、試しに最小の別プロジェクトで実験を行い、その後本体に組み込むというのがお薦めです。

No.178 2010/08/08(Sun) 01:27:10

Re: マウスジェスチャについて。 / Goldfish(管理人)
C++のソースですが、プロシージャの処理は以下のような感じで簡易版が実現可能かと思います。
ご参考までに。。。

if (wParam == WM_RBUTTONDOWN) {
bButtonDown = TRUE;
return TRUE;
}
else if (wParam == WM_RBUTTONUP) {
bButtonDown = FALSE;
if (bVisible) {
PostMessage(hwndTarget, WM_HOOKMSG_HIDE, 0, 0);
bVisible = FALSE;
}
return TRUE;
}
else if (wParam == WM_MOUSEWHEEL && bButtonDown)
{
if (!bVisible) {
PostMessage(hwndTarget, WM_HOOKMSG_SHOW, 0, 0);
bVisible = TRUE;
}
MSLLHOOKSTRUCT* msll = (MSLLHOOKSTRUCT*)lParam;
PostMessage(hwndTarget, WM_HOOKMSG_WHEEL, msll->mouseData, 0);
return TRUE;
}

No.180 2010/08/08(Sun) 01:48:17

Re: マウスジェスチャについて。 / NoName
回答ありがとうございます。
サンプルまで提示していただき、大変ありがたいのですが、
WM_RBUTTONDOWNやWM_RBUTTONUPを受け取った時TRUEを返すと、
通常の右クリック操作に支障をきたす様です。
(CallNextHookExすれば解決しました)

しかし、wParamがWM_MOUSEWHEELかつbButtonDownがTRUEの条件のところまで来てくれないようです。
(WM_RBUTTONDOWNやWM_RBUTTONUPのところには来てくれています)

グローバルフックは他の条件(WM_MOUSEMOVEなど)で見る限り成功しているようです。

何度も何度も申し訳ありませんが、宜しくお願いします。

No.181 2010/08/09(Mon) 00:10:42

Re: マウスジェスチャについて。 / NoName
以下の点についてお詫び申し上げます。
先程の質問の原因は変数をstaticにするのを忘れているだけでした。
「WM_RBUTTONUPのところには来てくれています」とありますが、実際の状況は以前のAから変化しておらず、
いまだにこちらの原因は分かりません。

また、先程は書き忘れたのですが、WM_HOOKMSG_WHEELは一体どのような処理を呼び出しているのでしょうか。
SendInputで十字キーで良いのでしょうか。

連投で申し訳ないですが、宜しくお願いします。

No.182 2010/08/09(Mon) 01:44:48

Re: マウスジェスチャについて。 / Goldfish(管理人)
つまり、最初の状況から何も変わってないってことですか 笑
言葉で説明するにはお互い限界があるのでサンプル的なプロジェクトを作ってみました。
http://molmott.hp.infoseek.co.jp/src/hook_test.lzh

VisualStudio2010のプロジェクト形式になっています。(というかよくわからないので丸ごと固めました、馬鹿みたいにでかいです… 笑)
他のIDEをご使用の場合も、重要なのはHook.cpp(DLLのソース)とhook_test.cpp(呼び出し側のソース)のみですので、これらを見ていただければわかると思います。
ちなみにMyRegisterClassやらInitInstanceやらの関数がいますがこれらはVisualStudioのWin32標準テンプレートの記述です。気にしないでください。

一応ソースにコメントを付けましたがわかりにくかったらすみません・・・
見ていただくとわかるとおもいますが、このサンプルでは大して難しいことはやっていません。


>また、先程は書き忘れたのですが、WM_HOOKMSG_WHEELは一体どのような処理を呼び出しているのでしょうか。
これは実現したいことに応じて変わると思います。上記サンプルではウィンドウのサイズの変更を行っています。
自ウィンドウに単純にスクロールとして認識させたい場合はWM_MOUSEWHEELを送る手もあると思います(その場合パラメータも作るべきかもしれません…)

>TRUEを返すと、通常の右クリック操作に支障をきたす様です。
これはTRUEを返して無効にしているので当然のことで、この点は上記サンプルでも同じです。
そのうえでWindowfrogではWM_RBUTTONDOWNを受けた時にタイムアウト処理を行うスレッド作り、所定の時間内にホイールの回転が行われなかった場合はmouse_event関数を使って擬似的に無効にした右ボタン押下を再現しています。
記述が込み入るためこの処理は省きました。

これが何らかの手掛かりになれば幸いです

No.183 2010/08/09(Mon) 16:28:42

Re: マウスジェスチャについて。 / NoName
回答有難う御座います。
お陰で上記の問題を解決する事が出来ました。

後は、
>タイムアウト処理を行うスレッド作り、所定の時間内にホイールの回転が行われなかった場合は...
の部分だけとなったのですが、これについてはWaitForSingleObject()を使えばよいのでしょうか?
マルチスレッドは始めてですので、自信があまりないのですが...

No.184 2010/08/09(Mon) 21:33:49

Re: マウスジェスチャについて。 / Goldfish(管理人)
よかったです。何が原因でしたか??

タイムアウト処理ですがWaitForSingleObject関数でいけますよ。
また、スレッドを呼び出す方法はいくつかありますが、解説サイトがたくさんありますので、そちらを参考にがんばってください(^^)

No.185 2010/08/09(Mon) 22:07:04

Re: マウスジェスチャについて。 / NoName
原因はSetWindowsHookExのフックタイプが誤っていた事でした。

スレッドについてですが、「イベント」なるものをなかなか理解できず、今尚前回の投稿より進歩していません。
宜しければ助言を頂けないでしょうか。

No.186 2010/08/10(Tue) 17:55:44

Re: マウスジェスチャについて。 / Goldfish(管理人)
たいして詳しいわけではないので、自分なりの解釈で説明させていただきます。

イベントとは要はON・OFFを示すグローバル変数です。
・CreateEvent関数で任意の名前を持つイベントを作成できます。
・作成したイベントはOpenEvent関数で名前を指定することで複数のスレッドからアクセスできます。
・SetEvent関数・ResetEvent関数でイベントの状態を変更できます。

また、WaitForSingleObject関数は所謂待機関数というもので、指定時間が経過するか、指定されたイベントがONになると処理を返すというものです。

以下のサイトの説明が分かりやすいと思うのでこちらを是非ご参考に。
http://www.geocities.jp/debu0510/personal/kusosure.html


具体的な実装としては、
・フック側は
@マウスボタンが押されたらスレッドを開始する。
A(タイムアウト前に)ホイール回転がなされたらイベントをONにする(スレッドを停止させる)
Bウィンドウ表示

・スレッド側は
@WaitforSingleObject関数で待機。
A(タイムアウトで処理を抜けた場合)mouse_event関数でボタン押下を再現
BイベントをOFFにする

というような感じでしょうか。あまり上手く説明できてませんね…
実際Windowfrogもいろいろな処理をしていて、ぱっとソースを見ても何をやっているのか分からず、カオスな状態だったりします…

No.187 2010/08/10(Tue) 18:52:55

Re: マウスジェスチャについて。 / NoName
回答有難う御座います。
なんとかイベントの方を理解することが出来、終わりまであと少しなのですが、以下の問題が発生しています。

@WaitForSingleObjectの適切なタイムアウト値が分かりません。
また、環境のせいか、例えば1000msとすると、それ毎にマウスの動きが少し止まってしまいます。

Amouse_eventやSendInputが届きません。
MessageBoxで確認する限り、mouse_event手前までは来ているのですが、肝心のマウスのクリックが出来ません。
mouse_event(MOUSEEVENTF_RIGHTDOWN,0,0,0,0);
mouse_event(MOUSEEVENTF_RIGHTUP,0,0,0,0);
とするだけで出来ると思っているのですが、違うのでしょうか。

ご教授お願いします。

No.188 2010/08/10(Tue) 20:35:31

Re: マウスジェスチャについて。 / Goldfish(管理人)
> また、環境のせいか、例えば1000msとすると、それ毎にマウスの動きが少し止まってしまいます。
まず、この点ですがマウスの動きが止まるということは、並行処理ができていないということなので、スレッドの作成に失敗しています。
ちなみに、Windowfrogは初期値は500msになっています(実は設定で変更できたりもします。

> Amouse_eventやSendInputが届きません。
> mouse_event(MOUSEEVENTF_RIGHTDOWN,0,0,0,0);
> mouse_event(MOUSEEVENTF_RIGHTUP,0,0,0,0);

であっていると思います。
先ほど書き忘れましたがmouse_eventで合成したメッセージもフックプロシージャに届くので、場合によってはそれも考慮して処理を組む必要があります。

自分もかなり苦労した部分です(^^;)がんばってください!

No.189 2010/08/10(Tue) 20:53:45

Re: マウスジェスチャについて。 / NoName
>mouse_eventで合成したメッセージもフックプロシージャに届くので、場合によってはそれも考慮して処理
について、以下のようなグローバル変数を使用した簡単な切り替えを試してみました。
void Thread(void){
if(WaitForSingleObject(hEvent,500)==WAIT_TIMEOUT){
bClick=TRUE;
mouse_event(MOUSEEVENTF_LEFTDOWN,0,0,0,0);
mouse_event(MOUSEEVENTF_LEFTUP,0,0,0,0);
bClick=FALSE;
ResetEvent(hEvent);
}
ExitThread(0);
}
//フックプロシージャ内
if(wParam==WM_LBUTTONDOWN){
hThread=CreateThread(NULL,0,(LPTHREAD_START_ROUTINE)Thread,0,0,NULL);
CloseHandle(hThread);
hThread=NULL;
bLeftButtonDown=TRUE;
if(bClick)return CallNextHookEx(g_hMouseHook,nCode,wParam,lParam);
else return TRUE;
}

すると、クリックが効いたかと思いきや、
500ms毎にクリック操作が繰り返されてしまうようです。

これはスレッドの作成が失敗しているからなのでしょうか。

No.190 2010/08/10(Tue) 22:53:35

Re: マウスジェスチャについて。 / Goldfish(管理人)
@CloseHandleがその位置にあるのはまずい気がします。スレッドが終了してからハンドルを閉じるべきだと思います。が、今回の場合スレッドの終了を待っているわけでないのでどう閉じるべきか…

自分の場合はハンドルを閉じる必要がない_beginthreadを使ってたりします。楽ちんですよ 笑

Aクリックが繰り返されるのは、
タイムアウトでクリックを合成する
→プロシージャにWM_LBUTTONDOWNが飛んでくる
→またスレッドを作っている
→・・・・
となってしまっているからだと思います。
if(bClick)return CallNextHookEx(g_hMouseHook,nCode,wParam,lParam);
この行をCreateThreadの前に置くと上手くいくと思います。

No.191 2010/08/10(Tue) 23:38:21

Re: マウスジェスチャについて。 / NoName
回答有難う御座います。
@A共に修正し、色々と試しているのですが、前へと進むことが出来ません。
もう少し助言を頂けないでしょうか。
特に、マウスを離した際の処理についてお願いします。

No.192 2010/08/11(Wed) 14:07:00

Re: マウスジェスチャについて。 / Goldfish(管理人)
多分たくさんの実現方法があると思うので一概には言えないのですが…

考えられる方法としてWM_*BUTTONUPの際の処理は、「タイムアウト前」の場合と「ボタン押下&&ウィンドウ表示中」の場合の2つに分けて処理するといいと思います。

前者の場合は、
@タイムアウトスレッドを停止
Aメッセージをmouse_eventで合成
Breturn TRUE

後者は、
@ウィンドウを非表示にする(終了処理)
Areturn TRUE

といった感じでしょうか。

No.193 2010/08/11(Wed) 14:57:04

Re: マウスジェスチャについて。 / Goldfish(管理人)
> 考えられる方法としてWM_*BUTTONUPの際の処理は、「タイムアウト前」の場合と

というより「ボタン押下&&ウィンドウ非表示」の方がわかりやすいですね(^^;)

ちょっと試してみましたが、

上述のような場合分けを使うならば、WM_*BUTTONUP時にボタン押下フラグを折ってさえおけばタイムアウト時にはこの処理は素通りしてくれるので、タイムアウト時にはUPを合成する必要はないです。

No.194 2010/08/11(Wed) 15:16:02

Re: マウスジェスチャについて。 / NoName
>WM_*BUTTONUPの際の処理は、「タイムアウト前」の場合と「ボタン押下&&ウィンドウ表示中」の場合の2つに分けて処理する
について、以下のようなコードで良いのでしょうか。
if(bVisible){
PostMessage(hwndTarget,WM_HOOKMSG_HIDE,0,0);
bVisible=FALSE;
}else{
SetEvent(hEvent);
bClick=TRUE;
mouse_event(MOUSEEVENTF_RIGHTUP,0,0,0,0);
bClick=FALSE;
}
また、
>WM_*BUTTONUP時にボタン押下フラグを折ってさえおけばタイムアウト時にはこの処理は素通りしてくれるので、タイムアウト時にはUPを合成する必要はないです。
の部分をもう少し詳しく説明していただけないでしょうか。
ちなみに、
>ボタン押下フラグ
と言うのは、bButtonDownの事であると勝手に解釈していますのでご注意ください。

読解力が乏しくて申し訳ないです。

No.195 2010/08/11(Wed) 15:58:03

Re: マウスジェスチャについて。 / Goldfish(管理人)
> 以下のようなコードで良いのでしょうか。
WM_RBUTTONDOWNでTRUEを返してメッセージを止めていると思うので、スレッドを停止したのちRIGHTUPを合成する前にどこかでRIGHTDOWNを合成する必要があると思います。
あとbButtonDownも考慮してほしいです。


> もう少し詳しく説明していただけないでしょうか。
ボタン押下フラグはサンプルでいうところのbButtonDownのつもりでした。
言わんとしたことは上のコードだとスレッド内の処理で
@タイムアウトする
ARIGHTDOWNとRIGHTUPを合成する
Bスレッド終了
という流れになりますが、現実のマウスボタンはまだ押されたままになっていて、それを離したときもプロシージャにWM_RBUTTONUPが飛んできますのでWM_RBUTTONUPが二重になってしまう…
ということでした。
仮に先ほどの場合分けをすれば(bButtonDownがFALSEであればどちらにも該当せずメッセージはそのまま素通りすることになるので)、スレッドのAの段階でbButtonDownをFALSEにしておけばタイムアウト時の処理ではRIGHTUPを合成する必要はないです。

という感じです。自分でも書いていて混乱してきました 笑

>WM_*BUTTONUP時にボタン押下フラグを折ってさえおけばタイムアウト時にはこの処理は素通りしてくれるので、タイムアウト時にはUPを合成する必要はないです。
この文章は明らかにおかしかったです。すみません。

もう自分の日本語能力が限界なのでコードで書きます。
(この掲示板、タブが使えなくて見づらいのですが、、、

No.197 2010/08/11(Wed) 16:51:50

Re: マウスジェスチャについて。 / Goldfish(管理人)
やはりファイルをアップしました。
サンプルのHook.cppを置き換えていただくだけで大丈夫だと思います。
http://molmott.hp.infoseek.co.jp/src/Hook.cpp

bClickのスキップ処理を少しいじりましたが、この方が安全かな?という程度です。

今気付きましたがドロップ操作が駄目ですね…
WM_*BUTTONDOWNのときにカーソルの座標をグローバル変数に保持しておき、mouse_event時に元に戻せば上手くいきます。

No.198 2010/08/11(Wed) 17:37:17

Re: マウスジェスチャについて。 / Goldfish(管理人)
今スキップ処理の部分を微妙に修正しました(^^;)

ほんと、ぐだぐだですみません。。

No.199 2010/08/11(Wed) 18:24:04

Re: マウスジェスチャについて。 / NoName
回答有難う御座います。
>WM_*BUTTONDOWNのときにカーソルの座標をグローバル変数に保持しておき、mouse_event時に元に戻せば上手くいきます。
とのことですので、
WM_LBUTTONDOWNでGetCursorPos(&pt);
WM_LBUTTONUPで
mouse_event(MOUSEEVENTF_RIGHTDOWN,0,0,0,0);
SetCursorPos(pt.x,pt.y);
mouse_event(MOUSEEVENTF_RIGHTUP,0,0,0,0);
としてみたのですが、選択は出来るものの、ドラッグアンドロップが出来ないようです。

本当に何度も何度も申し訳ないです。
これ以外はアップロードしてくれましたコードのお陰で正常に動作している為、おそらくこれが最後の質問になるかと思われます。
お願いします。

No.200 2010/08/11(Wed) 21:24:11

Re: マウスジェスチャについて。 / Goldfish(管理人)
> としてみたのですが、選択は出来るものの、ドラッグアンドロップが出来ないようです。
WM_MOUSEMOVE等WM_*BUTTONUP以外のメッセージが飛んできた場合も復元作業(?)をするように変更しました。(ただしこれをやると判定がシビアになってしまうのですが…
http://molmott.hp.infoseek.co.jp/src/Hook.cpp

微妙にプロシージャの処理が変わっていますが、以前のものを修正した後、まとめただけです。
また、mouse_eventは古いと書かれていたのでSendInputに置き換えました。(無駄な構造体が増えただけだと思っていたのですが、実は引数の精度が上がってました。)

グローバル変数ptButtonDownを用意し、WM_*BUTTONDOWNの処理時にそこに座標を格納しています。

こんな感じでWindowfrogもD&Dにも対処してます(^^)v

No.201 2010/08/11(Wed) 23:03:50

Re: マウスジェスチャについて。 / NoName
回答有難う御座います。
環境が悪いのかコードの写し間違いか定かではないのですが、
選択が出来ないようです。
(何度か修正を試みるも残念ながら...)

今度こそ最後の質問となるはずです。
宜しくお願いします。

No.202 2010/08/12(Thu) 00:30:33

Re: マウスジェスチャについて。 / Goldfish(管理人)
選択とはデスクトップ等でアイコンを複数選択するもののことですよね?

再度確認しましたが、以前のサンプルのHook.cppを今回のHook.cppの内容に置き換えただけですが、特に自分の環境では問題はないようです…

どの段階で失敗しているようですか?
ご確認よろしくお願いします。

No.204 2010/08/12(Thu) 08:45:54

Re: マウスジェスチャについて。 / NoName
申し訳ありません。
押下後、少し待ってからであれば可能でした。

No.205 2010/08/12(Thu) 20:51:52

Re: マウスジェスチャについて。 / NoName
>押下後、少し待ってから
についてはWM_MOUSEMOVEで処理を追加すれば何とかなりそうです。

No.206 2010/08/12(Thu) 22:39:58
(No Subject) / hoge
毎日Windowfrog使用させてもらっています。ものすごく便利です。
今回久しぶりに更新させてもらいましたが、以前はあったタイトルを指定して無視をする機能がなくなっていませんか?
自分は結構使っていたので、復活してもらえるとうれしいのですが…。

No.172 2010/06/30(Wed) 01:49:34

Re: / Goldfish(管理人)
Windowfrogをご利用いただきありがとうございます!


ご指摘の通り1.20を作った時(多分)にタイトル指定で除外する機能を省きました。

もともとはウィンドウを選別する処理が稚拙で、スタートメニュー等までも列挙してしまっていたための苦肉の策でしたが、現行のバージョンではほぼAlt+Tabを再現できるようになったためです。

作者の自分としては実はさっさとなくしてしまいたい機能でした (笑



ですが、ご利用いただいていた方がいらっしゃったということで設定画面を省略した形で復活させました。

かわりにさくっと簡易のツールを用意しましたのでこちらを本体と同じフォルダに置いて実行してみてください。

http://molmott.hp.infoseek.co.jp/windowfrog/ExcludeWnd.lzh
ちなみにこちらはC#で作ったので.netの実行環境が必要です。


よろしくお願いします。

No.173 2010/06/30(Wed) 21:51:33

Re: / hoge
無茶なお願いを聞いていただきありがとうございました。
しかし対応が早すぎてです。本当に感謝しています。
バッチリ以前以上に便利な状態になりました!これからもよろしくお願いします!

No.174 2010/06/30(Wed) 22:34:52
Excel 選べない / 中村
ずーぅっと使っています。重宝しています。
今更ながら WinXP を SP3 にあげたら動かなくなったので、金魚鉢殿に久々訪問したところ、新バージョンがあったようです。早速上書きしたら問題なく動きました。ありがとうございます。

期待をこめて新バージョンを使ってみたところ、以前から不満だった Excel の小窓が選べない件、まだダメですね。他の方の不満がないようなのでこちらの環境だけの問題なのでしょうか?
Windows XP Professional
5.1.2600 Service Pack 3 ビルド 2600

Microsoft Excel 2003 SP3
バージョン 11.0
ビルド 8324

No.169 2010/06/29(Tue) 16:00:46

Re: Excel 選べない / Goldfish(管理人)
拙作をご利用いただきありがとうございます!

お問い合わせについてですが、申し訳ありませんがもう少し具体的にお教え頂けると幸いですm(__)m


@どのソフトについてのお問い合わせでしょうか?

A「Excelの小窓」とはどこのことでしょうか?(関数の入力欄(ツールバー下部)、セル(表のマス目)等々・・・

B「選べない」というのは具体的にはどのような状態でしょうか?(クリックしても反応しない(Windowfrog)、直接貼り付けが上手くいかない(金魚鉢)等々・・・

Cまた当該ソフトの設定状況も合わせてお教え頂けるとスムーズにお答えできると思います。

なんだか質問攻めになってしまって申し訳ありません。。。(^^;
以上4点よろしくお願いします。

No.171 2010/06/29(Tue) 21:29:59
「ウィンドウのクローズ」について / Tomo
初めまして、いつもWindowfrogを利用させて頂いております。

一点要望なのですが、ウィンドウの切り替え機能に加え、
指定したウィンドウを閉じるという動作を追加できないでしょうか?

ご検討のほど宜しくお願い致します。

No.164 2010/05/21(Fri) 14:43:34

Re: 「ウィンドウのクローズ」について / Goldfish(管理人)
Windowfrogをお使いいただきありがとうございます。

ご要望についてですが、ウィンドウを閉じることは実現できると思いますが、
具体的にどのように追加すればいいかアイディアが浮かびません…

クリックモードならばウィンドウ名の横に閉じるボタンをつければいいのですが、通常モードの時にどうすればいいか…

なにかよいアイディアございましたらお願いします。

No.165 2010/05/22(Sat) 15:24:09

Re: 「ウィンドウのクローズ」について / Tomo
返信有難うございます。
早速対応していただけたみたいで、とても嬉しいです。

要望内容に1点間違いがあることに気が付きました。追加してほしい機能は「指定したウィンドウを閉じる」ではなくて、「現在アクティブなウィンドウを閉じる」です。”Ctrl+Wを代替してもらいたい”と言うのが本当の要望でした。誤解を招くような記述をしてしまい、申し訳ございません。


また、上記の場合で提案いたしますが、通常モードの場合ですとwindowfrogのオプションで「デスクトップの表示/非表示」と「キャンセル」が設定できるようになっていると思いますが、そこに「現在アクティブのウィンドウを閉じる」というのを追加するというアイデアはダメでしょうか。

ご検討のほど、宜しくお願い致します。

No.166 2010/05/22(Sat) 23:28:26

Re: 「ウィンドウのクローズ」について / Goldfish(管理人)
ご提案ありがとうございます。

「現在アクティブなウィンドウを閉じる」 機能を追加したWindowfrog1.207を公開しました!

仕様としては前回アクティブだったウィンドウに対して閉じるボタンを押したよ的なメッセージを送っています。
閉じるボタンがない等のそのソフトの仕様によっては上手くいかない場合もあるかもしれませんがご了承ください。

よろしくおねがいします。

No.167 2010/05/24(Mon) 22:05:23

Re: 「ウィンドウのクローズ」について / Tomo
To 管理人様へ

すぐに新しいWindowfrogを試して見ました!
凄いです、思ったとおりの動きです!

わがままな要望に応えていただき、本当に有難うございました。
今後もWindowfrogを使わせていただきます。
本当に有難うございました!

No.168 2010/05/24(Mon) 22:24:07
Windowfrog と Excel / caferatnica

今日 Windowfrog を見つけ使用してすぐに気に入り、
スタートアップに登録させていただきました。

ただ Excel を編集しているときに気がついたのですが、
セルの端を右クリックしてドラッグすることができなくなるようです。

私もソフトウェアを開発する身、応援しています =)

No.162 2010/05/12(Wed) 21:59:01

Re: Windowfrog と Excel / GoldFish
Windowfrogをご利用いただきありがとうございます。


手持ちの環境(Excel2007&7)では再現できませんでした。。。
(もっとも普段Excelをあまり使わないため何か見落としがあるかもしれませんが…)

ただ、Windowfrogは擬似的にマウス操作を発生させていますので
一部のソフトウェア上では上手く動作しない可能性もあると思われます。

その場合、マウスフックを一時的に無効にする機能がありますので
申し訳ありませんがそちらをご利用ください。


> 私もソフトウェアを開発する身、応援しています =)
ありがとうございます。大変励みになります!
これからもよろしくお願いします。

No.163 2010/05/12(Wed) 23:38:54
サムネイル表示 / bruo
こんにちはいつも利用させてもらっています。

環境の方はVistaなので問題ないと思ったのですが、サムネイル表示ができるということを知り,design.iniの"thumbnail"を1にしたのですが、サムネイルが表示されません。

どうすればいいでしょうか?

No.159 2010/05/01(Sat) 17:26:35

Re: サムネイル表示 / bruo
すいません。試してから書けばよかったのですが、design.iniの他の設定も試したら変化がなかったのですが、変更するiniはdesign_sample.iniで良いのですか?
No.160 2010/05/01(Sat) 17:34:12

Re: サムネイル表示 / Goldfish(管理人)
拙作をご利用頂きありがとうございます。


配色の変更はdesign.iniという名前のファイルが本体と同じフォルダにあった場合にそれを読み込みます。
付属のサンプルを流用する場合はサンプルファイルの名前をdesign.iniに変更してみてください。


携帯からの投稿のため改行など読みにくくなっていたらすみません(>_<)

よろしくお願いします。

No.161 2010/05/01(Sat) 17:45:27
Windowfrog / Kazu
はじめまして、Windowfrogを今日知り、早速使わせて頂いています。

1点要望なのですが、Windows7での標準の画面切り替え(Alt+Tab)では、切り替えるウィンドウを選択中にそのウィンドウが一番手前に来て、他の選択していないウィンドウは枠だけ残り非表示となります。

Windowfrogでもこの仕様にはできないでしょうか?

または、今のWindowfrogでの切り替える一覧リストに表示されるウィンドウのアイコンを、Windows7と同様に現状のウィンドウの状態のサムネイルにすることはできないでしょうか?

Windowfrogでウィンドウを切り替える際、エクスプローラがいくつも起動していると、パスを読み取って選択する必要があります。Windows7の切り替えでは対象のウィンドウだけ表示されたりサムネイルである程度識別できるので楽です。

大変かと思いますがぜひご検討願いますm(_ _)m

No.149 2010/04/24(Sat) 15:21:56

Re: Windowfrog / Goldfish(管理人)
Windowfrogをご利用いただきありがとうございます。

不可能ではないだろう&おもしろそうというノリと勢いで作ってしまいました。
枠を自前で描画したりと結構がんばったのですが、ウィンドウを選択したときにどうしてもちらつく&もたついてしまいます…
また、フォーカスが移ってしまうのでクリックモードとの並立は無理でした。。

やはりWindowsの機能を完璧に再現しようというのは難しいですね…
ぶっちゃけWindowfrogではなくマウスジェスチャーソフトを使ってAlt+Tabを呼び出したほうがいいかもしれません 笑

・選択中のウィンドウ以外を枠表示にする機能はオプション→全般→にチェックボックスがあります。方法として最小化と非表示を用意しました(前者はアニメーションがうざい、後者はサムネイルが消える&タスクトレイがひどい&危ない気がする(?)と一長一短な感じです)

・サムネイルはdesign.iniの[Item]セクション"thumbnail"を1に指定してください。ちなみにDWMを使っているのでAero搭載のVista以降でしか動作しません。またサムネイルのサイズは同セクション"icon-size"で変更できます。

このような感じでいかがでしょうか?
ご感想お聞かせいただけると幸いです。よろしくおねがいします。

No.150 2010/04/26(Mon) 00:47:22

Re: Windowfrog / Kazu
早速の対応ありがとうございます!
すばらしいです!
個人的には最小化モードのアニメーションがお気に入りです^^

サムネイルもとても良い感じです。
ただ、アイコンに隠れてしまうのがちょっと残念です。
icon-size=64
ぐらいにするとサムネイルの6割ぐらい見えるようになりましたが^^;

もたつきですが、やっぱりサムネイルを有効にすると、ほんのわずかもたつきますね。
でも視認による選別時間が短縮されることを考えると、私としては全然許容範囲内です。

Windows標準のAlt+Tabとの違いとして、
・マウス操作でできる
・デザインのカスタマイズができる
・ランチャー機能がある
といったところに魅力を感じます。
特にランチャー機能がいいですね!
画面切り替えとランチャーの統合、ありそうでなかったかも!?

もし余力があれば、
・画面切り替えのアイコン(サムネイル)とは別に、ランチャーのアイコンサイズを指定できるように
・ランチャーに登録したプログラムのアイコンを任意に変更できるように
なると嬉しいです。

特に1つめはスペースを節約するためにもぜひ・・・><
(画面切り替えのサムネイルは64ドット、ランチャのアイコンは32ドット、というようにしたいです)

No.154 2010/04/27(Tue) 00:15:37

Re: Windowfrog / Goldfish(管理人)
ご感想ありがとうございます。

>特に1つめはスペースを節約するためにもぜひ・・・><

これはスペース節約のためにも見栄えのためにも確かに必要ですね。
項目の幅や座標は固定しか想定していなかったため修正に手間取りましたが、たぶん全部修正しきったと思います ^^b


以下の修正を加えWindowfrogを更新しました。

・サムネイルサイズをアイコンサイズから独立
・オーバレイアイコンのON/OFF
・ランチャのアイコン変更
・デスクトップ(壁紙?)のサムネイル表示
・アイコンの読み込み方法修正(256×256アイコンも表示可能に)


ちなみに実行ファイルのサイズが突然大きくなりましたが、これは「キャンセル」「デスクトップ表示・非表示」のアイコンに256×256の32ビットファイルを追加したためです。。^^;

No.155 2010/04/28(Wed) 20:51:52

Re: Windowfrog / Kazu
素早い対応ありがとうございます!
早速設定し使わせて頂いております。

なんどもすいませんが、追加で2点気になる点を挙げます。

(1)デスクトップ表示/非表示について。
デスクトップ表示/非表示を選択後、すべてのウィンドウが最小化されてデスクトップが表示されるのはわかりますが、その状態でもう一度デスクトップ表示/非表示を選択した場合、最小化されたウィンドウが復元するのかなと思っていましたが、何も変化はありませんでした。(それが”非表示”を示すのかなと・・・)これは正常な動きでしょうか?

(2)標準のWindowsの切り替えと比較し、画面切り替えのウィンドウの並びが違うのが気になります。

アクティブ化したウィンドウ順が
Firefox:A
Explorer:A
Firefox:B
Explorer:B
だったとすると(Firefox:Aが現在アクティブ)、Windows標準ではAlt+Tabを1回実行すればFirefox:AからExplorer:Aに切り替わります。
しかしWindowfrogの場合だとリストに表示される順は
Firefox:A
Firefox:B
Explorer:A
Explorer:B
となります。同じプログラムはグルーピングされてるようなのですが、この仕様は何か意図があるんでしょうか?
個人的には、Windows標準と同じようにアクティブ順に並べたほうが、直前のアクティブウィンドウに切り替えやすいと思います。Windows標準なら何も考えずAlt+Tab1回の実行で必ず直前のウィンドウに切り替わりますし、Windowfrogでもリストの2番目に直前のアクティブウィンドウ(例でいうならExplorer:A)が2番目にきてほしいです。
アクティブウィンドウの順がツール側で変えられると、画面切り替え時に探さなくてはいけないので・・。

色々と言ってすみませんが、ご検討お願いします。

No.156 2010/04/29(Thu) 18:01:29

Re: Windowfrog / Goldfish(管理人)
ご意見ありがとうございます。

> (1)デスクトップ表示/非表示について。
単にウィンドウズの機能を呼び出していただけだったので最小化とかをこちらがしてしまうと意図したとおりに動かなくなってしまいますね…
ということで自分で実装して対処しました。

> (2)標準のWindowsの切り替えと比較し、画面切り替えのウィンドウの並びが違うのが気になります。
自分でも忘れ去っていたためどこにも書いてありませんが、実はプロセスごとにウィンドウをまとめる操作を行っていました。
そのほうが個人的には見易かったので…
今回、この操作を行わないようにできるようにしました。
設定ファイルのPreferenceセクションにArrangeWindow=0という記述を追加してください。
これでzオーダー順に並ぶはずです。

よろしくお願いします。

No.157 2010/04/30(Fri) 00:17:40

Re: Windowfrog / Kazu
いつものことながら素早い対応ありがとうございます!
私にとってとても使いやすいソフトとなりました(^^
これ以上リクエストするのはご遠慮させて頂き、
陰ながら見守らせて頂きたいと思います。
ありがとうございました。

No.158 2010/04/30(Fri) 23:54:09
以下のフォームに記事No.と投稿時のパスワードを入力すれば
投稿後に記事の編集や削除が行えます。
92/200件 [ ページ : << 1 2 3 4 5 6 7 8 9 10 11 12 13 14 >> ]

- HOME - お知らせ(3/8) - 記事検索 - 携帯用URL - フィード - ヘルプ - メール - 環境設定 -

- Skin: Modern v2.0 - Author: ロケットBBS -

Rocket Board Type-X (Free) Rocket BBS