2012-01-05 53 views
0

我有一個應用程序,並且希望在媒體中心啓動它,當媒體中心處於全屏狀態時,我打開此圖塊,該批處理文件在後臺打開我的應用程序。 我如何得到這個在前面,它在媒體中心打開。如何在屏幕上運行批處理文件

+0

那大概什麼。 – 2012-01-05 14:49:17

+0

您也可以在命令行上創建一個接受可執行文件路徑的通用應用程序。使用dot net,Process類可以讓你啓動應用程序並獲取他們的進程ID。然後你可以使用Windows API將窗口放到前面。好處是您可以重複使用此代碼,並且無需更改您要啓動的應用程序代碼。 – Aphelion 2012-01-05 14:54:10

+0

那麼這是如何完成的? – Letoir 2012-01-05 14:57:02

回答

0

快速的方法在C#編碼是:

using System; 
using System.Runtime.InteropServices; 
using System.Diagnostics; 

namespace Example 
{ 
    class Program 
    { 
     [DllImport("USER32.DLL")] 
     public static extern bool SetForegroundWindow(IntPtr hWnd); 

     static void Main(string[] args) 
     { 
      Process process = Process.Start(args[0]); 
      if (process != null) SetForegroundWindow(process.Handle); 
     } 
    } 
} 

注意,這個例子ofcourse需要錯誤處理的參數驗證。如果需要,可以選擇開發支持工作文件夾。

使用批處理中的下一行調用應用程序

你需要從應用程序,而不是批處理文件編寫
Example.exe "c:\sample\path\app.exe" 
+0

在我的WPF應用程序我沒有靜態主要(字符串[]參數)? – Letoir 2012-01-06 08:56:58

+1

這個例子適用於應該在控制檯應用程序模板中開發的'helper'可執行文件。如果你想在你的WPF應用程序中實現這個功能,你應該使用代碼,但將它放在你的WPF應用程序的啓動方法中。 dllimport和setforeground窗口的用法應該是相同的,只不過你應該從當前進程獲取進程ID而不是新進程。 – Aphelion 2012-01-06 09:22:05