WinAPI

GetSystemMetrics

  • 2008-08-03 18:08
  • 3 komentarze
  • 2108 odsłon
  • Oceń ten tekst jako pierwszy
Zwraca ustawienia metryki systemu.
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

3 komentarze

crayze 2008-08-03 09:56

SM_ARRANGE
zamknij sobie explorer.exe i zacznij minimalizować okna, będą one minimalizowane do belek, tego typu sposoby określa ten parametr...

komputer098 2008-07-31 18:09

Ok, zajrzę do <url>msdn.microsoft.com</url> i postaram się uaktualnić artykuł

crayze 2008-07-31 17:12

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