Ciao zoodany.
Per leggere la risoluzione dello schermo ed intervenire sul pannello di controllo di WinXP, se non è conforme al programma, puoi utilizzare la seguente routine:
codice:
'Da inserire in un modulo bas:
Public Function CheckScreenSize(pixelWidth As Long, pixelHeight As Long) As Boolean
pixelWidth = Screen.Width / Screen.TwipsPerPixelX
pixelHeight = Screen.Height / Screen.TwipsPerPixelY
'Verifica delle dimensioni schermo:
If pixelWidth >= 1024 And pixelHeight >= 768 Then
CheckScreenSize = True
Else
CheckScreenSize = False
End If
End Function
'---------------------------------------------------------
'Da inserire in una Frm:
Private Sub Form_Load()
Form1.Show
'Determina la risoluzione corrente dello schermo
'Funzione CheckScreenSize Modulo bas:
Dim HRes As Integer, VRes As Integer
Dim PauseTime, start, Finish, TotalTime
HRes = Screen.Width / Screen.TwipsPerPixelY
VRes = Screen.Height / Screen.TwipsPerPixelX
'Funzione per verificare le dimensioni dello schermo - Modulo bas:
If CheckScreenSize(1024, 768) = False Then
MsgBox "Il programma è ottimizzato per una risoluzione dello schermo di 1024 per 768" & Chr(13) _
& "Pixel, o superiore." & Chr(13) _
& "Prego aumentare la risoluzione.", vbExclamation, Me.Caption
'Riduce a icona ed Apre il pannello di comando
'per modificare la risoluzione:
Form1.WindowState = 1
'MDIForm1.WindowState = 1
Shell "rundll32 shell32,Control_RunDLL desk.cpl"
ElseIf CheckScreenSize(1024, 768) = True Then
LblRisol.Caption = "La risoluzione dello schermo " & HRes & " per " & VRes & " è compatibile con il programma"
'Esegue una pausa per visualizzare il messaggio:
PauseTime = 2 'Imposta la durata, circa 2 secondi
start = Timer 'Imposta il tempo d'inizio
Do While Timer < (start + PauseTime)
DoEvents 'Passa il controllo ad altri processi
Loop
Finish = Timer 'Imposta l'ora di fine pausa
TotalTime = (Finish - start) 'Calcola il tempo totale
If TotalTime >= PauseTime Then
LblRisol.Caption = "" 'Cancella il messaggio
End If
End If
End Sub
Il codice l'ho provato e funziona.