みんなに優しく、解りやすくをモットーに開設しています。 以下のルールを守りみんなで助け合いましょう。
1.ファイルメーカーで解らない事があればここで質問して下さい。 何方でも、ご質問・ご回答お願いします。 (優しく回答しましょう)
You are not logged in.
Pages: 1
win10 ver 18です。
スクリプト一時停止中にそのウインドウを最小化をしたいのですが、
ウインドウ右上の最小化ボタンでもスクリプトでも最小化することができません。
できれば最小化に近い形でウインドウを小さくしたいのですが。
思いつく方法としては、
一時停止中のウインドウのサイズを小さくして画面の下部に移動させておくようなスクリプトで行うのが簡単かと思うのですが、
他にコマンド送信的な方法でウインドウを処理する方法などありませんでしょうか。
何か良い方法があればアドバイスいただけるとうれしいです。
Offline
スクリプトの途中では最小化されないようですね。
最小化
でスクリプトが終わると最小化されるようです。
スクリプト停止中に何をされているのか分かりませんが、
スクリプトを二つに分けられませんか?
Offline
そのスクリプトが動いているウインドウですよね。最小化されてしまうと、スクリプトが動くベースがなくなってしまいます。
一時停止で何をしたいのですか。
Offline
チポさん、Shinさん、ありがとうございます。
できればファイルメーカー上のボタン(スクリプト)でファイルメーカーのみ最小化したかったのですが、
難しそうなので今回はWindowsのショートカットキー(win+D)等で対応することにします。
ちなみにやりたかったことは以下のような感じです。
一時停止をしているウインドウは、リスト表示されたレコードから関連レコードへ移動にて表示させた新しいウインドウです。
その新しいウインドウはレコードを編集するウインドウです。
そのウインドウを開いた時点で"スクリプト一時停止/続行"をLOOPさせるスクリプトが動きます。
このLOOPは元々開いていたリスト表示のウインドウなど、他のウインドウをマウスで選択させないための制御的な意味のものです。
編集が終われば編集画面に設置したボタン押下(ボタン設定オプションにて「現在のスクリプト終了」)によって、
その一時停止のLOOPのスクリプトが終了し、ボタンに設定した編集終了スクリプトが走る、という流れになります。
最小化したい理由は、レコードの編集ウインドウを開いている時に、
デスクトップ上のファイルメーカーの後ろに隠れたアイコンをクリックして、
別のシステムやアプリなどの情報を表示させて参照したい際にファイルメーカーの画面が邪魔になり
アイコンがクリックできないからです。
基本的にPCは1画面、ほぼ画面全体を占有する感じでファイルメーカーを使っています。
これから新しいカスタムAppを作ろうといろいろテストしている段階です。
先に使いたい書類を起動させておく、アプリをタスクバーに置いておくなど方法はいろいろとあると思います。
それらも踏まえてもう少し動線や遷移の検討もしてみます。
ありがとうございました。
Offline
元のウィンドウを触らせたくないなら、カードウィンドウで開けばいいのでは。
ウィンドウを非表示にするのはPowershellでできそうだったが、結構長いスクリプトが必要なようでした。
編集用のウインドウをカードにしておけば、loop はいらなくなると思いますが。
Offline
himadaneeさん、Shinさん、そうですね、カードにすればいいですね。
昔の古いバージョンの頭でしかなくてドキュメントウインドウしかあまり使うことがなくて。
変に難しくして遠回りしてました。
それも踏まえてやってみます。
ありがとうございました!
Offline
ウィンドウを非表示にするPowershellスクリプトがやっとできたので、一応書いておきます。Eventを送信の計算式です。
"powershell -command \"& {$extlib='[DllImport(\\\"user32.dll\\\", CharSet=CharSet.Unicode)] public static extern IntPtr FindWindow(IntPtr sClassName, String sAppName);';$win32=Add-Type -Namespace Win32 -Name Funcs -MemberDefinition $extlib -PassThru;$wname='"
& Get(ウインドウ名) &
"';$handle=$win32::FindWindow([IntPtr]::Zero, $wname );$code='[DllImport(\\\"user32.dll\\\")] public static extern bool ShowWindowAsync(IntPtr hWnd, int nCmdShow);';$type=Add-Type -MemberDefinition $code -Name myAPI -PassThru;$type::ShowWindowAsync($handle,0)}\""
最後の方の「0」を「1」で実行すれば元の状態に復帰します。「2」だと最小化です。
しかし、これで変更してもスクリプト一時停止すると(ほかのウィンドウをアクティブにした時点で?)ウィンドウが表示されるので、あんまり意味ないですね。(表示されないと一時停止を解除できないし)
himadaneeさん、ありがとうございます。
記述のEvent送信で試してみましたが、powershellのウィンドウが一瞬開いて閉じるだけでファイルメーカーのウインドウは何も変化せずにそのままでした。
特にpowershellでエラーは発生していないようです。
私の環境が悪いのかもしれません。
お時間を割いて作っていただいたのに申し訳ないです。
あれからいろいろ考えまして、最小化はできるだけ使わなくても済むように再考しています。
また行き詰りましたらよろしくお願いします!
Offline
ああ、PSのウィンドウが出るのは、Event送信の「対象アプリケーションを手前に表示」チェックを外してないからですが
最小化より非表示の方をテストしてました。
PSの実行に多少時間がかかるためか、スクリプトが一時停止してから(前のステップの)PSが実行されて非表示になってるようです。
他のFMのウィンドウをアクティブにするまでは、非表示が維持されてるようです。(スクリプトワークスペースは影響しない)
最小化は、すぐに戻ってしまって、ほとんどできてませんね。2以外にも MinimizeActivateNext = 6 とかあるんですが、どれも同じようでした。
どっちにしても、そのあと他のFMウィンドウで入力したい場合には、全く使えませんorz
何度もお手数おかけしました。
PSは全くわからないのでコピペしてるだけですが、やっぱり難しいですね。
お付き合いいただいてありがとうございました。
Offline
その編集用のウインドウ以外を最小化したいのでしたら、関連レコードへ移動するステップの前にウインドウ名の一覧を取得するか、スクリプト引数として渡しておきます。スクリプトの中で、それらを1個ずつ最小化するステップを実行すればいかがでしょう。
Offline
Shinさん、ありがとうございます。
当初行き詰った際は、getで一覧を取得してLOOPで最小化するようなスクリプトまでは出来ていまして、
その際に、一時停止中のウインドウが最小化できずに質問させていただいた次第です。
なかなか厳しいようですので最小化にこだわらず、ウインドウの調整でサイズと位置を設定して
ウインドウを小さくする方向で作り直そうと思っています。
説明が下手で申し訳なかったです。
Offline
Pages: 1
[ Generated in 0.018 seconds, 10 queries executed - Memory usage: 547.57 KiB (Peak: 568.11 KiB) ]