2013-10-21 99 views
8

我使用visual studio編寫了Kiosk風格的C#應用​​程序,該應用程序在啓動時運行,並應擴展爲全屏並覆蓋任務欄。在啓動任務欄上覆蓋全屏C#應用程序

我正在做通常的設置寄宿生風格爲無,並填充範圍,它完美的作品,如果我只是手動啓動應用程序。

當應用程序啓動時(通過啓動菜單中的啓動文件夾中的快捷方式)啓動時,任務欄會在程序頂部結束,並且單擊表單上的某處不會顯示錶單回到頂部。

有沒有人遇到過這個問題,或知道可能的解決方法。

+0

不知道,但可能會有o其他程序中斷它 – Rohit

+0

這是在Windows XP的乾淨安裝我不記得是什麼版本,唯一的東西已經安裝的.net可分發和USBCAN適配器的一些驅動程序。 – Hugoagogo

+0

你使用什麼技術? WPF或WinForms? – galenus

回答

0

解決方法:啓動時,殺死explorer.exe - 您不需要它 - >任務欄消失。 當需要時,使用任務管理器啓動

+0

會有一個簡單的方法來檢查瀏覽器已完全打開之前顯示的形式 – Hugoagogo

+0

完全打開?你可以說得更詳細點嗎? – Ondrej

+0

完全打開,因爲在任務欄正在顯示,所以當表格開始時,它會正確覆蓋任務欄。 – Hugoagogo

3

我也這樣做了另一個時間:

public class Screensize 
{ 
    /// <summary> 
    /// Selected Win AI Function Calls 
    /// </summary> 

    public class WinApi 
    { 
     [DllImport("user32.dll", EntryPoint = "GetSystemMetrics")] 
     public static extern int GetSystemMetrics(int which); 

     [DllImport("user32.dll")] 
     public static extern void 
      SetWindowPos(IntPtr hwnd, IntPtr hwndInsertAfter, 
         int X, int Y, int width, int height, uint flags); 

     private const int SM_CXSCREEN = 0; 
     private const int SM_CYSCREEN = 1; 
     private static IntPtr HWND_TOP = IntPtr.Zero; 
     private const int SWP_SHOWWINDOW = 64; // 0x0040 

     public static int ScreenX 
     { 
      get { return GetSystemMetrics(SM_CXSCREEN); } 
     } 

     public static int ScreenY 
     { 
      get { return GetSystemMetrics(SM_CYSCREEN); } 
     } 

     public static void SetWinFullScreen(IntPtr hwnd) 
     { 
      SetWindowPos(hwnd, HWND_TOP, 0, 0, ScreenX, ScreenY, SWP_SHOWWINDOW); 
     } 
    } 

    /// <summary> 
    /// Class used to preserve/restore state of the form 
    /// </summary> 
    public class FormState 
    { 
     private FormWindowState winState; 
     private FormBorderStyle brdStyle; 
     private bool topMost; 
     private Rectangle bounds; 

     private bool IsMaximized = false; 

     public void Maximize(Form targetForm) 
     { 
      if (!IsMaximized) 
      { 
       IsMaximized = true; 
       Save(targetForm); 
       targetForm.WindowState = FormWindowState.Maximized; 
       targetForm.FormBorderStyle = FormBorderStyle.None; 
       targetForm.TopMost = false; 
       WinApi.SetWinFullScreen(targetForm.Handle); 
      } 
     } 

     public void Save(Form targetForm) 
     { 
      winState = targetForm.WindowState; 
      brdStyle = targetForm.FormBorderStyle; 
      topMost = targetForm.TopMost; 
      bounds = targetForm.Bounds; 
     } 

     public void Restore(Form targetForm) 
     { 
      targetForm.WindowState = winState; 
      targetForm.FormBorderStyle = brdStyle; 
      targetForm.TopMost = topMost; 
      targetForm.Bounds = bounds; 
      IsMaximized = false; 
     } 
    } 

,只是在你的形式調用:

screensize.Maximize(this) 

我想你的意思是這

現在我看到這個帖子是從2013年...

+0

感謝你們,我幾個星期不會去測試它,但它看起來既不錯,也非常直觀,現在UpVote,並且在我有機會解決這個問題之後將標記爲正確。 – Hugoagogo

相關問題