Programowanie Windows (Win32/Win64 API)
description
Transcript of Programowanie Windows (Win32/Win64 API)
Programowanie Windows (Win32/Win64 API)
Jacek Matulewski17 września 2012
http://www.fizyka.umk.pl/~jacek/dydaktyka/winprog/
O czym będzie ten wykład:
• Tworzenie aplikacji dla systemu Windows z użyciem interfejsu programisty Win32
• Aplikacje z graficznym interfejsem użytkownika (GUI). Przede wszystkim MFC, mniej VCL.
• Powłoka systemu Windows (Windows Shell).
• Podstawy programowania sieciowego.
• Wszystkich funkcji jest tysiące. My wycinek.
O czym nie będzie:
• Win16 i Win32s, .NET/CLR, WinRT
• Zakładam znajomość podstaw C/C++(if, for, while, switch). Jeżeli trzeba powtórzę wskaźniki i klasy.
• Zakładam znajomość podstaw ang. - MSDN
• Skupię się raczej na rdzeniu WinAPI, niż na nowościach (np. z Windows 8)
• DirectX/OpenGL – osobny wykład
Co to jest Windows API?
• Windows API = WinAPI = Win32 API
• API = application programming interface
• Interfejs programistyczny pozwalający na dostęp do funkcjonalności Windows z poziomu kodu. Zbiór bibliotek DLL z eksportowanymi funkcjami.
• Dostęp do niemal wszystkich funkcjonalności Windows (częściowo poza bezpieczeństwem)
• Windows SDK (m.in. nagłówki C do DLL)
Zasadnicze biblioteki Win32 API:
• Base services (jądro) – kernel32.dll– podstawowe funkcje systemu plików – nie mylić z
funkcjami z shell32.dll,– obsługa urządzeń peryferyjnych,– wątki,– obsługa błędów – ale nie wyjątki
Zasadnicze biblioteki Win32 API:
• Advanced services – advapi32.dll– rejestr systemu Windows (baza danych),– zamykanie i restart systemu,– usługi Windows,– obsługa kont użytkowników
Zasadnicze biblioteki Win32 API:
• Graphics Device Interface – gdi32.dll– warstwa abstrakcyjna dla urządzeń wyjścia
korzystających z grafiki– obsługa urządzeń wyjścia m.in. monitor, drukarka– kontakt ze sterownikami urządzeń GDI,– obsługa czcionek i palet kolorów,– rysowanie okien, kontrolek, menu itp.,– Od Windows XP: GDI+ (C++)– Windows Vista/7: Windows Display Driver Model
Zasadnicze biblioteki Win32 API:
• User Interface – user32.dll– podstawowe kontrolki Windows tworzące GUI:
przyciski, paski przewijania, pola wyboru itp.– obsługa zarówno wejścia (mysz, klawiatura),
jak i wyjścia (zmiana wyglądu kontrolki)– Od Windows XP obsługa kontrolek zgromadzona
jest w bibliotece comctl32.dll (Common Control Library), też: pasek stanu, zakładki, itp.
– Nakładki: MCF, ATL, VCL (Borland), Qt, Gimp Toolkit (GTK), AWT (Java), WF (.NET)
Zasadnicze biblioteki Win32 API:
• Common Dialog Boxes Library – comdlg32.dll– okna dialogowe udostępniane przez Windows:
1) wczytywanie i zapisywanie pliku, 2) wybór czcionki, wybór koloru,3) przeszukiwanie i zastępowanie,4) okna związane z drukowaniem
Zasadnicze biblioteki Win32 API:
• Windows Shell (powłoka systemu Windows) shell32.dll– wyższa warstwa API (nad jądrem i GUI),– CopyFile[Ex], MoveFile itd. (kernel32.dll)
vs SHFileOperation i IFileOperation (od Vista)
– WinExec (Win16) i CreateProcess (kernel32.dll) vs ShellExecute
– Na funkcjach powłoki bazuje Eksplorator Windows i częściowo narzędzia administracyjne
Zasadnicze biblioteki Win32 API:
• Networking services – NetBIOS = Network Basic I/O System,– WinSock = Windows Sockets API (obsługa
TCP/IP)– RPC = remote procedure call– NetDDE, DDE = dynamic data exchange – por. też. DCOM, COM+
Zasadnicze biblioteki Win32 API:
• Desktop Windows Manager (DWM)
• Windows Management Instrumentation (WMI)
• Windows Internet (WinINet)
• Active Directory
• Cryptography
• Image Mastering API (IMAPI)
• Media Control Interface (MCI)
• i wiele innych
Historia WinAPI
• Windows 1.0 – 450 funkcji
• Windows 7 – tysiące!(ale te 450 nadal jest)
Źródła
• MSDN – podstawowe źródło wiedzy:Nowy wygląd: http://msdn.microsoft.com/en-us/library/ee663300(v=VS.85).aspxStary wygląd: http://msdn.microsoft.com/en-us/library/windows/desktop/hh447209(v=vs.85).aspx
• Inne strony:EFNet #Winprog: http://www.winprog.org/tutorial/Adam Boduch (Delphi): http://4programmers.net/Dla programistów .NET: http://www.pinvoke.net/
Źródła
• Książki:o Jeffrey Richter, Christopher Nasarre
Windows via C/C++ (wydanie 5), Microsoft Press, Warszawa 2009
o Johnson M. Hart Programowanie w systemie Windows (wydanie 4), Helion 2010
o Jacek Matulewski, Maciej Pakulski, Dawid Borycki, Bartosz Biały, Piotr Pepłowski, Michał Matuszak, Daniel Szlag, Dawid Urbański Visual C++. Gotowe rozwiązania dla programistów Windows, Helion 2010