2017-11-16 10 views
0

アプリが開かれたことを検出して、そのアプリオブジェクトのハンドルを取得するにはどうすればよいですか?特定のアプリが開いていて、そのウィンドウハンドルを取得しているかどうかを確認するにはどうすればよいですか?

以前には、figureで、図でfindobjを使用することが現実的でした。次に、存在するかどうかを確認し、Figureの内容を取得できます。しかし、私はアプリでそれを管理する方法を見つけませんでした。

通常、私はボタンをクリックすると新しいアプリケーションウィンドウを開くメインアプリケーションを持っています。その後、もう一度ボタンをクリックすると、2番目のアプリケーションウィンドウが既に開いているかどうかを確認したい場合は、そのアプリケーションオブジェクトを取得するか、2番目のウィンドウを削除するなどします。 findobjまたは類似の機能でキャプチャする方法はありますか?

get/setappdataでアプリオブジェクトを保存することでやり直すことができない場合は、いいと思います。他のウィンドウへのハンドルを取得するには

答えて

0

、私は空のグラフィックハンドル(gobjects(0))に初期化2 回目アプリのハンドルを格納しますあなたのメインアプリクラスの新しいプロパティを作成することをお勧めしたいです。次に、ボタンコールバックの実行中に、これが有効なハンドル(~isempty(h) &&isvalid(h))であるかどうかをチェックし、結果に基づいて新しいuifigureを作成するか、既存のハンドルを使用します。

hFigs = findall(groot, 'Type', 'figure'); 


あなたがそのようなuifigureのように、図のハンドルのリストを取得し、その上に行くと知られている属性に基づいて正しいものを見つけようと主張した場合Nameあなたはthis答えを使用することができます

hUIFigs = hFigs(arrayfun(@(x)isstruct(struct(x).ControllerInfo), hFigs)); 
:フィギュア/ uifigureウィンドウを区別することは/役立つ必要がある場合

、あなたはまた後でthis技術を使用することができますまた

、アプリでは、次のundocumented function呼び出すことが開いている場合伝えるために:あなたが探しているものに返されるオブジェクトの'Title'フィールドを比較

webWindows = matlab.internal.webwindowmanager.instance.findAllWebwindows(); 

を。

関連する問題