Добавление границы (Fixed3D) в существующее приложение без полей - PullRequest
1 голос
/ 30 марта 2010

У меня есть приложение .NET, которое всегда запускает себя со стилем границы «Нет», так как предполагается, что оно является полноэкранным приложением с фиксированным разрешением.

Однако я хотел бы добавить границу окна (Fixed3D) к этому окну при запуске приложения, чтобы я мог перемещать его по своему рабочему столу.

Моей первой идеей было запустить приложение в трее, отслеживать сообщения о событиях и каким-то образом изменять стиль окна при запуске этого конкретного приложения. Однако я не уверен, сработает ли это и как это сделать.

Кто-нибудь, кто может указать мне в правильном направлении?

Ответы [ 2 ]

2 голосов
/ 08 июня 2010

Вероятно, вам следует использовать SetWindowLongPtr функцию 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_STYLE (значение -16 в десятичном формате) и SetWindowLongPtr.

Изменение стиля главного окна должно помочь вам найти стили, которые вам нужны.

1 голос
/ 30 марта 2010

Вы можете наследовать класс от основного класса в исходном коде и изменять его свойства в соответствующих событиях. Это не будет изменением исходного кода, хотя это будет другое приложение.

Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...