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 su una dimensione maggiore di queste dimensioni. Una finestra può eseguire l'override di questo valore elaborando il messaggio WM_GETMINMAXINFO . |
|
Larghezza della bitmap di segno di spunta del menu predefinita, espressa in pixel. |
|
Larghezza dei pulsanti della barra dei menu, ad esempio il pulsante di chiusura della finestra figlio utilizzato in pixel nell'interfaccia a più documenti. |
|
Larghezza minima di una finestra, in pixel. |
|
Larghezza di una finestra ridotta a icona, in pixel. |
|
Larghezza di una cella della griglia per una finestra ridotta a icona, espressa 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 su una dimensione inferiore a queste dimensioni. Una finestra può eseguire l'override di questo valore elaborando il messaggio WM_GETMINMAXINFO . |
|
Quantità di spaziatura interna del bordo per le finestre con didascalia, in pixel.
Windows XP/2000: Questo valore non è supportato. |
|
Larghezza dello schermo del monitor di visualizzazione principale, in pixel. Si tratta dello 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 ridimensionato, in pixel.
SM_CXSIZEFRAME è la larghezza del bordo orizzontale e SM_CYSIZEFRAME è l'altezza del bordo verticale.
Questo valore corrisponde a SM_CXFRAME. |
|
Larghezza 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 . |
|
Larghezza dei pulsanti didascalia piccoli, in pixel. |
|
Larghezza dello schermo virtuale, in pixel. Lo schermo virtuale è il rettangolo di delimitazione di tutti i monitoraggi dello schermo. La metrica SM_XVIRTUALSCREEN corrisponde alle 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 di 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 corrisponde 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 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 l'altezza del rettangolo di doppio clic, chiamare SystemParametersInfo con SPI_SETDOUBLECLKHEIGHT. |
|
Numero di pixel sopra e sotto 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 dall'alto del punto verso il basso del mouse e aggiunto sotto di esso. |
|
Altezza di un bordo 3D, in pixel. Questa è la controparte 3D di SM_CYBORDER. |
|
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_CYDLGFRAME. |
|
Altezza dei bordi superiore e inferiore del rettangolo di messa a fuoco disegnato da DrawFocusRect. Questo valore è in pixel.
Windows 2000: Questo valore non è supportato. |
|
Questo valore è uguale a SM_CYSIZEFRAME. |
|
Altezza dell'area client per una finestra a schermo intero sul monitor di visualizzazione primario, in pixel. Per ottenere le coordinate della parte dello schermo non offuscata dalla barra delle applicazioni o dalla barra degli strumenti desktop dell'applicazione, chiamare la funzione SystemParametersInfo con il valore SPI_GETWORKAREA. |
|
Altezza di una barra di scorrimento orizzontale, in pixel. |
|
Altezza di sistema elevata di un'icona, in pixel. La funzione LoadIcon può caricare solo le icone con le dimensioni che SM_CXICON e SM_CYICON specifica. Per altre informazioni, vedere Dimensioni icona . |
|
Altezza di una cella di griglia per gli elementi in visualizzazione icona di grandi dimensioni, in pixel. Ogni elemento si adatta a un rettangolo di dimensioni SM_CXICONSPACING SM_CYICONSPACING quando disposto. Questo valore è sempre maggiore o uguale a SM_CYICON. |
|
Per le versioni del set di caratteri a byte doppie del sistema, questa è l'altezza della finestra Kanji nella parte inferiore dello schermo, in pixel. |
|
Altezza predefinita, in pixel, di una finestra di primo livello 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 in una dimensione maggiore di queste dimensioni. Una finestra può eseguire l'override di questo valore elaborando il messaggio di WM_GETMINMAXINFO . |
|
Altezza di una barra dei menu a riga singola, in pixel. |
|
Altezza della bitmap del segno di spunta del menu predefinito, in pixel. |
|
Altezza dei pulsanti della barra dei menu, ad esempio il pulsante di chiusura della finestra figlio usato nell'interfaccia di più documenti, in pixel. |
|
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 in una dimensione inferiore a queste dimensioni. Una finestra può eseguire l'override di questo valore elaborando il messaggio di WM_GETMINMAXINFO . |
|
Altezza dello schermo del monitor di visualizzazione primario, in pixel. Questo è lo 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 ridimensionata, 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 una piccola didascalia, in pixel. |
|
Altezza 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 . |
|
Altezza dei pulsanti di didascalia di piccole dimensioni, in pixel. |
|
Altezza dello schermo virtuale, in pixel. La schermata virtuale è il rettangolo di selezione di tutti i monitor di visualizzazione. La metrica SM_YVIRTUALSCREEN è la coordinata per la parte superiore della schermata virtuale. |
|
Altezza della bitmap della freccia su una barra di scorrimento verticale, in pixel. |
|
Altezza della casella personale in una barra di scorrimento verticale, in pixel. |
|
Non zero se User32.dll supporta DBCS; in caso contrario, 0. |
|
Non zero se la versione di debug di User.exe è installata; in caso contrario, 0. |
|
Non zero se il sistema operativo corrente è Windows 7 o Windows Server 2008 R2 e viene avviato il servizio Input tablet PC; in caso contrario, 0. Il valore restituito è una maschera 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. |
|
Non zero se il metodo di input/metodo di input Editor le funzionalità 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 assicurarsi che funzioni un IME dipendente dal linguaggio, controllare SM_DBCSENABLED e la tabella codici ANSI di sistema. In caso contrario, la conversione ANSI-to-Unicode potrebbe non essere eseguita correttamente oppure alcuni componenti come i tipi di carattere o le impostazioni del Registro di sistema potrebbero non essere presenti. |
|
Non zero se nel sistema sono presenti digitalizzatori; in caso contrario, 0.
SM_MAXIMUMTOUCHES restituisce il massimo di aggregazione 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 multi-tocco, 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. |
|
Non zero se il sistema operativo corrente è Windows XP, Media Center Edition, 0 se non. |
|
Non 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. |
|
Non zero se il sistema è abilitato per le lingue ebraiche e arabe, 0 se non. |
|
Non 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 anziché la presenza di un mouse. |
|
Non zero se viene installato un mouse con una rotellina di scorrimento orizzontale; altrimenti 0. |
|
Non zero se è installato un mouse con una rotellina di scorrimento verticale; altrimenti 0. |
|
Il bit meno significativo è impostato se è presente una rete; in caso contrario, viene cancellata. Gli altri bit sono riservati per l'uso futuro. |
|
Non zero se le estensioni di calcolo microsoft Windows per penna sono installate; zero in caso contrario. |
|
Questa metrica di sistema viene usata in un ambiente servizi terminal per determinare se la sessione del server terminale corrente 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 interagire potenzialmente 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. |
|
Non zero se tutti i monitor display hanno lo stesso formato di colore, in caso contrario, 0. Due visualizzazioni possono avere la stessa profondità di bit, ma formati di colore diversi. Ad esempio, i pixel rossi, verdi 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 compilazione se il sistema è Windows Server 2003 R2; in caso contrario, 0. |
|
Non zero se l'utente richiede un'applicazione di presentare le informazioni visivamente in situazioni in cui in caso contrario presenterebbe le informazioni solo in forma udibile; in caso contrario, 0. |
|
Non zero se la sessione corrente viene arrestata; in caso contrario, 0.
Windows 2000: Questo valore non è supportato. |
|
Non zero se il computer ha un processore a basso termine (lento); in caso contrario, 0. |
|
Non zero se il sistema operativo corrente è Windows 7 Starter Edition, Windows Vista Starter o Windows XP Starter Edition; in caso contrario, 0. |
|
Non 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 la modalità nondocked e non zero in caso contrario. Quando questa metrica di sistema cambia, il sistema invia un messaggio di trasmissione tramite WM_SETTINGCHANGE con "SystemDockMode" nell'LPARAM. |
|
Non zero se il sistema operativo corrente è l'edizione pc tablet Windows XP o se il sistema operativo corrente è Windows Vista o Windows 7 e viene avviato il servizio Input tablet PC; 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. La schermata virtuale è il rettangolo di selezione di tutti i monitor di visualizzazione. La metrica SM_CXVIRTUALSCREEN è la larghezza dello schermo virtuale. |
|
Coordinate per la parte superiore della schermata virtuale. La schermata virtuale è il rettangolo di selezione di tutti i monitor di visualizzazione. 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
Requisito | Valore |
---|---|
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) |