1

ユーザーがGarmin Mobile XTを呼び出してルートを取得できるようにするアプリをVB.NETで作成しています。

Garmin の背後で開いたままにし、Garmin を終了してもユーザーが戻ることができるフォームを持っています。

ただし、このフォームは WM OS によって自動的に非表示になる場合があります。

フォームをそのままにしておく方法、またはアプリケーションの起動にチェックを入れて、アプリが既に実行されていてフォームが非表示になっているかどうかを確認し、フォームをトップに戻す方法はありますか?

フォームを TopMost に設定しようとしましたが、フォームが GPS アプリの一番上にあるため、GPS アプリが表示されないことを意味します。

フォームのクロージング ハンドラーをキャッチしようとしましたが、これは起動しません。WM OS は単にフォームを隠しており、実際にはフォームを閉じていないためだと思います。

フォーカスが失われるのを防ぐためにフォームの Deactivate ハンドラーでキャッチを試みましたが、これは TopMost プロパティと同じで、GPS アプリが表示されません。

今は本当に手がかりがないので、ここからどこへ行くことができるかについてのアイデアは誰にもありません!

ありがとう、アダム

4

1 に答える 1

1

これは、OS API を介して、「通常の」VB /VBA と同様に行う必要があると思います。winAPI ヘルプ ファイルを入手してください :-)。

ここで、アプリがすべてのウィンドウを反復処理し、GPS アプリを見つけて、次を使用することをお勧めします。

HWND FindWindow(

LPCTSTR lpClassName,  // pointer to class name
LPCTSTR lpWindowName  // pointer to window name    );

次に、Zオーダーを変更できます(他の特定のウィンドウの上または下に配置します):

BOOL SetWindowPos(

HWND hWnd,    // handle of window
HWND hWndInsertAfter, // placement-order handle
int X,    // horizontal position
int Y,    // vertical position
int cx,   // width
int cy,   // height
UINT uFlags   // window-positioning flags    );

、または次を使用して復元するように依頼します(これにより、自動的に最高のZオーダーに移動するはずです):

BOOL SetWindowPlacement(

HWND hWnd,    // handle of window
CONST WINDOWPLACEMENT *lpwndpl    // address of structure with position

データ );

于 2009-02-19T22:33:57.733 に答える