GetSystemMetrics

komputer098

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:


<b>SM_ARRANGE = 56</b>	

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.

<b>SM_CMONITORS = 80 </b>	

Liczba monitorów wykrytych przez system.

SM_CMOUSEBUTTONS = 43

Liczba przycisków w myszce. Zwraca 0, jeżeli myszka nie jest zainstalowana.

<b>SM_CXBORDER = 5</b>
	
Szerokość tablicy formularza.

<b>SM_CXCURSOR = 13</b>  	

Szerokość kursora myszy. System nie może obsłużyć ani stworzyć innych wymiarów.

<b>SM_CXDLGFRAME = 7</b>
	

Takie same znaczenie jak SM_CXFIXEDFRAME.


<b>SM_CXDOUBLECLK = 36</b>
	
Tolerancja przesunięcia kursora myszy w poziomie przy podwójnym kliknięciu w pikselach. 

<b>SM_CXDRAG = 68</b>	

Ilość pikseli którą może się poruszyć myszka z wciśniętym przyciskiem zanim rozpocznie się operacja przeciągania.

<b>SM_CXEDGE = 45</b>    	

Rozmiar lini 3D w pikselach.

<b>SM_CXFIXEDFRAME = 7</b>    	

Nie wiem co to.

<b>SM_CXFOCUSBORDER = 83</b>
	
Nie wiem co to.
    Windows 2000:  Ta wartość nie jest obsługiwana.

<b>SM_CXFRAME = 32</b>
	
Wartość jest taka sama jak SM_CXSIZEFRAME.

<b>SM_CXFULLSCREEN = 16</b>   	

Szerokość okna klienta w trybie pełnoekranowym na pierwotnym monitorze, w pikselach.


<b>SM_CXHSCROLL = 21</b>
	

Szerokość poziomego scrolla, w pikselach.


<b>SM_CXHTHUMB = 10</b>
	

Szerokość suwaka(ten pasek między strzałkami) na poziomym scrollu, w pikselach.


<b>SM_CXICON = 11</b>
	

Domyślna szerokość ikony, w pikselach.


<b>SM_CXICONSPACING = 38</b>    	

Szerokość siatki ikon w folderach i na pulpicie, w pikselach.


<b>SM_CXMAXIMIZED = 61</b>
	

Domyślna szerokość zmaksylizowanego okna, w pikselach.


<b>SM_CXMAXTRACK = 59</b>
	

Domyślna szerokość okna, które jest typu bsSizeable.


<b>SM_CXMENUCHECK = 71</b>
	
Szerokość domyślnego menu check-mark(taki ptaszek), w pikselach.

<b>SM_CXMENUSIZE = 54</b>
	
Szerokość pozycji w main menu, w pikselach.

<b>SM_CXMIN = 28</b>

Minimalna szerokość okna, w pikselach.

<b>SM_CXMINIMIZED = 57</b>
	
Szerokość zminimalizowanego okna, w pikselach.

<b>SM_CXMINSPACING = 47</b>
	
Odległość między zakładkami aplikacji, w pikselach.

<b>SM_CXMINTRACK = 34</b>    	

Nie wiem co to.

<b>SM_CXPADDEDBORDER = 92</b>	

Nie wiem co to.

    Windows XP/2000:  Wartość nie obsługiwana.

<b>SM_CXSCREEN = 0</b>
	

Szerokość ekranu domyślnego monitora, w pikselach.


<b>SM_CXSIZE = 30</b>
	
Szerokość przycisków w pasku tytułowym aplikacji.

<b>SM_CXSIZEFRAME = 32</b>
	
Nie wiem co to.

Ta wartość jest taka sama dla SM_CXFRAME.

<b>SM_CXSMICON = 49</b>
	
Zalecana szerokość dla małych ikon(np. pasek tytułowy aplikacji), w pikselach.

<b>SM_CXSMSIZE = 52</b>
	
Szerokość etykiety przycisku, w pikselach.

<b>SM_CXVIRTUALSCREEN = 78</b>
	
Szerokość wirtualnego ekranu, w pikselach.

<b>SM_CXVSCROLL = 2</b>
	
Szerokość pionowego scrolla, w pikselach.

<b>SM_CYBORDER = 6</b>
	
Wysokość powierzchni okna, w pikselach.

<b>SM_CYCAPTION = 4</b>	

Wysokość strefy caption, w pikselach.

<b>SM_CYCURSOR = 14</b>	

Wysokość kursora, w pikselach.

<b>SM_CYDLGFRAME = 8</b>
	
Ta wartość jest taka sama jak SM_CYFIXEDFRAME.

<b>SM_CYDOUBLECLK = 37</b>
	
Tolerancja przesunięcia kursora w wysokości przy podwójnym kliknięciu, w pikselach.

<b>SM_CYDRAG = 69</b>	

Patrz SM_CXDRAG.

<b>SM_CYEDGE = 46</b>

Nie wiem co to.

<b>SM_CYFIXEDFRAME = 8</b>
	
Nie wiem, co to.

SM_CYFOCUSBORDER = 84

Wysokość prostokąta fokusa, w pikselach.
    Windows 2000:  Ta wartość nie jest obsługiwana.

<b>SM_CYFRAME = 33</b>

Wartość jest taka sama jak SM_CYSIZEFRAME.

<b>SM_CYFULLSCREEN = 17</b>
	
Wysokość okna klienta, w pikselach.

<b>SM_CYHSCROLL = 3</b>
	
Wysokość poziomego scrolla, w pikselach.

<b>SM_CYICON = 12</b>	

Domyślna wysokość ikon, w pikselach.

<b>SM_CYICONSPACING = 39</b>
	
Wysokość siatki ikon, w pikselach.

