GetSystemMetrics
Zwraca ustawienia metryki systemu.
Niestety, nie wszystkie wartości funkcji podane przez Microsoft zostały przetłumaczone przeze mnie. Za utrudnienia przepraszam.
Wzór:
Parametr funkcji
Funkcja wymaga wartości integer z poniższej listy udostępnionych przez Microsoft:
SM_ARRANGE = 56
Flaga określająca sposób minimalizacji okien. Nie wiem, co dokładnie oznacza.
SM_CLEANBOOT = 67
Ta wartość określa rodzaj startu systemu:
* 0 normalny
* 1 tryb awaryjny
* 2 tryb awaryjny z obsługą sieci
Tryb awaryjny nie uruchamia plików znajdujących się w autostarcie użytkownika.
SM_CMONITORS = 80
Liczba monitorów wykrytych przez system.
SM_CMOUSEBUTTONS = 43
Liczba przycisków w myszce. Zwraca 0, jeżeli myszka nie jest zainstalowana.
SM_CXBORDER = 5
Szerokość tablicy formularza.
SM_CXCURSOR = 13
Szerokość kursora myszy. System nie może obsłużyć ani stworzyć innych wymiarów.
SM_CXDLGFRAME = 7
Takie same znaczenie jak SM_CXFIXEDFRAME.
SM_CXDOUBLECLK = 36
Tolerancja przesunięcia kursora myszy w poziomie przy podwójnym kliknięciu w pikselach.
SM_CXDRAG = 68
Ilość pikseli którą może się poruszyć myszka z wciśniętym przyciskiem zanim rozpocznie się operacja przeciągania.
SM_CXEDGE = 45
Rozmiar lini 3D w pikselach.
SM_CXFIXEDFRAME = 7
Nie wiem co to.
SM_CXFOCUSBORDER = 83
Nie wiem co to.
Windows 2000: Ta wartość nie jest obsługiwana.
SM_CXFRAME = 32
Wartość jest taka sama jak SM_CXSIZEFRAME.
SM_CXFULLSCREEN = 16
Szerokość okna klienta w trybie pełnoekranowym na pierwotnym monitorze, w pikselach.
SM_CXHSCROLL = 21
Szerokość poziomego scrolla, w pikselach.
SM_CXHTHUMB = 10
Szerokość suwaka(ten pasek między strzałkami) na poziomym scrollu, w pikselach.
SM_CXICON = 11
Domyślna szerokość ikony, w pikselach.
SM_CXICONSPACING = 38
Szerokość siatki ikon w folderach i na pulpicie, w pikselach.
SM_CXMAXIMIZED = 61
Domyślna szerokość zmaksylizowanego okna, w pikselach.
SM_CXMAXTRACK = 59
Domyślna szerokość okna, które jest typu bsSizeable.
SM_CXMENUCHECK = 71
Szerokość domyślnego menu check-mark(taki ptaszek), w pikselach.
SM_CXMENUSIZE = 54
Szerokość pozycji w main menu, w pikselach.
SM_CXMIN = 28
Minimalna szerokość okna, w pikselach.
SM_CXMINIMIZED = 57
Szerokość zminimalizowanego okna, w pikselach.
SM_CXMINSPACING = 47
Odległość między zakładkami aplikacji, w pikselach.
SM_CXMINTRACK = 34
Nie wiem co to.
SM_CXPADDEDBORDER = 92
Nie wiem co to.
Windows XP/2000: Wartość nie obsługiwana.
SM_CXSCREEN = 0
Szerokość ekranu domyślnego monitora, w pikselach.
SM_CXSIZE = 30
Szerokość przycisków w pasku tytułowym aplikacji.
SM_CXSIZEFRAME = 32
Nie wiem co to.
Ta wartość jest taka sama dla SM_CXFRAME.
SM_CXSMICON = 49
Zalecana szerokość dla małych ikon(np. pasek tytułowy aplikacji), w pikselach.
SM_CXSMSIZE = 52
Szerokość etykiety przycisku, w pikselach.
SM_CXVIRTUALSCREEN = 78
Szerokość wirtualnego ekranu, w pikselach.
SM_CXVSCROLL = 2
Szerokość pionowego scrolla, w pikselach.
SM_CYBORDER = 6
Wysokość powierzchni okna, w pikselach.
SM_CYCAPTION = 4
Wysokość strefy caption, w pikselach.
SM_CYCURSOR = 14
Wysokość kursora, w pikselach.
SM_CYDLGFRAME = 8
Ta wartość jest taka sama jak SM_CYFIXEDFRAME.
SM_CYDOUBLECLK = 37
Tolerancja przesunięcia kursora w wysokości przy podwójnym kliknięciu, w pikselach.
SM_CYDRAG = 69
Patrz SM_CXDRAG.
SM_CYEDGE = 46
Nie wiem co to.
SM_CYFIXEDFRAME = 8
Nie wiem, co to.
SM_CYFOCUSBORDER = 84
Wysokość prostokąta fokusa, w pikselach.
Windows 2000: Ta wartość nie jest obsługiwana.
SM_CYFRAME = 33
Wartość jest taka sama jak SM_CYSIZEFRAME.
SM_CYFULLSCREEN = 17
Wysokość okna klienta, w pikselach.
SM_CYHSCROLL = 3
Wysokość poziomego scrolla, w pikselach.
SM_CYICON = 12
Domyślna wysokość ikon, w pikselach.
SM_CYICONSPACING = 39
Wysokość siatki ikon, w pikselach.
SM_CYKANJIWINDOW = 18
Wysokość okna kanji, w pikselach.
SM_CYMAXIMIZED = 62
Domyślna wysokość zmaksylizowanego okna, w pikselach.
SM_CYMAXTRACK = 60
Domyślna wysokość okna typu bsNormal, w pikselach.
SM_CYMENU = 15
Wysokość pozycji w main menu, w pikselach.
SM_CYMENUCHECK = 72
Wysokość menu check-mark(taki ptaszek), w pikselach.
SM_CYMENUSIZE = 55
Wysokość pozycji main menu, w pikselach.
SM_CYMIN = 29
Minimalna wysokość okna, w pikselach.
SM_CYMINIMIZED = 58
Wysokość zminimalizowanego okna, w pikselach.
SM_CYMINSPACING = 48
Wysokość zakładki aplikacji na pasku narzedziowym Windows, w pikselach.
SM_CYMINTRACK = 35
Nie wiem co to.
SM_CYSCREEN = 1
Wysokość ekranu domyślnego monitora, w pikselach.
SM_CYSIZE = 31
Wysokość przycisków w pasku tytułowym okna, w pikselach.
SM_CYSIZEFRAME = 33
Nie wiem co to.
SM_CYSMCAPTION = 51
Wysokość małego opisu, w pikselach.
SM_CYSMICON = 50
Zalecana wysokość małych ikon(np. w pasku tytułowym aplikacji) w pikselach.
SM_CYSMSIZE = 53
Wysokość małych opisów, w pikselach.
SM_CYVIRTUALSCREEN = 79
Wysokość wirtualnego ekranu, w pikselach.
SM_CYVSCROLL = 20
Wysokość pionowego scrolla, w pikselach.
SM_CYVTHUMB = 9
Wysokość suwaka(tego paska) scrolla w pikselach.
SM_DBCSENABLED = 42
Zwraca niezerową wartość jeżeli używana jest biblioteka User32.dll wspierająca DBCS.
SM_DEBUG = 22
Zwraca niezerową wartość jeżeli wersja debug User.exe jest zainstalowana.
SM_IMMENABLED = 82
Zwraca niezerową wartość jeżeli pochodne Input Method Manager/Input Method Editor są włączone.
SM_MEDIACENTER = 87
Zwraca niezerową wartość jeżeli bieżą cy system operacyjny to XP lub Media Center Edition.
SM_MENUDROPALIGNMENT = 40
Nie wiem co to.
SM_MIDEASTENABLED = 74
Zwraca niezerową wartość jeżeli system ma włączoną obsługę Hebrajskiego lub Arabskiego języka.
SM_MOUSEPRESENT = 19
Zwraca niezerową wartość jeżeli mysz jest zainstalowana.
SM_MOUSEHORIZONTALWHEELPRESENT = 91
Zwraca niezerową wartość jeżeli zainstalowana mysz posiada kółko poziomego scrollowania.
SM_MOUSEWHEELPRESENT = 75
Zwraca niezerową wartość jeżeli zainstalowana mysz posiada kółko.
SM_NETWORK = 63
Nie wiem co to.
SM_PENWINDOWS = 41
Nie zero jeśli dodatek Microsoft Windows for Pen zainstalowany. W innym przypadku 0.
SM_REMOTECONTROL = 0x2001
Zwraca niezerową wartość jeżeli bieżąca sesja jest zdalnie sterowana.
SM_REMOTESESSION = 0x1000
Nie wiem co to.
SM_SAMEDISPLAYFORMAT = 81
Zwraca niezerową wartość jeżeli wszystkie monitory mają takie same profile kolorów.
SM_SECURE = 44
Zawsze zwraca 0. Ignorować.
SM_SERVERR2 = 89
Zwraca wartość wersji Windows Server 2003 R2. Jeżeli nie ma tego, zwraca 0.
SM_SHOWSOUNDS = 70
Zero jeśli użytkownik nie wymaga od aplikacji(i) prezentowania danych w formie wizualnej i dźwiękowej. Normalnie aplikacja prezentowałaby informacje tylko w formie dźwiękowej. W innym przypadku nie zero.
SM_SHUTTINGDOWN = 0x2000
Zwraca niezerową wartość jeżeli bieżąca sesja jest zamykana.
Windows 2000: Ta wartość nie jest obsługiwana.
SM_SLOWMACHINE = 73
Zwraca niezerową wartość jeżeli komputer posiada wolny procesor.
SM_STARTER = 88
Zwraca niezerową wartość jeżelibieżący system to Windows XP Starter Edition.
SM_SWAPBUTTON = 23
Zwraca niezerową wartość jeżeli przyciski myszy są zamienione.
SM_TABLETPC = 86
Zwraca niezerową wartość jeżeli bieżący system to Windows XP Tablet PC edition.
SM_XVIRTUALSCREEN = 76
Koordynaty pozycji X wirtualnego monitora.
SM_YVIRTUALSCREEN = 77
Koordynaty pozycji Y wirtualnego monitora.
Zwracane wartości, ogółem
Jeżeli wykonanie funkcji się powiedze, zostanie zwrócona wartość argumentu w przeciwnym razie funkcja zwraca 0. GetLastError nieuwzględnia tej funkcji.
Pliki nagłówkowe: Winuser.h; include Windows.h.
Biblioteki .lib
User32.lib.
Biblioteki .DLL
User32.dll.
Jak widać ta funkcja daje wiele możliwości wykorzystania.
Źródło:
http://msdn.microsoft.com/en-us/library/ms724385.aspx
// dodane SM_CXDRAG i SM_SHOWSOUNDS by sasser.64
Niestety, nie wszystkie wartości funkcji podane przez Microsoft zostały przetłumaczone przeze mnie. Za utrudnienia przepraszam.
Wzór:
int WINAPI GetSystemMetrics( int nIndex ) ;
Parametr funkcji
nIndex[ in ]
Funkcja wymaga wartości integer z poniższej listy udostępnionych przez Microsoft:
SM_ARRANGE = 56
Flaga określająca sposób minimalizacji okien. Nie wiem, co dokładnie oznacza.
SM_CLEANBOOT = 67
Ta wartość określa rodzaj startu systemu:
* 0 normalny
* 1 tryb awaryjny
* 2 tryb awaryjny z obsługą sieci
Tryb awaryjny nie uruchamia plików znajdujących się w autostarcie użytkownika.
SM_CMONITORS = 80
Liczba monitorów wykrytych przez system.
SM_CMOUSEBUTTONS = 43
Liczba przycisków w myszce. Zwraca 0, jeżeli myszka nie jest zainstalowana.
SM_CXBORDER = 5
Szerokość tablicy formularza.
SM_CXCURSOR = 13
Szerokość kursora myszy. System nie może obsłużyć ani stworzyć innych wymiarów.
SM_CXDLGFRAME = 7
Takie same znaczenie jak SM_CXFIXEDFRAME.
SM_CXDOUBLECLK = 36
Tolerancja przesunięcia kursora myszy w poziomie przy podwójnym kliknięciu w pikselach.
SM_CXDRAG = 68
Ilość pikseli którą może się poruszyć myszka z wciśniętym przyciskiem zanim rozpocznie się operacja przeciągania.
SM_CXEDGE = 45
Rozmiar lini 3D w pikselach.
SM_CXFIXEDFRAME = 7
Nie wiem co to.
SM_CXFOCUSBORDER = 83
Nie wiem co to.
Windows 2000: Ta wartość nie jest obsługiwana.
SM_CXFRAME = 32
Wartość jest taka sama jak SM_CXSIZEFRAME.
SM_CXFULLSCREEN = 16
Szerokość okna klienta w trybie pełnoekranowym na pierwotnym monitorze, w pikselach.
SM_CXHSCROLL = 21
Szerokość poziomego scrolla, w pikselach.
SM_CXHTHUMB = 10
Szerokość suwaka(ten pasek między strzałkami) na poziomym scrollu, w pikselach.
SM_CXICON = 11
Domyślna szerokość ikony, w pikselach.
SM_CXICONSPACING = 38
Szerokość siatki ikon w folderach i na pulpicie, w pikselach.
SM_CXMAXIMIZED = 61
Domyślna szerokość zmaksylizowanego okna, w pikselach.
SM_CXMAXTRACK = 59
Domyślna szerokość okna, które jest typu bsSizeable.
SM_CXMENUCHECK = 71
Szerokość domyślnego menu check-mark(taki ptaszek), w pikselach.
SM_CXMENUSIZE = 54
Szerokość pozycji w main menu, w pikselach.
SM_CXMIN = 28
Minimalna szerokość okna, w pikselach.
SM_CXMINIMIZED = 57
Szerokość zminimalizowanego okna, w pikselach.
SM_CXMINSPACING = 47
Odległość między zakładkami aplikacji, w pikselach.
SM_CXMINTRACK = 34
Nie wiem co to.
SM_CXPADDEDBORDER = 92
Nie wiem co to.
Windows XP/2000: Wartość nie obsługiwana.
SM_CXSCREEN = 0
Szerokość ekranu domyślnego monitora, w pikselach.
SM_CXSIZE = 30
Szerokość przycisków w pasku tytułowym aplikacji.
SM_CXSIZEFRAME = 32
Nie wiem co to.
Ta wartość jest taka sama dla SM_CXFRAME.
SM_CXSMICON = 49
Zalecana szerokość dla małych ikon(np. pasek tytułowy aplikacji), w pikselach.
SM_CXSMSIZE = 52
Szerokość etykiety przycisku, w pikselach.
SM_CXVIRTUALSCREEN = 78
Szerokość wirtualnego ekranu, w pikselach.
SM_CXVSCROLL = 2
Szerokość pionowego scrolla, w pikselach.
SM_CYBORDER = 6
Wysokość powierzchni okna, w pikselach.
SM_CYCAPTION = 4
Wysokość strefy caption, w pikselach.
SM_CYCURSOR = 14
Wysokość kursora, w pikselach.
SM_CYDLGFRAME = 8
Ta wartość jest taka sama jak SM_CYFIXEDFRAME.
SM_CYDOUBLECLK = 37
Tolerancja przesunięcia kursora w wysokości przy podwójnym kliknięciu, w pikselach.
SM_CYDRAG = 69
Patrz SM_CXDRAG.
SM_CYEDGE = 46
Nie wiem co to.
SM_CYFIXEDFRAME = 8
Nie wiem, co to.
SM_CYFOCUSBORDER = 84
Wysokość prostokąta fokusa, w pikselach.
Windows 2000: Ta wartość nie jest obsługiwana.
SM_CYFRAME = 33
Wartość jest taka sama jak SM_CYSIZEFRAME.
SM_CYFULLSCREEN = 17
Wysokość okna klienta, w pikselach.
SM_CYHSCROLL = 3
Wysokość poziomego scrolla, w pikselach.
SM_CYICON = 12
Domyślna wysokość ikon, w pikselach.
SM_CYICONSPACING = 39
Wysokość siatki ikon, w pikselach.
SM_CYKANJIWINDOW = 18
Wysokość okna kanji, w pikselach.
SM_CYMAXIMIZED = 62
Domyślna wysokość zmaksylizowanego okna, w pikselach.
SM_CYMAXTRACK = 60
Domyślna wysokość okna typu bsNormal, w pikselach.
SM_CYMENU = 15
Wysokość pozycji w main menu, w pikselach.
SM_CYMENUCHECK = 72
Wysokość menu check-mark(taki ptaszek), w pikselach.
SM_CYMENUSIZE = 55
Wysokość pozycji main menu, w pikselach.
SM_CYMIN = 29
Minimalna wysokość okna, w pikselach.
SM_CYMINIMIZED = 58
Wysokość zminimalizowanego okna, w pikselach.
SM_CYMINSPACING = 48
Wysokość zakładki aplikacji na pasku narzedziowym Windows, w pikselach.
SM_CYMINTRACK = 35
Nie wiem co to.
SM_CYSCREEN = 1
Wysokość ekranu domyślnego monitora, w pikselach.
SM_CYSIZE = 31
Wysokość przycisków w pasku tytułowym okna, w pikselach.
SM_CYSIZEFRAME = 33
Nie wiem co to.
SM_CYSMCAPTION = 51
Wysokość małego opisu, w pikselach.
SM_CYSMICON = 50
Zalecana wysokość małych ikon(np. w pasku tytułowym aplikacji) w pikselach.
SM_CYSMSIZE = 53
Wysokość małych opisów, w pikselach.
SM_CYVIRTUALSCREEN = 79
Wysokość wirtualnego ekranu, w pikselach.
SM_CYVSCROLL = 20
Wysokość pionowego scrolla, w pikselach.
SM_CYVTHUMB = 9
Wysokość suwaka(tego paska) scrolla w pikselach.
SM_DBCSENABLED = 42
Zwraca niezerową wartość jeżeli używana jest biblioteka User32.dll wspierająca DBCS.
SM_DEBUG = 22
Zwraca niezerową wartość jeżeli wersja debug User.exe jest zainstalowana.
SM_IMMENABLED = 82
Zwraca niezerową wartość jeżeli pochodne Input Method Manager/Input Method Editor są włączone.
SM_MEDIACENTER = 87
Zwraca niezerową wartość jeżeli bieżą cy system operacyjny to XP lub Media Center Edition.
SM_MENUDROPALIGNMENT = 40
Nie wiem co to.
SM_MIDEASTENABLED = 74
Zwraca niezerową wartość jeżeli system ma włączoną obsługę Hebrajskiego lub Arabskiego języka.
SM_MOUSEPRESENT = 19
Zwraca niezerową wartość jeżeli mysz jest zainstalowana.
SM_MOUSEHORIZONTALWHEELPRESENT = 91
Zwraca niezerową wartość jeżeli zainstalowana mysz posiada kółko poziomego scrollowania.
SM_MOUSEWHEELPRESENT = 75
Zwraca niezerową wartość jeżeli zainstalowana mysz posiada kółko.
SM_NETWORK = 63
Nie wiem co to.
SM_PENWINDOWS = 41
Nie zero jeśli dodatek Microsoft Windows for Pen zainstalowany. W innym przypadku 0.
SM_REMOTECONTROL = 0x2001
Zwraca niezerową wartość jeżeli bieżąca sesja jest zdalnie sterowana.
SM_REMOTESESSION = 0x1000
Nie wiem co to.
SM_SAMEDISPLAYFORMAT = 81
Zwraca niezerową wartość jeżeli wszystkie monitory mają takie same profile kolorów.
SM_SECURE = 44
Zawsze zwraca 0. Ignorować.
SM_SERVERR2 = 89
Zwraca wartość wersji Windows Server 2003 R2. Jeżeli nie ma tego, zwraca 0.
SM_SHOWSOUNDS = 70
Zero jeśli użytkownik nie wymaga od aplikacji(i) prezentowania danych w formie wizualnej i dźwiękowej. Normalnie aplikacja prezentowałaby informacje tylko w formie dźwiękowej. W innym przypadku nie zero.
SM_SHUTTINGDOWN = 0x2000
Zwraca niezerową wartość jeżeli bieżąca sesja jest zamykana.
Windows 2000: Ta wartość nie jest obsługiwana.
SM_SLOWMACHINE = 73
Zwraca niezerową wartość jeżeli komputer posiada wolny procesor.
SM_STARTER = 88
Zwraca niezerową wartość jeżelibieżący system to Windows XP Starter Edition.
SM_SWAPBUTTON = 23
Zwraca niezerową wartość jeżeli przyciski myszy są zamienione.
SM_TABLETPC = 86
Zwraca niezerową wartość jeżeli bieżący system to Windows XP Tablet PC edition.
SM_XVIRTUALSCREEN = 76
Koordynaty pozycji X wirtualnego monitora.
SM_YVIRTUALSCREEN = 77
Koordynaty pozycji Y wirtualnego monitora.
Zwracane wartości, ogółem
Jeżeli wykonanie funkcji się powiedze, zostanie zwrócona wartość argumentu w przeciwnym razie funkcja zwraca 0. GetLastError nieuwzględnia tej funkcji.
Pliki nagłówkowe: Winuser.h; include Windows.h.
Biblioteki .lib
User32.lib.
Biblioteki .DLL
User32.dll.
Jak widać ta funkcja daje wiele możliwości wykorzystania.
Źródło:
http://msdn.microsoft.com/en-us/library/ms724385.aspx
// dodane SM_CXDRAG i SM_SHOWSOUNDS by sasser.64
Kategoria: WinAPI
3 komentarze
Ok, zajrzę do <url>msdn.microsoft.com</url> i postaram się uaktualnić artykuł
hehe.. GetSystemMetrics już z pół roku jest do napisania, jakoś nikt się za to nie brał, pewnie ze względu na wielkość zagadnienia :>
+ za chęć ruszenia tej funkcji
- za to, że napisałeś o niej bardzo niewiele, należałoby jednak podać jej wszystkie parametry
SM_ARRANGE
zamknij sobie explorer.exe i zacznij minimalizować okna, będą one minimalizowane do belek, tego typu sposoby określa ten parametr...