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

C# 将边框(Fixed3D)添加到现有无边框应用程序,c#,winforms,C#,Winforms,我有一个.NET应用程序,它总是以边框样式为“无”启动,因为它应该是一个具有固定分辨率的全屏应用程序 但是,我希望在应用程序启动时将窗口边框(Fixed3D)添加到此窗口,以便能够在桌面上移动它 我的第一个想法是让托盘应用程序运行,监视事件消息,并在这个特定应用程序启动时以某种方式更改窗口样式。然而,我不确定这是否有效以及如何做到这一点 有人能给我指出正确的方向吗?您可以在源代码中从主类继承一个类,并在适当的事件中更改其属性。这不会是对源代码的修改,尽管它将是一个不同的应用程序。您可能应该考虑使

我有一个.NET应用程序,它总是以边框样式为“无”启动,因为它应该是一个具有固定分辨率的全屏应用程序

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

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


有人能给我指出正确的方向吗?

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

您可能应该考虑使用user32.dll的函数

您需要获取与应用程序主窗口关联的窗口句柄。这可能通过以下方式实现:

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_样式
常量(十进制值-16)和
SetWindowLongPtr
设置适当的样式


应该可以帮助您找到所需的样式。

您的意思是您没有无边界应用程序的代码?你想用另一个应用程序控制它吗?我有无边界应用程序的代码。但是,我无法更改此代码。此应用程序将其frmMain.BorderStyle设置为“无”。我想要的是在frmMain周围添加一个边框,而不涉及代码。我的第一个建议是以某种方式捕捉WM_绘画并强制采用边界风格。这确实是一个很好的解决方案。不幸的是,在我的特定情况下,程序的Main执行了大量内部逻辑,这反过来又创建了mainForm。此外,我无法触及实际解决方案和内部代码。我必须像没有来源一样对待它;然而,我能够“看到”它们。