Kuinka pystyn Visual Basicilla havaitsemaan onko jokin noista aktiivisen ikkunan napeista eli pienennys, suurennus tai sulje napeista otettu pois käytöstä?
Minimize, Maximize, Close
123456
3271
0Äänestä
Muut lukivat myös
Odottaa vastausta
Näihin keskusteluihin ei ole vielä vastattu. Ole ensimmäinen.
Vastaukset 3
Vanhimmat
Näiden ominaisuuksien tutkiminen auttaa joillakin Form:n BorderStyle asetuksilla (1-3).
Close = ControlBox (jos False ei näytä myöskään Maximize tai Minimize, vaikka olisivat True)
MaxButton = Maximize
MinButton = Minimize
Kiitos jo tästä mutta selostin vähän huonosti nimittäin tuohan havaitsee vain lomake ikkunasta noiden nappien arvot mutta ei olisi mahdollista selvittää samanlailla tuota arvoa vaikka Internet Explorer selaimesta?
app_hwnd = GetWindow(DesktopWindow(), GW_CHILD)
Mitään apua tuosta?
Tällä ohjelmapätkällä saa ainakin selville onko ikkunalla Minimize ja/tai Maximize napit olemassa. Vaatii kuitenkin tarkempaa ikkunan tyylin tutkintaa, jos haluaa tietää onko siellä sulkemisnappi ja ovatko pienneys ja suurennus napit todellakin näkyvissä. Tälläkin funktiolla esim. jos VB:n formissa on ControlBox False, mutta MinButton ja/tai MaxButton ovat True, niin metodi kertoo käyttäjälle näiden olevan näkyvissä, vaikka todellisuudessa eivät käyttäjälle näy.
Private Declare Function GetActiveWindow Lib "user32" () As Long
Private Declare Function GetWindowLong Lib "user32" Alias "GetWindowLongA" (ByVal hwnd As Long, ByVal nIndex As Long) As Long
Private Const GWL_STYLE = (-16)
Private Const WS_MINIMIZEBOX = &H20000
Private Const WS_MAXIMIZEBOX = &H10000
Private Sub Test()
Dim app_hwnd As Long
Dim str As String
Dim lRet As Long
app_hwnd = GetActiveWindow()
lRet = GetWindowLong(app_hwnd, GWL_STYLE)
If lRet And WS_MAXIMIZEBOX Then
MsgBox "Has MaximizeBox!", , ""
End If
If lRet And WS_MINIMIZEBOX Then
MsgBox "Has MinimizeBox!", , ""
End If
End Sub