Disattivare MinimizeBox, MaximizeBox e Resize

di il
6 risposte

Disattivare MinimizeBox, MaximizeBox e Resize

Ho questo codice (compilato a 64bit) che funziona perfettamente:



Imports System.Runtime.InteropServices

Module APIdefine

    Public Const GWL_STYLE As Integer = -16
    Public Const WS_MINIMIZEBOX As Integer = &H20000
    Public Const WS_MAXIMIZEBOX As Integer = &H10000
    Public Const WS_THICKFRAME As Integer = &H40000

    <DllImport("user32.dll", SetLastError:=True)>
    Public Function GetWindowLongPtr(ByVal hWnd As IntPtr, ByVal nIndex As Integer) As IntPtr
    End Function

    <DllImport("user32.dll", SetLastError:=True)>
    Public Function SetWindowLongPtr(ByVal hWnd As IntPtr, ByVal nIndex As Integer, ByVal dwNewLong As IntPtr) As IntPtr
    End Function

End Module

Public Class Form1

    Private Sub Form1_Shown(sender As Object, e As EventArgs) Handles Me.Shown

        Dim proc = Process.Start("notepad.exe")
        proc.WaitForInputIdle()
        Threading.Thread.Sleep(1000) ' per sicurezza

        Dim style = CLng(GetWindowLongPtr(proc.MainWindowHandle, GWL_STYLE))
        style = style And (Not (WS_MINIMIZEBOX Or WS_MAXIMIZEBOX Or WS_THICKFRAME))
        SetWindowLongPtr(proc.MainWindowHandle, GWL_STYLE, CType(style, IntPtr))

    End Sub

End Class

Praticamente lancia il programma notepad.exe, aspetta un secondo per essere sicuri che sia tutto ok (ma soprattutto per il controllo visivo), e poi disabilita il MinimizeBox, il MaximizeBox e il ThickFrame (il resize)

Ma se al posto di “notepad.exe” metto “chrome.exe” non funziona più  :-(
Qualche idea ???
Grazie
Sergio

6 Risposte

  • Re: Disattivare MinimizeBox, MaximizeBox e Resize

    Non credo sia il problema ma prova ad aspettare di più , magari 5 secondi ,

    prova a vedere cosa ritorna https://learn.microsoft.com/en-us/windows/win32/api/winuser/nf-winuser-setwindowlongptra#return-value

  • Re: Disattivare MinimizeBox, MaximizeBox e Resize

    Grazie del tuo interessamento
    Allungando il tempo non è cambiato nulla,
    e controllando il valore di ritorno di SetWindowLongPtr mi ritorna il valore precedente, per cui tutto ok

    Potrebbe essere che chrome blocca in qualche maniera questa funzionalità ??

  • Re: Disattivare MinimizeBox, MaximizeBox e Resize

    No, piuttosto credo che la gestione del min max e ridisegno sia molto complessa e solo in parte gestita come una normale finestra

  • Re: Disattivare MinimizeBox, MaximizeBox e Resize

    Grazie Oregon, quindi presumo non ci  sia nulla da fare ??

  • Re: Disattivare MinimizeBox, MaximizeBox e Resize

    Non ne sono sicuro ma bisognerebbe indagare un po' (magari con Spyxx) per capire meglio… questo non vuol dire che ci possano essere soluzioni

  • Re: Disattivare MinimizeBox, MaximizeBox e Resize

    Aggiornamento: il MinimizeBox e il MaximizeBox rimangono lì, però il Resize funziona, nel senso che non si riesce a fare il resize, almeno quello funziona, strano per i due box

Devi accedere o registrarti per scrivere nel forum
6 risposte