将边框(Fixed3D)添加到现有的无边界应用程序

时间:2010-03-30 08:05:02

标签: c# winforms

我有一个.NET应用程序,它的边框样式始终以'None'开头,因为它应该是一个具有固定分辨率的全屏应用程序。

但是,我想在应用程序启动时将窗口边框(Fixed3D)添加到此窗口,以便我能够在桌面上移动它。

我的第一个想法是让托盘应用程序运行,监视事件消息,并在此特定应用程序启动时以某种方式更改窗口样式。但是,我不确定这是否有效以及如何做到这一点。

任何可以指出我正确方向的人?

2 个答案:

答案 0 :(得分:2)

您应该考虑使用 user32.dll SetWindowLongPtr功能。

您需要获取与应用程序主窗口关联的窗口句柄。这可以使用以下方式完成:

Process[] processes = Process.GetProcesses();
foreach (Process process in processes) {
    if (process.MainModule.FileName == @"C:\Program Files\App\app.exe") {
        IntPtr handle = process.MainWindowHandle;
        // Call method to change window style here.
        break;
    }
}

然后,您可以使用GWL_STYLE常量(十进制值-16)和SetWindowLongPtr设置适当的样式。

Changing the Style of the Main Window应该可以帮助您找到所需的样式。

答案 1 :(得分:1)

您可以从源代码中的主类继承类,并在适当的事件中更改其属性。虽然它是一个不同的应用程序,但它不会修改源代码。