Fungsi GetSystemMetrics (winuser.h)
Mengambil metrik sistem atau pengaturan konfigurasi sistem yang ditentukan.
Perhatikan bahwa semua dimensi yang diambil oleh GetSystemMetrics berada dalam piksel.
Sintaks
int GetSystemMetrics(
[in] int nIndex
);
Parameter
[in] nIndex
Jenis: int
Metrik sistem atau pengaturan konfigurasi yang akan diambil. Parameter ini bisa menjadi salah satu nilai berikut. Perhatikan bahwa semua nilai SM_CX* adalah lebar dan semua nilai SM_CY* adalah tinggi. Perhatikan juga bahwa semua pengaturan yang dirancang untuk mengembalikan data Boolean mewakili TRUE sebagai nilai bukan nol, dan FALSE sebagai nilai nol.
Nilai | Makna |
---|---|
|
Bendera yang menentukan bagaimana sistem mengatur jendela yang diminimalkan. Untuk informasi selengkapnya, lihat bagian Keterangan dalam topik ini. |
|
Nilai yang menentukan bagaimana sistem dimulai:
|
|
Jumlah monitor tampilan pada desktop. Untuk informasi selengkapnya, lihat bagian Keterangan dalam topik ini. |
|
Jumlah tombol pada mouse, atau nol jika tidak ada mouse yang terpasang. |
|
Mencerminkan status laptop atau mode slate, 0 untuk Mode Slate dan bukan nol sebaliknya. Ketika metrik sistem ini berubah, sistem mengirim pesan siaran melalui WM_SETTINGCHANGE dengan "ConvertibleSlateMode" di LPARAM. Perhatikan bahwa metrik sistem ini tidak berlaku untuk PC desktop. Dalam hal ini, gunakan GetAutoRotationState. |
|
Lebar batas jendela, dalam piksel. Ini setara dengan nilai SM_CXEDGE untuk jendela dengan tampilan 3-D. |
|
Lebar nominal kursor, dalam piksel. |
|
Nilai ini sama dengan SM_CXFIXEDFRAME. |
|
Lebar persegi panjang di sekitar lokasi klik pertama dalam urutan klik ganda, dalam piksel. Klik kedua harus terjadi dalam persegi panjang yang ditentukan oleh SM_CXDOUBLECLK dan SM_CYDOUBLECLK agar sistem mempertimbangkan dua klik sekali klik. Dua klik juga harus terjadi dalam waktu yang ditentukan.
Untuk mengatur lebar persegi panjang klik ganda, panggil SystemParametersInfo dengan SPI_SETDOUBLECLKWIDTH. |
|
Jumlah piksel di salah satu sisi titik bawah mouse yang dapat dipindahkan penunjuk mouse sebelum operasi seret dimulai. Ini memungkinkan pengguna untuk mengklik dan melepaskan tombol mouse dengan mudah tanpa sengaja memulai operasi seret. Jika nilai ini negatif, nilai tersebut dikurangi dari kiri titik mouse ke bawah dan ditambahkan ke kanannya. |
|
Lebar batas 3-D, dalam piksel. Metrik ini adalah rekan 3-D dari SM_CXBORDER. |
|
Ketebalan bingkai di sekitar perimeter jendela yang memiliki caption tetapi tidak dapat diukur, dalam piksel.
SM_CXFIXEDFRAME adalah tinggi batas horizontal, dan SM_CYFIXEDFRAME adalah lebar batas vertikal.
Nilai ini sama dengan SM_CXDLGFRAME. |
|
Lebar tepi kiri dan kanan persegi panjang fokus yang digambar DrawFocusRect . Nilai ini dalam piksel.
Windows 2000: Nilai ini tidak didukung. |
|
Nilai ini sama dengan SM_CXSIZEFRAME. |
|
Lebar area klien untuk jendela layar penuh pada monitor tampilan utama, dalam piksel. Untuk mendapatkan koordinat bagian layar yang tidak dikaburkan oleh taskbar sistem atau oleh toolbar desktop aplikasi, panggil fungsi SystemParametersInfo dengan nilai SPI_GETWORKAREA. |
|
Lebar bitmap panah pada bilah gulir horizontal, dalam piksel. |
|
Lebar kotak jempol di bilah gulir horizontal, dalam piksel. |
|
Lebar ikon besar sistem, dalam piksel. Fungsi LoadIcon hanya dapat memuat ikon dengan dimensi yang SM_CXICON dan SM_CYICON tentukan. Lihat Ukuran Ikon untuk informasi selengkapnya. |
|
Lebar sel kisi untuk item dalam tampilan ikon besar, dalam piksel. Setiap item cocok dengan persegi panjang ukuran SM_CXICONSPACING dengan SM_CYICONSPACING saat disusun. Nilai ini selalu lebih besar dari atau sama dengan SM_CXICON. |
|
Lebar default, dalam piksel, dari jendela tingkat atas yang dimaksimalkan pada monitor tampilan utama. |
|
Lebar maksimum default jendela yang memiliki batas caption dan ukuran, dalam piksel. Metrik ini mengacu pada seluruh desktop. Pengguna tidak dapat menyeret bingkai jendela ke ukuran yang lebih besar dari dimensi ini. Jendela dapat mengganti nilai ini dengan memproses pesan WM_GETMINMAXINFO . |
|
Lebar bitmap tanda centang menu default, dalam piksel. |
|
Lebar tombol bilah menu, seperti tombol tutup jendela anak yang digunakan di beberapa antarmuka dokumen, dalam piksel. |
|
Lebar minimum jendela, dalam piksel. |
|
Lebar jendela yang diminimalkan, dalam piksel. |
|
Lebar sel kisi untuk jendela yang diminimalkan, dalam piksel. Setiap jendela yang diminimalkan cocok dengan persegi panjang ukuran ini saat diatur. Nilai ini selalu lebih besar dari atau sama dengan SM_CXMINIMIZED. |
|
Lebar pelacakan minimum jendela, dalam piksel. Pengguna tidak dapat menyeret bingkai jendela ke ukuran yang lebih kecil dari dimensi ini. Jendela dapat mengganti nilai ini dengan memproses pesan WM_GETMINMAXINFO . |
|
Jumlah padding batas untuk jendela yang disebutkan, dalam piksel.
Windows XP/2000: Nilai ini tidak didukung. |
|
Lebar layar monitor tampilan utama, dalam piksel. Ini adalah nilai yang sama yang diperoleh dengan memanggil GetDeviceCaps sebagai berikut: GetDeviceCaps(
hdcPrimaryMonitor, HORZRES) .
|
|
Lebar tombol di jendela caption atau bilah judul, dalam piksel. |
|
Ketebalan batas ukuran di sekitar perimeter jendela yang dapat diubah ukurannya, dalam piksel.
SM_CXSIZEFRAME adalah lebar batas horizontal, dan SM_CYSIZEFRAME adalah tinggi batas vertikal.
Nilai ini sama dengan SM_CXFRAME. |
|
Lebar kecil sistem ikon, dalam piksel. Ikon kecil biasanya muncul di keterangan jendela dan dalam tampilan ikon kecil. Lihat Ukuran Ikon untuk informasi selengkapnya. |
|
Lebar tombol caption kecil, dalam piksel. |
|
Lebar layar virtual, dalam piksel. Layar virtual adalah persegi panjang pembatas dari semua monitor tampilan. Metrik SM_XVIRTUALSCREEN adalah koordinat untuk sisi kiri layar virtual. |
|
Lebar bilah gulir vertikal, dalam piksel. |
|
Tinggi batas jendela, dalam piksel. Ini setara dengan nilai SM_CYEDGE untuk jendela dengan tampilan 3-D. |
|
Tinggi area caption, dalam piksel. |
|
Tinggi nominal kursor, dalam piksel. |
|
Nilai ini sama dengan SM_CYFIXEDFRAME. |
|
Tinggi persegi panjang di sekitar lokasi klik pertama dalam urutan klik ganda, dalam piksel. Klik kedua harus terjadi dalam persegi panjang yang ditentukan oleh SM_CXDOUBLECLK dan SM_CYDOUBLECLK agar sistem mempertimbangkan dua klik klik dua kali. Dua klik juga harus terjadi dalam waktu yang ditentukan.
Untuk mengatur tinggi persegi panjang klik ganda, panggil SystemParametersInfo dengan SPI_SETDOUBLECLKHEIGHT. |
|
Jumlah piksel di atas dan di bawah titik mouse-bawah yang dapat dipindahkan penunjuk mouse sebelum operasi seret dimulai. Ini memungkinkan pengguna untuk mengklik dan melepaskan tombol mouse dengan mudah tanpa sengaja memulai operasi seret. Jika nilai ini negatif, nilai tersebut dikurangi dari atas titik tetikus-ke-bawah dan ditambahkan di bawahnya. |
|
Tinggi batas 3-D, dalam piksel. Ini adalah rekan 3-D dari SM_CYBORDER. |
|
Ketebalan bingkai di sekitar perimeter jendela yang memiliki caption tetapi tidak cukup besar, dalam piksel.
SM_CXFIXEDFRAME adalah tinggi batas horizontal, dan SM_CYFIXEDFRAME adalah lebar batas vertikal.
Nilai ini sama dengan SM_CYDLGFRAME. |
|
Tinggi tepi atas dan bawah persegi panjang fokus yang digambar oleh DrawFocusRect. Nilai ini dalam piksel.
Windows 2000: Nilai ini tidak didukung. |
|
Nilai ini sama dengan SM_CYSIZEFRAME. |
|
Tinggi area klien untuk jendela layar penuh pada monitor tampilan utama, dalam piksel. Untuk mendapatkan koordinat bagian layar yang tidak dikaburkan oleh taskbar sistem atau oleh toolbar desktop aplikasi, panggil fungsi SystemParametersInfo dengan nilai SPI_GETWORKAREA. |
|
Tinggi bilah gulir horizontal, dalam piksel. |
|
Tinggi besar sistem ikon, dalam piksel. Fungsi LoadIcon hanya dapat memuat ikon dengan dimensi yang SM_CXICON dan SM_CYICON tentukan. Lihat Ukuran Ikon untuk informasi selengkapnya. |
|
Tinggi sel kisi untuk item dalam tampilan ikon besar, dalam piksel. Setiap item cocok dengan persegi panjang ukuran SM_CXICONSPACING dengan SM_CYICONSPACING saat disusun. Nilai ini selalu lebih besar dari atau sama dengan SM_CYICON. |
|
Untuk versi set karakter byte ganda dari sistem, ini adalah tinggi jendela Kanji di bagian bawah layar, dalam piksel. |
|
Tinggi default, dalam piksel, dari jendela tingkat atas yang dimaksimalkan pada monitor tampilan utama. |
|
Tinggi maksimum default jendela yang memiliki batas caption dan ukuran, dalam piksel. Metrik ini mengacu pada seluruh desktop. Pengguna tidak dapat menyeret bingkai jendela ke ukuran yang lebih besar dari dimensi ini. Jendela dapat mengambil alih nilai ini dengan memproses pesan WM_GETMINMAXINFO . |
|
Tinggi bilah menu satu baris, dalam piksel. |
|
Tinggi bitmap tanda centang menu default, dalam piksel. |
|
Tinggi tombol bilah menu, seperti tombol tutup jendela anak yang digunakan di beberapa antarmuka dokumen, dalam piksel. |
|
Tinggi minimum jendela, dalam piksel. |
|
Tinggi jendela yang diminimalkan, dalam piksel. |
|
Tinggi sel kisi untuk jendela yang diminimalkan, dalam piksel. Setiap jendela yang diminimalkan cocok dengan persegi panjang ukuran ini saat disusun. Nilai ini selalu lebih besar dari atau sama dengan SM_CYMINIMIZED. |
|
Tinggi pelacakan minimum jendela, dalam piksel. Pengguna tidak dapat menyeret bingkai jendela ke ukuran yang lebih kecil dari dimensi ini. Jendela dapat mengambil alih nilai ini dengan memproses pesan WM_GETMINMAXINFO . |
|
Tinggi layar monitor tampilan utama, dalam piksel. Ini adalah nilai yang sama yang diperoleh dengan memanggil GetDeviceCaps sebagai berikut: GetDeviceCaps(
hdcPrimaryMonitor, VERTRES) .
|
|
Tinggi tombol di jendela caption atau bilah judul, dalam piksel. |
|
Ketebalan batas ukuran di sekitar perimeter jendela yang dapat diubah ukurannya, dalam piksel.
SM_CXSIZEFRAME adalah lebar batas horizontal, dan SM_CYSIZEFRAME adalah tinggi batas vertikal.
Nilai ini sama dengan SM_CYFRAME. |
|
Tinggi caption kecil, dalam piksel. |
|
Tinggi kecil sistem ikon, dalam piksel. Ikon kecil biasanya muncul dalam keterangan jendela dan dalam tampilan ikon kecil. Lihat Ukuran Ikon untuk informasi selengkapnya. |
|
Tinggi tombol caption kecil, dalam piksel. |
|
Tinggi layar virtual, dalam piksel. Layar virtual adalah persegi panjang pembatas dari semua monitor tampilan. Metrik SM_YVIRTUALSCREEN adalah koordinat untuk bagian atas layar virtual. |
|
Tinggi bitmap panah pada bilah gulir vertikal, dalam piksel. |
|
Tinggi kotak jempol di bilah gulir vertikal, dalam piksel. |
|
Bukan nol jika User32.dll mendukung DBCS; jika tidak, 0. |
|
Bukan nol jika versi debug User.exe diinstal; jika tidak, 0. |
|
Bukan nol jika sistem operasi saat ini adalah Windows 7 atau Windows Server 2008 R2 dan layanan Input PC Tablet dimulai; jika tidak, 0. Nilai yang dikembalikan adalah bitmask yang menentukan jenis input digitizer yang didukung oleh perangkat. Untuk informasi selengkapnya, lihat Keterangan.
Windows Server 2008, Windows Vista, dan Windows XP/2000: Nilai ini tidak didukung. |
|
Bukan nol jika Metode Input Manager/Metode Input Editor fitur diaktifkan; jika tidak, 0.
SM_IMMENABLED menunjukkan apakah sistem siap menggunakan IME berbasis Unicode pada aplikasi Unicode. Untuk memastikan bahwa IME yang bergantung pada bahasa berfungsi, periksa SM_DBCSENABLED dan halaman kode ANSI sistem. Jika tidak, konversi ANSI-ke-Unicode mungkin tidak dilakukan dengan benar, atau beberapa komponen seperti font atau pengaturan registri mungkin tidak ada. |
|
Bukan nol jika ada digitizer dalam sistem; jika tidak, 0.
SM_MAXIMUMTOUCHES mengembalikan maksimum agregat dari jumlah maksimum kontak yang didukung oleh setiap digitizer dalam sistem. Jika sistem hanya memiliki digitizer sentuhan tunggal, nilai yang dikembalikan adalah 1. Jika sistem memiliki digitizer multi-sentuh, nilai yang dikembalikan adalah jumlah kontak simultan yang dapat disediakan perangkat keras. Windows Server 2008, Windows Vista, dan Windows XP/2000: Nilai ini tidak didukung. |
|
Bukan nol jika sistem operasi saat ini adalah Windows XP, Media Center Edition, 0 jika tidak. |
|
Bukan nol jika menu drop-down diratakan kanan dengan item bilah menu yang sesuai; 0 jika menu rata kiri. |
|
Bukan nol jika sistem diaktifkan untuk bahasa Ibrani dan Arab, 0 jika tidak. |
|
Bukan nol jika mouse dipasang; jika tidak, 0. Nilai ini jarang nol, karena dukungan untuk tikus virtual dan karena beberapa sistem mendeteksi keberadaan port alih-alih kehadiran mouse. |
|
Bukan nol jika mouse dengan roda gulir horizontal dipasang; jika tidak, 0. |
|
Bukan nol jika mouse dengan roda gulir vertikal dipasang; jika tidak, 0. |
|
Bit yang paling tidak signifikan diatur jika ada jaringan; jika tidak, itu dibersihkan. Bit lainnya dicadangkan untuk digunakan di masa mendatang. |
|
Bukan nol jika ekstensi komputasi Microsoft Windows for Pen diinstal; nol jika tidak. |
|
Metrik sistem ini digunakan di lingkungan Layanan Terminal untuk menentukan apakah sesi Server Terminal saat ini sedang dikontrol dari jarak jauh. Nilainya bukan nol jika sesi saat ini dikontrol dari jarak jauh; jika tidak, 0.
Anda dapat menggunakan alat manajemen layanan terminal seperti Terminal Services Manager (tsadmin.msc) dan shadow.exe untuk mengontrol sesi jarak jauh. Ketika sesi dikontrol dari jarak jauh, pengguna lain dapat melihat konten sesi tersebut dan berpotensi berinteraksi dengannya. |
|
Metrik sistem ini digunakan di lingkungan Layanan Terminal. Jika proses panggilan dikaitkan dengan sesi klien Layanan Terminal, nilai yang dikembalikan bukan nol. Jika proses panggilan dikaitkan dengan sesi konsol Layanan Terminal, nilai yang dikembalikan adalah 0. Windows Server 2003 dan Windows XP: Sesi konsol belum tentu merupakan konsol fisik. Untuk informasi selengkapnya, lihat WTSGetActiveConsoleSessionId. |
|
Bukan nol jika semua monitor tampilan memiliki format warna yang sama, jika tidak, 0. Dua tampilan dapat memiliki kedalaman bit yang sama, tetapi format warna yang berbeda. Misalnya, piksel merah, hijau, dan biru dapat dikodekan dengan jumlah bit yang berbeda, atau bit tersebut dapat ditemukan di tempat yang berbeda dalam nilai warna piksel. |
|
Metrik sistem ini harus diabaikan; selalu mengembalikan 0. |
|
Nomor build jika sistem adalah Windows Server 2003 R2; jika tidak, 0. |
|
Bukan nol jika pengguna mengharuskan aplikasi untuk menyajikan informasi secara visual dalam situasi di mana ia akan menyajikan informasi hanya dalam bentuk yang dapat didengar; jika tidak, 0. |
|
Bukan nol jika sesi saat ini dimatikan; jika tidak, 0.
Windows 2000: Nilai ini tidak didukung. |
|
Bukan nol jika komputer memiliki prosesor low-end (lambat) ; jika tidak, 0. |
|
Bukan nol jika sistem operasi saat ini adalah Windows 7 Starter Edition, Windows Vista Starter, atau Windows XP Starter Edition; jika tidak, 0. |
|
Bukan nol jika arti tombol mouse kiri dan kanan ditukar; jika tidak, 0. |
|
Mencerminkan status mode docking, 0 untuk Mode Tidak Ditangguhkan dan bukan nol sebaliknya. Ketika metrik sistem ini berubah, sistem mengirim pesan siaran melalui WM_SETTINGCHANGE dengan "SystemDockMode" di LPARAM. |
|
Bukan nol jika sistem operasi saat ini adalah edisi PC Tablet Windows XP atau jika sistem operasi saat ini adalah Windows Vista atau Windows 7 dan layanan Input PC Tablet dimulai; jika tidak, 0. Pengaturan SM_DIGITIZER menunjukkan jenis input digitizer yang didukung oleh perangkat yang menjalankan Windows 7 atau Windows Server 2008 R2. Untuk informasi selengkapnya, lihat Keterangan. |
|
Koordinat untuk sisi kiri layar virtual. Layar virtual adalah persegi panjang pembatas dari semua monitor tampilan. Metrik SM_CXVIRTUALSCREEN adalah lebar layar virtual. |
|
Koordinat untuk bagian atas layar virtual. Layar virtual adalah persegi panjang pembatas dari semua monitor tampilan. Metrik SM_CYVIRTUALSCREEN adalah tinggi layar virtual. |
Nilai kembali
Jenis: int
Jika fungsi berhasil, nilai yang dikembalikan adalah metrik sistem atau pengaturan konfigurasi yang diminta.
Jika fungsi gagal, nilai yang dikembalikan adalah 0. GetLastError tidak memberikan informasi kesalahan yang diperluas.
Keterangan
Metrik sistem dapat bervariasi dari tampilan ke tampilan.
GetSystemMetrics(SM_CMONITORS) hanya menghitung monitor tampilan yang terlihat. Ini berbeda dari EnumDisplayMonitors, yang menghitung monitor tampilan yang terlihat dan pseudo-monitor yang tidak terlihat yang terkait dengan driver pencerminan. Pseudo-monitor yang tidak terlihat dikaitkan dengan perangkat semu yang digunakan untuk mencerminkan gambar aplikasi untuk jarak jauh atau tujuan lainnya.
Pengaturan SM_ARRANGE menentukan bagaimana sistem mengatur jendela yang diminimalkan, dan terdiri dari posisi awal dan arah. Posisi awal bisa menjadi salah satu nilai berikut.
Nilai | Makna |
---|---|
ARW_BOTTOMLEFT | Mulai di sudut kiri bawah layar. Posisi default. |
ARW_BOTTOMRIGHT | Mulai di sudut kanan bawah layar. Setara dengan ARW_STARTRIGHT. |
ARW_TOPLEFT | Mulai di sudut kiri atas layar. Setara dengan ARW_STARTTOP. |
ARW_TOPRIGHT | Mulai di sudut kanan atas layar. Setara dengan ARW_STARTTOP | SRW_STARTRIGHT. |
Arah untuk mengatur jendela yang diminimalkan dapat menjadi salah satu nilai berikut.
Nilai | Makna |
---|---|
ARW_DOWN | Atur secara vertikal, atas ke bawah. |
ARW_HIDE | Sembunyikan jendela yang diminimalkan dengan memindahkannya dari area layar yang terlihat. |
ARW_LEFT | Atur secara horizontal, kiri ke kanan. |
ARW_RIGHT | Atur secara horizontal, kanan ke kiri. |
ARW_UP | Atur secara vertikal, bawah ke atas. |
Pengaturan SM_DIGITIZER menentukan jenis digitizer yang diinstal pada perangkat yang menjalankan Windows 7 atau Windows Server 2008 R2. Nilai yang dikembalikan adalah bitmask yang menentukan satu atau beberapa nilai berikut.
Nilai | Makna |
---|---|
NID_INTEGRATED_TOUCH 0x01 |
Perangkat ini memiliki digitizer sentuh terintegrasi. |
NID_EXTERNAL_TOUCH 0x02 |
Perangkat memiliki digitizer sentuh eksternal. |
NID_INTEGRATED_PEN 0x04 |
Perangkat ini memiliki digitizer pena terintegrasi. |
NID_EXTERNAL_PEN 0x08 |
Perangkat memiliki digitizer pena eksternal. |
NID_MULTI_INPUT 0x40 |
Perangkat mendukung beberapa sumber input digitizer. |
NID_READY 0x80 |
Perangkat siap menerima input digitizer. |
API ini tidak sadar DPI, dan tidak boleh digunakan jika utas panggilan sadar DPI per monitor. Untuk versi API yang sadar DPI, lihat GetSystemMetricsForDPI. Untuk informasi selengkapnya tentang kesadaran DPI, lihat dokumentasi DPI Tinggi Windows.
Contoh
Contoh berikut menggunakan fungsi GetSystemMetrics untuk menentukan apakah mouse diinstal dan apakah tombol mouse ditukar. Contohnya juga menggunakan fungsi SystemParametersInfo untuk mengambil ambang dan kecepatan mouse. Ini menampilkan informasi di konsol.
#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]);
}
}
}
Persyaratan
Persyaratan | Nilai |
---|---|
Klien minimum yang didukung | Windows 2000 Professional [hanya aplikasi desktop] |
Server minimum yang didukung | Windows 2000 Server [hanya aplikasi desktop] |
Target Platform | Windows |
Header | winuser.h (sertakan Windows.h) |
Pustaka | User32.lib |
DLL | User32.dll |
Set API | ext-ms-win-ntuser-sysparams-ext-l1-1-0 (diperkenalkan dalam Windows 8) |