如何尽快减少应用程序?

时间:2009-11-04 16:13:44

标签: c# windows-mobile

如果应用程序一开始在Windows Mobile 6中在后台运行它,我该如何最小化它?我希望最小化应用程序自动启动(即自动启动),稍后,如果用户想要查看应用程序,它可以从程序菜单等运行。

我尝试了一些代码,但它不起作用!

传统的最小化方案,虽然它不能解决我的问题,因为使用此代码将永远不会再向用户显示应用程序(即使此代码不起作用)

private void GUI_Load(object sender, EventArgs e)
{                    
     this.Hide();
     this.Visible = false;
}

,第二个选项是调用本机API(来源:http://www.blondmobile.com/2008/04/windows-mobilec-how-to-minimize-your_5311.html

private void GUI_Load(object sender, EventArgs e)
{                    
     this.HideApplication();
}

[DllImport("coredll.dll")]
static extern int ShowWindow(IntPtr hWnd, int nCmdShow);

const int SW_MINIMIZED = 6;

public void HideApplication()
{
      ShowWindow(this.Handle, SW_MINIMIZED);
}

第二个代码可以在程序的任何其他部分中运行,但不能从Load Event中运行。

1 个答案:

答案 0 :(得分:2)

我认为唯一的解决方案是使用System.Windows.Forms.Timer并且它正常工作

private void GUI_Load(object sender, EventArgs e)
{                        
// Initialize timer to hide application when automatically launched
_hideTimer = new System.Windows.Forms.Timer();
_hideTimer.Interval = 0; // 0 Seconds
_hideTimer.Tick += new EventHandler(_hideTimer_Tick);
_hideTimer.Enabled = true;
}

// Declare timer object
System.Windows.Forms.Timer _hideTimer;
void _hideTimer_Tick(object sender, EventArgs e)
{
    // Disable timer to not use it again
    _hideTimer.Enabled = false;
    // Hide application
    this.HideApplication();
    // Dispose timer as we need it only once when application auto-starts
    _hideTimer.Dispose();
}

[DllImport("coredll.dll")]
static extern int ShowWindow(IntPtr hWnd, int nCmdShow);

const int SW_MINIMIZED = 6;

public void HideApplication()
{
      ShowWindow(this.Handle, SW_MINIMIZED);
}