「なでしこv1」開発掲示板

なでしこv1のバグや要望を書き込む掲示板
[一覧へ] > (@612) [中] [未処理]
@612■ (#1943) ダイアログ関連、カーソル関連の命令を追加希望 - じん (2011-10-24 22:39) /中 未処理
質問掲示板の方で伺ったところ、「そのようなことはできない」とのことでしたので、以下の命令を追加してほしいです。
 
<ダイアログ関連>
・ダイアログ表示時間
 1/1000秒単位で細かく設定できるようにしてほしい。
・ダイアログ透明度
 フォームのように256段階で透明度を設定できるようにしてほしい。
・ダイアログ位置
 ダイアログが表示される座標を設定できるようにしてほしい。
 特に、私の場合、3ディスプレイ体制のせいか、ときに、ダイアログが出るディスプレイが変わり、ダイアログの出現に気がつかないこともあり、探すのに苦労させられる。(+_+)
・ダイアログ行間
 ダイアログの文面が複数行になった時、行間が詰めすぎていて読みにくいので、行間を自由に設定(%単位で)できるようにしてほしい。
 フォームで作れば、行間も自由自在ですが、いちいちフォームを整形するのはタイヘンすぎます。
 「ダイアログ行間」命令ひとつあれば、1行で済むのに。
 
<カーソル関連>
・マウス位置固定
 カーソルをマウスで制御できないようにしてほしい。
 これがないと、なでしこでカーソル制御中にマウスを触ってしまうと、誤動作を起こしてしまうため。
・マウス位置固定解除
 上の命令を解除して、ふつうにマウスでカーソルを制御できる状態に戻す。
 
#---------------#
xx,yyへマウス移動 # 所定の位置にカーソルを持ってきて
0.01秒待つ        # 動作安定性のために0.01秒の間を置き
マウスクリック    # マウスをクリックさせる
#---------------#
PC作業の自動化のため、上のような命令がたくさん入った(マウスカーソルを制御させる)なでしこプログラムを使っているのですが、その起動中は、一切PCが使えなくなってしまうのを何とかしたいのです。
(このなでしこプログラムをバックグラウンドで動作させたい)
このなでしこプログラム実行中に、マウスを触ると、2行目でカーソル位置がずれてしまい、誤作動を起こしてしまうので、PCが触れなくなってしまいます。
もし、上のような「マウス位置固定」があれば、
#---------------#
マウス位置固定    # カーソル制御をマウスから切り離し、なでしこからしか制御できないようにする
xx,yyへマウス移動 # 所定の位置にカーソルを持ってきて
0.01秒待つ        # 動作安定性のために0.01秒の間を置き
マウスクリック    # マウスをクリックさせる
マウス位置固定解除 # カーソル制御をマウスから動かせるようにする。
#---------------#
上記ソースを「マウス位置固定/解除」で挟んでやることによって、なでしこのバックグラウンド化が実現します。
 
以上、ご検討のほど、よろしくお願いいたします。m(_ _)m

(#1944) 追加で・・・ - じん (2011-11-14 04:53) /中 未処理
「なでしこバックグラウンド化計画」のための
・マウス位置固定
・マウス位置固定解除
は、LisさんにDLLを作っていただきました。(Lis様ありがとう!)
http://nade.jp-pro.net/bbs/bbs1/mbbs.php?m=log&logid=339
ところが、これを試してみたところ、新たに、マウスのクリックが「なでしこバックグラウンド化計画」に障害となっていることが判明しました。
そこで・・・
・マウスクリック禁止
・マウスクリック禁止解除
を新設してほしいです。

(#2300) アプリケーションないを超えて影響する命令について - うぇいく (2014-05-02 02:03) /中 未処理
 私個人の考えですが、他のアプリケーションに影響を大きく与える命令はあまり乗り気ではありません。
 良いことに使える以上に、悪いことに使えてしまうため というのが最大の理由です。
 次に、悪意が無くともプログラムに問題(意図しないバグも含む)があると、復旧が非常に困難になる可能性があることもあります(キーボードもマウスも使えない状態でアプリケーションが無応答になってしまったとか、対象アプリケーションが想定と違う動きをして無限に待ってしまっている とか)
 その辺は、言語を使う人が気にする部分ではあるのですが、機能が提供されていると、リスクを深く考えることなく使ってしまってしまうこともある というのもあります(リスクのある道具は、道具を売る側が気を付けよう という考え。)

 Windows本体も、アプリケーションが、アプリケーション自身の命令で全面に来ることをやめたりとか、いろいろやっている流れです。
(今は、同じ命令を使うとタスクバー上でアイコンが点滅します。)

この辺は、他の開発者の意見も聞いてみたいところではありますが、なにやら2.0開発がまた活発になってきたようなので、そっちを頑張ってもらうほうが良い気もします・・・

(#2301) う~~ん。(-_-;)ゞ - じん (2014-05-02 12:58) /中 未処理
でも、結局、API とか DLL を載せれば、なでしこでもできるようになりますよね?
つまり、なでしこ以外の他のプログラミングソフトならできることですよね?
「危険性がある」ことを理由として他のソフトもみんな制限かけてるのならそこにもありますが、どうして、なでしこだけ、そんな自主規制をかけなければならないのでしょう?
店頭にはいっぱい包丁が並んでいるのに、「包丁は使い方によっては危ないので、我が社だけは販売を自主規制します」と言っているのと同じのように感じます。

(#2302) Re: アプリケーションないを超えて影響する命令について - うぇいく (2014-05-05 02:22) /中 未処理
ことなる考え方がある(そして、そちらのほうがメジャーらしい)というのは何となく把握していますが、オープンソースのプロジェクトをお手伝いしている という立場からすると、気の乗らないまま実装する ということはないです。
また、製品としてのなでしこについては、私からは何も言える立場にありません。
他の開発者の人が作成するのをやめさせようとかはありあせんし、作者本人がなんらかの判断を下したらその方向に向かうと思います。

なお、グローバルフックを使用した方法の場合、以下のいずれかでうまくゆかないのかも知れません(未確認。DLLももう掲載されてないような?)
・権限が異なる。特に一般ユーザで動くプロセスから特権で動くプロセスへは情報を送れないという制限がある(おそらく、これができると、特権を乗っ取るのと同じことができてしまうため。)
・32bits/64bitsが異なる。DLLを差し込むことで動作する仕様上、32/64が異なるとダメなような気がする。

処理の自動化には興味が無いわけでもないのですが、実装するところまでは調べきれていませんし、もう1つの心配事として、いわゆるオンラインゲームやソーシャルゲームのマクロツールのベースになったらやだなぁ というのがあります(これもものすごく個人的な話です。)

もう1つ、気になっている点です。

 本当に、システム全体でのロック(マウスやキーボードからの操作の禁止)は必要でしょうか?
 例えば、自動制御したいアプリケーションにのみ、ユーザが操作する内容(マウスイベントとキーボードイベント)が伝わらなければ良いということはないのでしょうか?
特定のアプリケーションを指定してイベントを止めた場合、通常のマウスやキーボードからの操作を真似する命令の代わりに別の専用の命令を使わなくなる可能性もある(本物のマウスはユーザが任意に動かすため)のですが、全体をロックしないのであれば、処理の自動化に見合う範囲の機能と考えています。

 いまのところ、システム全体でロックすることの必要性がいまいち把握できていません。
 全体を一律ロックしてしまうのは、簡単で分かりやすいけど、目的に見合わない強すぎる機能 と考えています。
 ただ、ログインが管理者権限を持っていない場合に、自動処理で管理者権限作業を行う等、ユーザからの操作を完全に禁止する必要がある場合もあるにはあります(なでしこで可能かどうか不明ですが・・・)

(誤字修正と、もう1つ以降を追記)

(#2303) Re: 追加で・・・ - うぇいく (2014-05-05 02:48) /中 未処理
もう1つのツリーとは別で3つ確認です。

1.キーボードからの操作はそのままで大丈夫でしょうか?
 禁止した場合、本当にロックアウトされる可能性があるため、ちょっと危険ですが(キーボードが禁止されてなければ、Alt+F4等で逃げらられる可能性がある)

2.なでしこの実行中にエラーが発生した場合、継続か終了のダイアログが出ると思いますが、マウスの移動を禁止していた場合は、操作不能になったりはしないでしょうか?(Lisさん作成のDLLでどうだったかを教えてもらえると助かります。Pluginにした場合、アプリケーションの終了は捕まえられるので禁止を解くことはできるのですが、エラーを補足できるかが不明のため。)

3.結局のところ、自動実行中はパソコンは使えないことになってしまうと思いますが、それでも禁止するメリットはあるということで良いですか?(マウスや机にぶつかっても大丈夫とか?)

(#2304) Re: 追加で・・・ - うぇいく (2014-05-05 10:00) /中 未処理
Win32APIに、BlockInputという機能があり、マウスとキーボードからアプリケーションへの入力を一括してブロックできるようです(個別の設定は不可)
もし、これが希望に沿うようであれば、利用してみてください。APIを使うメリットとして、「何らかの原因(バグを含む)で操作不能に陥る」という可能性はかなり抑えられと思います。
なお、このAPIを利用するプロセスが管理者権限で実行されている必要があります。

宣言は以下です。
●BlockInput(fBlock)=DLL("user32.dll",
"BOOL BlockInput(
  BOOL fBlock
)")

基本的な使い方は、BlockInput(1)で操作禁止、BlockInput(0)で操作可能です。そして、0以外が返ってきたら成功、0が返ってきたら失敗です。詳しい仕様はmsdnを参照してみてください。

(#1943)へ返信する:

👆お手数ですが、いたずら防止のために、「真夏」の読み方を記入してください。

編集時に使うキーを入力(省略可能)

画像ファイル(最大300KB)を添付可能