Funzione GetSystemMetrics (winuser.h)
Recupera l'impostazione di configurazione del sistema o della metrica di sistema specificata.
Si noti che tutte le dimensioni recuperate da GetSystemMetrics sono in pixel.
Sintassi
int GetSystemMetrics(
[in] int nIndex
);
Parametri
[in] nIndex
Tipo: int
L'impostazione di configurazione o metrica di sistema da recuperare. Questo parametro può avere uno dei valori seguenti. Si noti che tutti i valori SM_CX* sono larghezze e tutti i valori SM_CY* sono altezze. Si noti anche che tutte le impostazioni progettate per restituire i dati booleani rappresentano TRUE come qualsiasi valore diverso da zero e FALSE come valore zero.
Valore | Significato |
---|---|
|
Flag che specificano la modalità di disposizione delle finestre ridotte a icona del sistema. Per altre informazioni, vedere la sezione Osservazioni in questo argomento. |
|
Valore che specifica la modalità di avvio del sistema:
|
|
Numero di monitoraggi sullo schermo su un desktop. Per altre informazioni, vedere la sezione Osservazioni in questo argomento. |
|
Numero di pulsanti su un mouse o zero se non è installato alcun mouse. |
|
Riflette lo stato del portatile o della modalità slate, 0 per la modalità Slate e diverso da zero in caso contrario. Quando questa metrica di sistema cambia, il sistema invia un messaggio di trasmissione tramite WM_SETTINGCHANGE con "ConvertSlateMode" in LPARAM. Si noti che questa metrica di sistema non si applica ai PC desktop. In tal caso, usare GetAutoRotationState. |
|
Larghezza di un bordo finestra, in pixel. Equivale al valore di SM_CXEDGE per le finestre con l'aspetto 3D. |
|
Larghezza nominale di un cursore, in pixel. |
|
Questo valore corrisponde a SM_CXFIXEDFRAME. |
|
Larghezza del rettangolo intorno alla posizione di un primo clic in una sequenza di doppio clic, in pixel. Il secondo clic deve essere eseguito all'interno del rettangolo definito da SM_CXDOUBLECLK e SM_CYDOUBLECLK affinché il sistema consideri i due clic su un doppio clic. I due clic devono essere eseguiti anche entro un determinato intervallo di tempo.
Per impostare la larghezza del rettangolo di doppio clic, chiamare SystemParametersInfo con SPI_SETDOUBLECLKWIDTH. |
|
Numero di pixel su entrambi i lati di un punto verso il basso del mouse che il puntatore del mouse può spostare prima dell'inizio di un'operazione di trascinamento. In questo modo l'utente può fare clic e rilasciare facilmente il pulsante del mouse senza avviare involontariamente un'operazione di trascinamento. Se questo valore è negativo, viene sottratto a sinistra del puntatore verso il basso e aggiunto a destra di esso. |
|
Larghezza di un bordo 3D, in pixel. Questa metrica è la controparte 3D di SM_CXBORDER. |
|
Spessore del frame intorno al perimetro di una finestra con un didascalia ma non è ridimensionabile, in pixel.
SM_CXFIXEDFRAME è l'altezza del bordo orizzontale e SM_CYFIXEDFRAME è la larghezza del bordo verticale.
Questo valore corrisponde a SM_CXDLGFRAME. |
|
Larghezza dei bordi sinistro e destro del rettangolo di attivazione disegnato da DrawFocusRect . Questo valore è in pixel.
Windows 2000: Questo valore non è supportato. |
|
Questo valore corrisponde a SM_CXSIZEFRAME. |
|
Larghezza dell'area client per una finestra a schermo intero nel monitor di visualizzazione principale, in pixel. Per ottenere le coordinate della parte dello schermo che non è nascosta dalla barra delle applicazioni di sistema o dalle barre degli strumenti desktop dell'applicazione, chiamare la funzione SystemParametersInfo con il valore SPI_GETWORKAREA. |
|
Larghezza della bitmap freccia su una barra di scorrimento orizzontale, in pixel. |
|
Larghezza della casella di scorrimento orizzontale, espressa in pixel. |
|
Larghezza elevata del sistema di un'icona, in pixel. La funzione LoadIcon può caricare solo le icone con le dimensioni specificate SM_CXICON e SM_CYICON. Per altre informazioni, vedi Dimensioni icona . |
|
Larghezza di una cella della griglia per gli elementi in visualizzazione icona di grandi dimensioni, in pixel. Ogni elemento si adatta a un rettangolo di dimensioni SM_CXICONSPACING da SM_CYICONSPACING in caso di disposizione. Questo valore è sempre maggiore o uguale a SM_CXICON. |
|
Larghezza predefinita, in pixel, di una finestra di primo livello ingrandita sul monitor di visualizzazione primario. |
|
Larghezza massima predefinita di una finestra con un didascalia e bordi di ridimensionamento, in pixel. Questa metrica fa riferimento all'intero desktop. L'utente non può trascinare la cornice della finestra in una dimensione maggiore di queste dimensioni. Una finestra può eseguire l'override di questo valore elaborando il messaggio di WM_GETMINMAXINFO . |
|
Larghezza della bitmap di controllo del menu predefinito, in pixel. |
|
Larghezza dei pulsanti della barra dei menu, ad esempio il pulsante di chiusura della finestra figlio usato nell'interfaccia di più documenti, in pixel. |
|
Larghezza minima di una finestra, in pixel. |
|
Larghezza di una finestra ridotta al minimo, in pixel. |
|
Larghezza di una cella della griglia per una finestra ridotta al minimo, in pixel. Ogni finestra ridotta a icona si adatta a un rettangolo di questa dimensione quando disposta. Questo valore è sempre maggiore o uguale a SM_CXMINIMIZED. |
|
Larghezza minima di rilevamento di una finestra, in pixel. L'utente non può trascinare la cornice della finestra in una dimensione inferiore a queste dimensioni. Una finestra può eseguire l'override di questo valore elaborando il messaggio di WM_GETMINMAXINFO . |
|
Quantità di riempimento del bordo per le finestre con didascalia, in pixel.
Windows XP/2000: Questo valore non è supportato. |
|
Larghezza dello schermo del monitor di visualizzazione primario, in pixel. Questo è lo stesso valore ottenuto chiamando GetDeviceCaps come indicato di seguito: GetDeviceCaps(
hdcPrimaryMonitor, HORZRES) .
|
|
Larghezza di un pulsante in una finestra didascalia o barra del titolo, in pixel. |
|
Spessore del bordo di ridimensionamento intorno al perimetro di una finestra che può essere ridimensionata, in pixel.
SM_CXSIZEFRAME è la larghezza del bordo orizzontale e SM_CYSIZEFRAME è l'altezza del bordo verticale.
Questo valore è uguale a SM_CXFRAME. |
|
Larghezza ridotta del sistema di un'icona, in pixel. Le icone piccole vengono in genere visualizzate nelle didascalie della finestra e nella visualizzazione icona di piccole dimensioni. Per altre informazioni, vedere Dimensioni icona . |
|
Larghezza dei pulsanti di didascalia di piccole dimensioni, in pixel. |
|
Larghezza dello schermo virtuale, in pixel. La schermata virtuale è il rettangolo di selezione di tutti i monitor di visualizzazione. La metrica SM_XVIRTUALSCREEN è le coordinate per il lato sinistro dello schermo virtuale. |
|
Larghezza di una barra di scorrimento verticale, in pixel. |
|
Altezza di un bordo finestra, in pixel. Equivale al valore SM_CYEDGE per le finestre con l'aspetto 3D. |
|
Altezza di un'area didascalia, in pixel. |
|
Altezza nominale di un cursore, in pixel. |
|
Questo valore è uguale a SM_CYFIXEDFRAME. |
|
Altezza del rettangolo intorno alla posizione di un primo clic in una sequenza di doppio clic, in pixel. Il secondo clic deve verificarsi all'interno del rettangolo definito da SM_CXDOUBLECLK e SM_CYDOUBLECLK per il sistema da considerare i due clic su un doppio clic. I due clic devono verificarsi anche entro un'ora specificata.
Per impostare l'altezza del rettangolo doppio clic, chiamare SystemParametersInfo con SPI_SETDOUBLECLKHEIGHT. |
|
Il numero di pixel sopra e sotto un punto verso il basso del mouse che il puntatore del mouse può spostare prima di iniziare un'operazione di trascinamento. Ciò consente all'utente di fare clic e rilasciare facilmente il pulsante del mouse senza avviare in modo involontario un'operazione di trascinamento. Se questo valore è negativo, viene sottratto dall'alto del punto verso il basso del mouse e aggiunto di seguito. |
|
Altezza di un bordo 3D, in pixel. Si tratta della controparte 3D di SM_CYBORDER. |
|
Spessore della cornice intorno al perimetro di una finestra con un didascalia ma non è scalabile, in pixel.
SM_CXFIXEDFRAME è l'altezza del bordo orizzontale e SM_CYFIXEDFRAME è la larghezza del bordo verticale.
Questo valore è uguale a SM_CYDLGFRAME. |
|
Altezza dei bordi superiore e inferiore del rettangolo dello stato attivo disegnato da DrawFocusRect. Questo valore è in pixel.
Windows 2000: Questo valore non è supportato. |
|
Questo valore corrisponde a SM_CYSIZEFRAME. |
|
Altezza dell'area client per una finestra a schermo intero nel monitor di visualizzazione primario, in pixel. Per ottenere le coordinate della parte dello schermo non nascosta dalla barra delle applicazioni di sistema o dalle barre degli strumenti del desktop dell'applicazione, chiamare la funzione SystemParametersInfo con il valore SPI_GETWORKAREA. |
|
Altezza di una barra di scorrimento orizzontale, in pixel. |
|
Altezza elevata del sistema di un'icona, in pixel. La funzione LoadIcon può caricare solo le icone con le dimensioni specificate SM_CXICON e SM_CYICON. Per altre informazioni, vedi Dimensioni icona . |
|
Altezza di una cella della griglia per gli elementi in visualizzazione icona di grandi dimensioni, in pixel. Ogni elemento si adatta a un rettangolo di dimensioni SM_CXICONSPACING da SM_CYICONSPACING in caso di disposizione. Questo valore è sempre maggiore o uguale a SM_CYICON. |
|
Per le versioni del set di caratteri a byte doppio del sistema, si tratta dell'altezza della finestra Kanji nella parte inferiore dello schermo, in pixel. |
|
Altezza predefinita, in pixel, di una finestra di livello superiore ingrandita sul monitor di visualizzazione primario. |
|
Altezza massima predefinita di una finestra con un didascalia e bordi di ridimensionamento, in pixel. Questa metrica fa riferimento all'intero desktop. L'utente non può trascinare la cornice della finestra su una dimensione maggiore di queste dimensioni. Una finestra può eseguire l'override di questo valore elaborando il messaggio WM_GETMINMAXINFO . |
|
Altezza di una barra dei menu a riga singola, in pixel. |
|
Altezza della bitmap del segno di spunta del menu predefinito, espressa in pixel. |
|
Altezza dei pulsanti della barra dei menu, ad esempio il pulsante di chiusura della finestra figlio usato in pixel nell'interfaccia a più documenti. |
|
Altezza minima di una finestra, in pixel. |
|
Altezza di una finestra ridotta a icona, in pixel. |
|
Altezza di una cella della griglia per una finestra ridotta a icona, in pixel. Ogni finestra ridotta a icona si adatta a un rettangolo di questa dimensione quando disposta. Questo valore è sempre maggiore o uguale a SM_CYMINIMIZED. |
|
Altezza minima di rilevamento di una finestra, in pixel. L'utente non può trascinare la cornice della finestra su una dimensione inferiore a queste dimensioni. Una finestra può eseguire l'override di questo valore elaborando il messaggio WM_GETMINMAXINFO . |
|
Altezza dello schermo del monitor di visualizzazione primario, in pixel. Si tratta dello stesso valore ottenuto chiamando GetDeviceCaps come indicato di seguito: GetDeviceCaps(
hdcPrimaryMonitor, VERTRES) .
|
|
Altezza di un pulsante in una finestra didascalia o barra del titolo, in pixel. |
|
Spessore del bordo di ridimensionamento intorno al perimetro di una finestra che può essere ridimensionato, in pixel.
SM_CXSIZEFRAME è la larghezza del bordo orizzontale e SM_CYSIZEFRAME è l'altezza del bordo verticale.
Questo valore è uguale a SM_CYFRAME. |
|
Altezza di un piccolo didascalia, in pixel. |
|
Altezza ridotta del sistema di un'icona, in pixel. Le icone di piccole dimensioni vengono in genere visualizzate nelle didascalie delle finestre e nella visualizzazione icona piccola. Per altre informazioni, vedi Dimensioni icona . |
|
Altezza di piccoli pulsanti didascalia, in pixel. |
|
Altezza dello schermo virtuale, in pixel. Lo schermo virtuale è il rettangolo di delimitazione di tutti i monitoraggi dello schermo. La metrica SM_YVIRTUALSCREEN corrisponde alle coordinate per la parte superiore della schermata virtuale. |
|
Altezza della bitmap freccia su una barra di scorrimento verticale, in pixel. |
|
Altezza della casella personale in una barra di scorrimento verticale, in pixel. |
|
Diverso da zero se User32.dll supporta DBCS; in caso contrario, 0. |
|
Diverso da zero se è installata la versione di debug di User.exe; in caso contrario, 0. |
|
Diverso da zero se il sistema operativo corrente è Windows 7 o Windows Server 2008 R2 e viene avviato il servizio Tablet PC Input; in caso contrario, 0. Il valore restituito è una maschera di bit che specifica il tipo di input del digitalizzatore supportato dal dispositivo. Per altre informazioni, vedere la sezione Osservazioni.
Windows Server 2008, Windows Vista e Windows XP/2000: Questo valore non è supportato. |
|
Diverso da zero se le funzionalità di Input Method Manager/Input Method Editor sono abilitate; in caso contrario, 0.
SM_IMMENABLED indica se il sistema è pronto per l'uso di un IME basato su Unicode in un'applicazione Unicode. Per garantire il funzionamento di un IME dipendente dal linguaggio, controllare SM_DBCSENABLED e la tabella codici ANSI di sistema. In caso contrario, è possibile che la conversione da ANSI a Unicode non venga eseguita correttamente o che alcuni componenti come tipi di carattere o impostazioni del Registro di sistema non siano presenti. |
|
Diverso da zero se sono presenti digitalizzatori nel sistema; in caso contrario, 0.
SM_MAXIMUMTOUCHES restituisce il valore massimo aggregato del numero massimo di contatti supportati da ogni digitalizzatore nel sistema. Se il sistema ha solo digitalizzatori a tocco singolo, il valore restituito è 1. Se il sistema dispone di digitalizzatori multitocco, il valore restituito è il numero di contatti simultanei che l'hardware può fornire. Windows Server 2008, Windows Vista e Windows XP/2000: Questo valore non è supportato. |
|
Diverso da zero se il sistema operativo corrente è Windows XP, Media Center Edition, 0 in caso contrario. |
|
Diverso da zero se i menu a discesa sono allineati a destra con la voce della barra dei menu corrispondente; 0 se i menu sono allineati a sinistra. |
|
Diverso da zero se il sistema è abilitato per le lingue ebraico e arabo, 0 in caso contrario. |
|
Diverso da zero se è installato un mouse; in caso contrario, 0. Questo valore è raramente zero, a causa del supporto per i topi virtuali e perché alcuni sistemi rilevano la presenza della porta invece della presenza di un mouse. |
|
Diverso da zero se è installato un mouse con una rotellina di scorrimento orizzontale; in caso contrario, 0. |
|
Diverso da zero se è installato un mouse con una rotellina di scorrimento verticale; in caso contrario, 0. |
|
Il bit meno significativo viene impostato se è presente una rete; in caso contrario, viene cancellata. Gli altri bit sono riservati per l'uso futuro. |
|
Diverso da zero se sono installate le estensioni microsoft Windows per il calcolo penna; zero in caso contrario. |
|
Questa metrica di sistema viene usata in un ambiente Servizi terminal per determinare se la sessione corrente di Terminal Server viene controllata in remoto. Il valore è diverso da zero se la sessione corrente è controllata in remoto; in caso contrario, 0.
È possibile usare strumenti di gestione dei servizi terminal, ad esempio Terminal Services Manager (tsadmin.msc) e shadow.exe per controllare una sessione remota. Quando una sessione viene controllata in remoto, un altro utente può visualizzare il contenuto di tale sessione e potenzialmente interagire con esso. |
|
Questa metrica di sistema viene usata in un ambiente servizi terminal. Se il processo chiamante è associato a una sessione client di Servizi terminal, il valore restituito è diverso da zero. Se il processo chiamante è associato alla sessione della console di Servizi terminal, il valore restituito è 0. Windows Server 2003 e Windows XP: La sessione della console non è necessariamente la console fisica. Per altre informazioni, vedere WTSGetActiveConsoleSessionId. |
|
Diverso da zero se tutti i monitor dello schermo hanno lo stesso formato di colore; in caso contrario, 0. Due schermi possono avere la stessa profondità di bit, ma formati di colore diversi. Ad esempio, i pixel rosso, verde e blu possono essere codificati con numeri diversi di bit oppure questi bit possono trovarsi in posizioni diverse in un valore di colore pixel. |
|
Questa metrica di sistema deve essere ignorata; restituisce sempre 0. |
|
Numero di build se il sistema è Windows Server 2003 R2; in caso contrario, 0. |
|
Diverso da zero se l'utente richiede a un'applicazione di presentare visivamente le informazioni in situazioni in cui altrimenti presenterebbe le informazioni solo in forma udibile; in caso contrario, 0. |
|
Diverso da zero se la sessione corrente viene arrestata; in caso contrario, 0.
Windows 2000: Questo valore non è supportato. |
|
Diverso da zero se il computer ha un processore basso (lento); in caso contrario, 0. |
|
Diverso da zero se il sistema operativo corrente è Windows 7 Starter Edition, Windows Vista Starter o Windows XP Starter Edition; in caso contrario, 0. |
|
Diverso da zero se i significati dei pulsanti sinistro e destro del mouse vengono scambiati; in caso contrario, 0. |
|
Riflette lo stato della modalità di ancoraggio, 0 per Modalità non ancorata e diverso da zero in caso contrario. Quando questa metrica di sistema viene modificata, il sistema invia un messaggio di trasmissione tramite WM_SETTINGCHANGE con "SystemDockMode" in LPARAM. |
|
Diverso da zero se il sistema operativo corrente è l'edizione di Windows XP Tablet PC o se il sistema operativo corrente è Windows Vista o Windows 7 e viene avviato il servizio Tablet PC Input; in caso contrario, 0. L'impostazione SM_DIGITIZER indica il tipo di input del digitalizzatore supportato da un dispositivo che esegue Windows 7 o Windows Server 2008 R2. Per altre informazioni, vedere la sezione Osservazioni. |
|
Coordinate per il lato sinistro dello schermo virtuale. Lo schermo virtuale è il rettangolo di delimitazione di tutti i monitoraggi dello schermo. La metrica SM_CXVIRTUALSCREEN è la larghezza dello schermo virtuale. |
|
Coordinate per la parte superiore dello schermo virtuale. Lo schermo virtuale è il rettangolo di delimitazione di tutti i monitoraggi dello schermo. La metrica SM_CYVIRTUALSCREEN è l'altezza dello schermo virtuale. |
Valore restituito
Tipo: int
Se la funzione ha esito positivo, il valore restituito è l'impostazione di configurazione o metrica di sistema richiesta.
Se la funzione ha esito negativo, il valore restituito è 0. GetLastError non fornisce informazioni estese sull'errore.
Commenti
Le metriche di sistema possono variare dalla visualizzazione alla visualizzazione.
GetSystemMetrics(SM_CMONITORS) conta solo i monitor di visualizzazione visibili. Questo è diverso da EnumDisplayMonitors, che enumera sia monitor di visualizzazione visibili che pseudo-monitor invisibili associati ai driver di mirroring. Uno pseudo-monitor invisibile è associato a uno pseudo-dispositivo usato per eseguire il mirroring del disegno dell'applicazione per la comunicazione remota o altri scopi.
L'impostazione SM_ARRANGE specifica come il sistema dispone finestre ridotte a icona ed è costituito da una posizione iniziale e una direzione. La posizione iniziale può essere uno dei valori seguenti.
Valore | Significato |
---|---|
ARW_BOTTOMLEFT | Iniziare dall'angolo inferiore sinistro dello schermo. Posizione predefinita. |
ARW_BOTTOMRIGHT | Iniziare dall'angolo inferiore destro dello schermo. Equivale a ARW_STARTRIGHT. |
ARW_TOPLEFT | Iniziare dall'angolo superiore sinistro dello schermo. Equivale a ARW_STARTTOP. |
ARW_TOPRIGHT | Iniziare nell'angolo superiore destro dello schermo. Equivalente a ARW_STARTTOP | SRW_STARTRIGHT. |
La direzione in cui disporre finestre ridotte a icona può essere uno dei valori seguenti.
Valore | Significato |
---|---|
ARW_DOWN | Disporre verticalmente, dall'alto verso il basso. |
ARW_HIDE | Nascondere le finestre ridotte a icona spostandole dall'area visibile dello schermo. |
ARW_LEFT | Disporre orizzontalmente, da sinistra a destra. |
ARW_RIGHT | Disporre orizzontalmente, da destra a sinistra. |
ARW_UP | Disporre verticalmente, dal basso verso l'alto. |
L'impostazione SM_DIGITIZER specifica il tipo di digitalizzatori installati in un dispositivo che esegue Windows 7 o Windows Server 2008 R2. Il valore restituito è una maschera di bit che specifica uno o più dei valori seguenti.
Valore | Significato |
---|---|
NID_INTEGRATED_TOUCH 0x01 |
Il dispositivo ha un digitalizzatore touch integrato. |
NID_EXTERNAL_TOUCH 0x02 |
Il dispositivo ha un digitalizzatore tocco esterno. |
NID_INTEGRATED_PEN 0x04 |
Il dispositivo ha un digitalizzatore penna integrato. |
NID_EXTERNAL_PEN 0x08 |
Il dispositivo ha un digitalizzatore penna esterno. |
NID_MULTI_INPUT 0x40 |
Il dispositivo supporta più origini di input del digitalizzatore. |
NID_READY 0x80 |
Il dispositivo è pronto per ricevere l'input del digitalizzatore. |
Questa API non riconosce i valori DPI e non deve essere usata se il thread chiamante è compatibile con DPI per monitor. Per la versione compatibile con DPI di questa API, vedere GetSystemMetricsForDPI. Per altre informazioni sulla consapevolezza dpi, vedere la documentazione di Windows High DPI.For more information on DPI awareness, see the Windows High DPI documentation.
Esempio
Nell'esempio seguente viene utilizzata la funzione GetSystemMetrics per determinare se è installato un mouse e se i pulsanti del mouse vengono scambiati. Nell'esempio viene usata anche la funzione SystemParametersInfo per recuperare la soglia e la velocità del mouse. Visualizza le informazioni nella console.
#include <windows.h>
#include <stdio.h>
#pragma comment(lib, "user32.lib")
void main()
{
BOOL fResult;
int aMouseInfo[3];
fResult = GetSystemMetrics(SM_MOUSEPRESENT);
if (fResult == 0)
printf("No mouse installed.\n");
else
{
printf("Mouse installed.\n");
// Determine whether the buttons are swapped.
fResult = GetSystemMetrics(SM_SWAPBUTTON);
if (fResult == 0)
printf("Buttons not swapped.\n");
else printf("Buttons swapped.\n");
// Get the mouse speed and the threshold values.
fResult = SystemParametersInfo(
SPI_GETMOUSE, // get mouse information
0, // not used
&aMouseInfo, // holds mouse information
0); // not used
if( fResult )
{
printf("Speed: %d\n", aMouseInfo[2]);
printf("Threshold (x,y): %d,%d\n",
aMouseInfo[0], aMouseInfo[1]);
}
}
}
Requisiti
Client minimo supportato | Windows 2000 Professional [solo app desktop] |
Server minimo supportato | Windows 2000 Server [solo app desktop] |
Piattaforma di destinazione | Windows |
Intestazione | winuser.h (include Windows.h) |
Libreria | User32.lib |
DLL | User32.dll |
Set di API | ext-ms-win-ntuser-sysparams-ext-l1-1-0 (introdotto in Windows 8) |