2009-11-04 40 views
0

如何儘快將應用程序啓動後儘快將其在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); 
} 

二碼不工作從程序的其他部分,而不是從加載事件。

+0

第二種方法不Load事件工作,因爲形式沒有完全初始化,因此還無法將其最小化。 您是否嘗試過在OnActivated或OnShow中調用HideApplication? –

+0

它的工作原理,我認爲我應該使用一個變量來隱藏它只有一次! – zHs

+0

不,它沒有工作OnActivated事件,所以唯一的解決方案是計時器! – zHs

回答

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); 
} 
相關問題