2010-05-07 108 views
2

我啓動IE作爲一個進程,然後我想更改應用程序的以下屬性。更改應用程序窗口樣式

  1. 刪除標題欄,應用程序的工具欄(如果IE)
  2. 機頂盒,通過C#左位置和大小
  3. 防止處理從最小化,我已經使用下面的代碼,但沒有運氣(發現過程的把手,然後將其傳遞到下面功能)

    public void SetFormOnDesktop(int hwnd) 
    { 
        int hwndf = hwnd; 
        IntPtr hwndParent = FindWindow("ProgMan", null); 
        SetParent(hwndf, hwndParent); 
    } 
    

EDIT 1:
是否有可能阻止IE上下文菜單,並防止它在任務欄上顯示

+1

所有這些不是*進程*的屬性,而是*窗口*的屬性。這可能會幫助你更好地尋找答案。 – Thomas 2010-05-07 06:09:20

+0

我知道所有這些都不是一個過程的屬性。有沒有可能通過Win api設置/更改屬性 – 2010-05-07 06:15:56

+0

我不知道這是否可以通過利用框架中的某些東西來完成,但可以通過劫持Win32 API中的IE窗口句柄並操作它來完成.T建議閱讀http://stackoverflow.com/questions/2328931/how-do-i-find-the-window-handle-for-a-running-process – 2010-05-07 06:18:20

回答

1

刪除標題欄,一個過程的工具(如IE)

的術語在這裏並不完全正確。標題欄或工具欄屬於一個窗口,而不是一個進程。而一個窗口「屬於」一個進程,就是說進程可以調用CreateWindow。

現在,除去標題欄從窗口中刪除WS_CAPTION風格,這樣做就可以調用SetWindowLong函數與GWL_STYLE標誌和使用波浪號運營商將其刪除:

SetWindowLong(hwnd, GWL_STYLE, GetWindowLong(hwnd) & ~WS_CAPTION); 

機頂盒通過C#留下的位置和大小

SetWindowPos既可以做

防止處理從最小化......

窗口,而不是過程,你不能,那麼你可以種從標題欄中刪除的控制,但如果去掉你,最大化和關閉,以及想要尋找WS_SYSMENU

2

聽起來像是你要使用Internet Explorer's Kiosk Mode,它提供了一個全屏幕,toolbarless,非可最小化窗口。

請檢查前述鏈接,瞭解更多信息和,呃,我投了:)

+0

謝謝@mark。如何改變位置和大小 – 2010-05-07 06:35:21

+0

你不能,當在亭子模式窗口是最大化!也許你應該首先更多地關注答案? – 2010-05-07 06:59:56

1

下面是一個SO answer我給上改變窗口的樣式。 (這是在VB.NET,所以你必須翻譯,但它應該幫助你的想法。)

1

只是一個想法:如果您沒有將IE作爲單獨的進程啓動(基本上是:打開瀏覽器並將其完全從控件中釋放出來),它會有所幫助,但在C#應用程序中使用表單你控制 - 大小,位置,沒有標題欄,不允許最小化 - 與(只是?)WebBrowser控制它?無論如何,WebBrowser基本上只是IE瀏覽器,但是作爲表單上的控件,您已經(接近)完全控制。

+0

我喜歡你的想法,但已經嘗試過了。我的應用程序消耗太多內存來呈現網站。所以我嘗試了一個外部應用程序 – 2010-05-07 11:21:35