2010-05-07 110 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