从CF 3.5中的VB.NET调用外部gps应用程序并返回到VB.NET应用程序

时间:2008-12-02 09:52:47

标签: vb.net compact-framework garmin

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

我有一张在Garmin后面打开的表格,在退出Garmin后,允许用户返回。

但是,有时候,这个表单会被WM OS自动隐藏。

任何想法如何让表格保持不变 - 或者我可以检查启动我的应用程序以检查应用程序是否已经运行并且隐藏表单,并使表单返回顶部?< / p>

我已经尝试将表单设置为TopMost,但这意味着无法看到GPS应用程序,因为我的表单是GPS应用程序的最顶层。

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

我在Deactivate处理程序上尝试了一个catch,以防止焦点丢失,但这与TopMost属性相同,我看不到GPS应用程序。

任何关于我可以从这里离开的任何想法,因为我现在真的没有线索!

谢谢, 亚当

1 个答案:

答案 0 :(得分: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
     

数据);