Chapter 27 ReadMe

W procedurach w przykadowej bazie do tego rozdziau znajduje si wiele instrukcji On Error Resume Next. Przepraszam za to atwe rozwizanie, jednak poprawne przechwytywanie bdw w funkcjach API jest trudne. Jeli ktry z przykadw nie dziaa w oczekiwany sposb, ustaw punkt przerwania na pocztku procedury zdarzenia (debugowanie opisano w rozdziale 14.) i przejd przez procedur krok po kroku do momentu napotkania wiersza powodujcego problemy. Dua ilo kodu do obsugi bdw w bazie Rozdzia27.accdb mogaby utrudni zrozumienie gwnego kodu.

Jeli modyfikujesz funkcje nakadkowe w basAPIFunctions lub innych moduach, pamitaj, e w wywoaniach do API wana jest wielko znakw. W wywoaniach API zawsze uywam skadni z MSDN lub innego dobrego rda. Cho uywanie tych samych nazw funkcji API nie jest konieczne, warto stosowa wywoania i argumenty dokadnie w takiej formie, jak w uywanym rdle informacji na temat API.

Funkcja ChangeTitle() z frmApiDemo nie dziaa w Accessie 2010 w systemie Windows 7. Moliwe, e beta systemu Windows 7, ktrej uywam, nie obsuguje funkcji API SetWindowTextA lub e funkcja ta jest zastpiona w Accessie (tekst w nagwku gwnego okna Accessa mona ustawi w oknie dialogowym Tools/<nazwa projektu> Properties).

Problemy sprawia funkcja GetVersionExA z moduu basAPIFunctions. W trakcie prac nad ksik nie mogem znale waciwej wartoci dla staej VER_PLATFORM_WIN32_NT_2. Sta ta reprezentuje systemy Windows XP, Vista i 7. Obecnie wydaje si, e nie ma identyfikatora dwPlatformID specyficznego dla tych systemw.

Microsoft dokadnie opisa funkcj GetVersionEx w MSDN: http://msdn.microsoft.com/en-us/library/ms724833(VS.85).aspx.

Wydaje si, e trzeba uwzgldni dwMajorVersion i dwMinorVersion, a take dwPlatformID, aby ustali, czy na komputerze dziaa jedna z dawnych wersji systemu Windows, XP, Vista czy 7.

Na moim komputerze z systemem Windows 7 zmienna VersionNo zadeklarowana w funkcji GetPlatform zwrcia nastpujce wartoci:
     VersionNo.dwBuildNumber     : 7100 
     VersionNo.dwMajorVersion    :  6 
     VersionNo.dwMinorVersion    :  1 
     VersionNo.dwplatformID      :  2
     VersionNo.dwVersionInfo     :  148 
     VersionNo.szVersion         :  ""   (pusty acuch)

Wyglda na to, e jeli dwPlatformID to 2, dwMajorVersion to 6, a dwMinorVersion to 1, systemem jest Windows 7 lub Windows Server 2008 R2.

Jeli wane jest, aby aplikacja widziaa, z ktrej wersji systemu Windows korzysta uytkownik, trzeba sprawdzi skadowe dwMinorVersion i dwMajorVersion struktury OSVERSION. Kombinacje wartoci to:

System                   dwMinorVersion  dwMajorVersion  

Windows 7                             6               1
Windows Server 2008 R2                6               1
Windows Server 2008                   6               0
Windows Vista                         6               0
Windows Server 2003 R2                5               2
Windows Home Server                   5               2
Windows Server 2003                   5               2
Windows XP Professional 64-bit        5               2 
Windows XP                            5               1 
Windows 2000                          5               0

Funkcj GetPlatform() znajdziesz w module basAPIFunctions w bazie Rozdzia27.accdb.



