1

我正在用 VB.NET 编写一个应用程序,允许用户调用 Garmin Mobile XT 来获取路线。

我有一个在 Garmin 后面保持打开状态的表单,在退出 Garmin 时,允许用户返回。

但是,有时 WM OS 会自动隐藏此表单。

有什么想法可以让表单保持不变 - 或者我可以检查启动我的应用程序以检查应用程序是否已经在运行并且表单是否隐藏,并使表单回到顶部?

我尝试将表单设置为 TopMost 但这意味着 GPS 应用程序无法被视为我的表单位于 GPS 应用程序的最顶层。

我已经尝试捕获表单的关闭处理程序,但这不会触发 - 我猜是因为 WM OS 只是隐藏表单而不是实际关闭它。

我尝试在表单 Deactivate 处理程序上捕获以防止焦点丢失,但这与 TopMost 属性的作用相同,我看不到 GPS 应用程序。

任何人对我可以从这里去哪里有任何想法,因为我现在真的不知道!

谢谢,亚当

4

1 回答 1

1

我相信这必须通过 OS API 在“常规”VB /VBA 中完成。为自己获取一个 winAPI 帮助文件 :-)。

现在我建议您的应用程序迭代所有窗口,找到您的 GPS 应用程序,使用:

HWND 查找窗口(

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

然后您可以更改其 Z 顺序(将其放在其他特定窗口的上方或下方):

BOOL 设置窗口位置(

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 回答