<b>SM_CYKANJIWINDOW = 18</b>
	
Wysokość okna kanji, w pikselach.

<b>SM_CYMAXIMIZED = 62</b>
	
Domyślna wysokość zmaksylizowanego okna, w pikselach.

<b>SM_CYMAXTRACK = 60</b>
	
Domyślna wysokość okna typu bsNormal, w pikselach.

<b>SM_CYMENU = 15</b>
	
Wysokość pozycji w main menu, w pikselach.

<b>SM_CYMENUCHECK = 72</b>

Wysokość menu check-mark(taki ptaszek), w pikselach.

<b>SM_CYMENUSIZE = 55</b>
	
Wysokość pozycji main menu, w pikselach.

<b>SM_CYMIN = 29</b>
	

Minimalna wysokość okna, w pikselach.

<b>SM_CYMINIMIZED = 58</b>
	

Wysokość zminimalizowanego okna, w pikselach.

<b>SM_CYMINSPACING = 48</b>
	
Wysokość zakładki aplikacji na pasku narzedziowym Windows, w pikselach.

<b>SM_CYMINTRACK = 35</b>
	
Nie wiem co to.

<b>SM_CYSCREEN = 1</b>
	
Wysokość ekranu domyślnego monitora, w pikselach.

<b>SM_CYSIZE = 31</b>
	
Wysokość przycisków w pasku tytułowym okna, w pikselach.

<b>SM_CYSIZEFRAME = 33</b>
	
Nie wiem co to.

<b>SM_CYSMCAPTION = 51</b>
	
Wysokość małego opisu, w pikselach.

<b>SM_CYSMICON = 50</b>  	

Zalecana wysokość małych ikon(np. w pasku tytułowym aplikacji) w pikselach.

<b>SM_CYSMSIZE = 53</b>
	
Wysokość małych opisów, w pikselach.

<b>SM_CYVIRTUALSCREEN = 79</b>
	
Wysokość wirtualnego ekranu, w pikselach.

<b>SM_CYVSCROLL = 20</b>
	
Wysokość pionowego scrolla, w pikselach.

<b>SM_CYVTHUMB = 9</b>
	
Wysokość suwaka(tego paska) scrolla w pikselach.

<b>SM_DBCSENABLED = 42</b>
	
Zwraca niezerową wartość jeżeli używana jest biblioteka User32.dll wspierająca DBCS.

<b>SM_DEBUG = 22</b>
	
Zwraca niezerową wartość jeżeli wersja debug User.exe jest zainstalowana.

<b>SM_IMMENABLED = 82</b>	

Zwraca niezerową wartość jeżeli pochodne Input Method Manager/Input Method Editor  są włączone. 

<b>SM_MEDIACENTER = 87</b>
	

Zwraca niezerową wartość jeżeli bieżą cy system operacyjny to XP lub Media Center Edition.

<b>SM_MENUDROPALIGNMENT = 40</b>
	

Nie wiem co to.

<b>SM_MIDEASTENABLED = 74</b>
	
Zwraca niezerową wartość jeżeli system ma włączoną obsługę Hebrajskiego lub Arabskiego języka.

<b>SM_MOUSEPRESENT = 19</b>
	
Zwraca niezerową wartość jeżeli mysz jest zainstalowana.

<b>SM_MOUSEHORIZONTALWHEELPRESENT = 91</b>
	
Zwraca niezerową wartość jeżeli zainstalowana mysz posiada kółko poziomego scrollowania.

<b>SM_MOUSEWHEELPRESENT = 75</b>
	
Zwraca niezerową wartość jeżeli zainstalowana mysz posiada kółko.

<b>SM_NETWORK = 63</b>
	
Nie wiem co to.

<b>SM_PENWINDOWS = 41</b>
	
Nie zero jeśli dodatek Microsoft Windows for Pen zainstalowany. W innym przypadku 0.

<b>SM_REMOTECONTROL = 0x2001</b>
	
Zwraca niezerową wartość jeżeli bieżąca sesja jest zdalnie sterowana.

<b>SM_REMOTESESSION = 0x1000</b>   	

Nie wiem co to.

<b>SM_SAMEDISPLAYFORMAT = 81</b>   	

Zwraca niezerową wartość jeżeli wszystkie monitory mają takie same profile kolorów.

<b>SM_SECURE = 44</b>
	
Zawsze zwraca 0. Ignorować.

<b>SM_SERVERR2 = 89</b>  	

Zwraca wartość wersji Windows Server 2003 R2. Jeżeli nie ma tego, zwraca 0.

<b>SM_SHOWSOUNDS = 70</b>  	

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.

<b>SM_SHUTTINGDOWN = 0x2000</b>
	
Zwraca niezerową wartość jeżeli bieżąca sesja jest zamykana.
    Windows 2000:  Ta wartość nie jest obsługiwana.

<b>SM_SLOWMACHINE = 73</b>
	
Zwraca niezerową wartość jeżeli komputer posiada wolny procesor. 

<b>SM_STARTER = 88</b> 	

Zwraca niezerową wartość jeżelibieżący system to Windows XP Starter Edition.

SM_SWAPBUTTON = 23

Zwraca niezerową wartość jeżeli przyciski myszy są zamienione.

<b>SM_TABLETPC = 86</b>
	
Zwraca niezerową wartość jeżeli bieżący system to Windows XP Tablet PC edition.

<b>SM_XVIRTUALSCREEN = 76</b>
	
Koordynaty pozycji X wirtualnego monitora.

<b>SM_YVIRTUALSCREEN = 77</b>
	
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

<font size="1"><font color="grey">// dodane SM_CXDRAG i SM_SHOWSOUNDS by sasser.64</span></span>

3 komentarzy

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

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