vcppgo-4.pdf

(962 KB) Pobierz
Visual C++. Gotowe
rozwi¹zania dla
programistów Windows
Autorzy:
Jacek Matulewski,
Maciej Pakulski, Dawid
Borycki, Bartosz Bia³y, Piotr Pep³owski, Micha³
Matuszak, Daniel Szlag, Dawid Urbañski
ISBN: 978-83-246-1928-3
Format: 158×235, stron: 536
Zostañ znawc¹ œrodowiska programistycznego Visual C++
• Podstawowe funkcje i technologie systemu Windows w oczach programistów
• Praktyczne u¿ycie funkcji WinAPI i biblioteki MFC
• Programowanie wspó³bie¿ne dla procesorów wielordzeniowych
Œrodowisko programistyczne Microsoft Visual C++ idealnie nadaje siê do wykorzystania
w przypadku pisania programów dla platformy Win32 i jest chêtnie wykorzystywane
przez profesjonalnych programistów, tworz¹cych aplikacje dla systemu Windows.
Zarówno biblioteka MFC, jak i wbudowane funkcje WinAPI oraz mo¿liwoœci programowania
wspó³bie¿nego œwietnie sprawdzaj¹ siê w codziennej pracy programistycznej, oszczêdzaj¹c
czas, pozwalaj¹c na wykorzystanie mnóstwa kontrolek i funkcji, a tak¿e elastycznie
dopasowuj¹c siê do potrzeb tworzonej aplikacji.
Autorzy ksi¹¿ki „Visual C++. Gotowe rozwi¹zania dla programistów Windows” skupiaj¹
siê w niej nie tyle na opisie samego œrodowiska programistycznego, ile na mo¿liwoœciach,
jakie oferuje ono swoim u¿ytkownikom. Po krótkim wprowadzeniu do projektowania
interfejsu aplikacji przechodz¹ do kontroli stanu systemu, obs³ugi tworzonego programu,
omówienia systemów plików, multimediów i rejestru, komunikatów Windows, bibliotek
DLL oraz automatyzacji i wielu innych zagadnieñ. W publikacji tej znajdziesz gotowe
odpowiedzi na wiele pytañ dotycz¹cych konkretnych kwestii programistycznych,
rzeczowe porady oraz sposoby wykorzystania funkcji i technologii dostêpnych podczas
programowania w œrodowisku Visual C++.
• Projektowanie interfejsu aplikacji przy u¿yciu biblioteki MFC
• Kontrola stanu systemu
• Uruchamianie i kontrolowanie aplikacji oraz ich okien
• Systemy plików, multimedia i inne funkcje WinAPI
• Rejestr systemu Windows
• Komunikaty Windows
• Biblioteki DLL
• Automatyzacja i inne technologie oparte na COM
• Sieci komputerowe
• Programowanie wspó³bie¿ne z OpenMP
• Biblioteka Threading Building Blocks
Dla tych, którzy w œrodowisku Visual C++ chc¹ siê poczuæ jak ryby w wodzie!
Spis treści
Wstęp .............................................................................................. 9
Rozdział 1. Bardzo krótkie wprowadzenie do projektowania interfejsu aplikacji
przy użyciu biblioteki MFC .............................................................. 13
Tworzenie projektu ......................................................................................................... 13
Dodawanie kontrolki ...................................................................................................... 15
Wiązanie metody z komunikatem domyślnym kontrolki ............................................... 16
IntelliSense ..................................................................................................................... 17
Wiązanie komunikatów .................................................................................................. 18
Metoda MessageBox — trochę filozofii MFC ............................................................... 19
Okno Properties: własności i zdarzenia .......................................................................... 21
Wiązanie zmiennej z kontrolką ....................................................................................... 22
Usuwanie zbędnych kontrolek ........................................................................................ 24
Analiza kodu aplikacji .................................................................................................... 24
Blokowanie zamykania okna dialogowego po naciśnięciu klawisza Enter ..................... 25
Więcej kontrolek ............................................................................................................ 26
Kolory ............................................................................................................................. 29
Użycie kontrolki ActiveX ............................................................................................... 31
Rozdział 2. Kontrola stanu systemu .................................................................. 33
Zamykanie i wstrzymywanie systemu Windows ............................................................ 33
Funkcja ExitWindowsEx
(zamykanie lub ponowne uruchamianie systemu Windows) ................................. 33
Funkcja InitiateSystemShutdown (zamykanie wybranego komputera w sieci) ........ 41
Hibernacja i wstrzymywanie systemu („usypianie”)
za pomocą funkcji SetSystemPowerState .............................................................. 46
Blokowanie dostępu do komputera .......................................................................... 49
Odczytywanie informacji o baterii notebooka .......................................................... 50
Kontrola trybu wyświetlania karty graficznej ................................................................. 52
Pobieranie dostępnych trybów pracy karty graficznej .............................................. 52
Identyfikowanie bieżącego trybu działania karty graficznej .................................... 56
Zmiana trybu wyświetlania ...................................................................................... 57
Rozdział 3. Uruchamianie i kontrolowanie aplikacji oraz ich okien ..................... 59
Uruchamianie, zamykanie i zmiana priorytetu aplikacji ................................................. 59
Uruchamianie aplikacji za pomocą funkcji WinExec ............................................... 60
Uruchamianie aplikacji za pomocą ShellExecute ..................................................... 62
Przygotowanie e-maila za pomocą ShellExecute ..................................................... 63
Zmiana priorytetu bieżącej aplikacji ........................................................................ 63
4
Visual C++. Gotowe rozwiązania dla programistów Windows
Sprawdzenie priorytetu bieżącej aplikacji ................................................................ 65
Zmiana priorytetu innej aplikacji ............................................................................. 66
Zamykanie innej aplikacji ........................................................................................ 67
Uruchamianie aplikacji za pomocą funkcji CreateProcess ....................................... 68
Wykrywanie zakończenia działania uruchomionej aplikacji .................................... 73
Kontrolowanie ilości instancji aplikacji ................................................................... 74
Uruchamianie aplikacji w Windows Vista ...................................................................... 75
Uruchamianie procesu jako administrator ................................................................ 76
Program z tarczą ....................................................................................................... 78
Kontrolowanie własności okien ...................................................................................... 79
Lista okien ................................................................................................................ 79
Okno tylko na wierzchu ........................................................................................... 83
Ukrywanie okna aplikacji ......................................................................................... 83
Mrugnij do mnie! ..................................................................................................... 84
Sygnał dźwiękowy ................................................................................................... 84
Numery identyfikacyjne procesu i uchwyt okna ............................................................. 85
Jak zdobyć identyfikator procesu, znając uchwyt okna? .......................................... 85
Jak zdobyć uchwyt głównego okna, znając identyfikator procesu? .......................... 86
Kontrolowanie okna innej aplikacji .......................................................................... 90
Kontrolowanie grupy okien ...................................................................................... 94
Okna o dowolnym kształcie ............................................................................................ 98
Okno w kształcie elipsy ............................................................................................ 99
Łączenie
obszarów. Dodanie ikon z paska tytułu ..................................................... 99
Okno z wizjerem .................................................................................................... 101
Aby przenosić okno, chwytając za dowolny punkt ................................................ 102
Rozdział 4. Systemy plików, multimedia i inne funkcje WinAPI ........................ 105
Pliki i system plików (funkcje powłoki) ....................................................................... 105
Odczytywanie
ścieżek
do katalogów specjalnych .................................................. 106
Tworzenie skrótu (.lnk) .......................................................................................... 107
Odczyt i edycja skrótu .lnk ..................................................................................... 110
Umieszczenie skrótu na pulpicie ............................................................................ 112
Operacje na plikach i katalogach (funkcje WinAPI) .............................................. 113
Operacje na plikach i katalogach (funkcje powłoki) .............................................. 114
Operacje na plikach i katalogach w Windows Vista (interfejs IFileOperation) ...... 116
Jak usunąć plik, umieszczając go w koszu? ........................................................... 118
Operacje na całym katalogu ................................................................................... 119
Odczytywanie wersji pliku .exe i .dll ..................................................................... 120
Jak dodać nazwę dokumentu do listy ostatnio
otwartych dokumentów w menu Start? ............................................................. 124
Odczytywanie informacji o dysku ................................................................................ 125
Odczytywanie danych ............................................................................................ 125
Testy ....................................................................................................................... 129
Kontrolka MFC ...................................................................................................... 131
Ikona w obszarze powiadamiania (zasobniku) ............................................................. 137
Funkcja Shell_NotifyIcon ...................................................................................... 137
Menu kontekstowe ikony ....................................................................................... 138
„Dymek” ................................................................................................................ 140
Multimedia (CD-Audio, MCI) ...................................................................................... 141
Aby wysunąć lub wsunąć tackę w napędzie CD lub DVD ..................................... 141
Wykrywanie wysunięcia płyty z napędu lub umieszczenia jej
w napędzie CD lub DVD ..................................................................................... 143
Sprawdzanie stanu wybranego napędu CD-Audio ................................................. 143
Jak zbadać, czy w napędzie jest płyta CD-Audio ................................................... 144
Kontrola napędu CD-Audio ................................................................................... 145
Spis treści
5
Multimedia (pliki dźwiękowe WAVE) ......................................................................... 147
Asynchroniczne odtwarzanie pliku dźwiękowego .................................................. 147
Jak wykryć obecność karty dźwiękowej ................................................................. 147
Kontrola poziomu głośności odtwarzania plików dźwiękowych ............................ 148
Kontrola poziomu głośności CD-Audio ................................................................. 150
Inne ............................................................................................................................... 150
Pisanie i malowanie na pulpicie ............................................................................. 150
Czy Windows mówi po polsku? ............................................................................. 153
Jak zablokować uruchamiany automatycznie wygaszacz ekranu? ......................... 153
Zmiana tła pulpitu .................................................................................................. 154
Rozdział 5. Rejestr systemu Windows ............................................................ 155
Rejestr ........................................................................................................................... 155
Klasa obsługująca operacje na rejestrze ................................................................. 156
Przechowywanie położenia i rozmiaru okna .......................................................... 162
Automatyczne uruchamianie aplikacji po zalogowaniu się użytkownika ............... 165
Umieszczanie informacji o zainstalowanym programie
(aplet Dodaj/Usuń programy) .............................................................................. 169
Gdzie jest katalog z moimi dokumentami? ............................................................ 176
Dodawanie pozycji do menu kontekstowego związanego
z zarejestrowanym typem pliku ........................................................................... 176
Obsługa rejestru i plików INI za pomocą MFC ............................................................ 180
Przechowywanie położenia i rozmiaru okna w rejestrze (MFC) ............................ 180
Przechowywanie położenia i rozmiaru okna w pliku INI (MFC) ........................... 182
Skrót internetowy (.url) .......................................................................................... 183
Rozdział 6. Komunikaty Windows ................................................................... 185
Pętla główna aplikacji ................................................................................................... 185
Obsługa komunikatów w procedurze okna (MFC) ....................................................... 187
Reakcja okna lub kontrolki na konkretny typ komunikatu ..................................... 187
Lista komunikatów odbieranych przez okno .......................................................... 188
Filtrowanie zdarzeń ................................................................................................ 191
Przykład odczytywania informacji dostarczanych przez komunikat ...................... 191
Lista wszystkich komunikatów odbieranych przez okno i jego kontrolki .............. 193
Wykrycie zmiany trybu pracy karty graficznej ...................................................... 193
Wysyłanie komunikatów .............................................................................................. 196
Wysyłanie komunikatów. „Symulowanie” zdarzeń ............................................... 196
Wysłanie komunikatu uruchamiającego wygaszacz ekranu
i detekcja włączenia wygaszacza ......................................................................... 197
Wykorzystanie komunikatów do kontroli innej aplikacji na przykładzie Winampa ..... 197
Przykłady reakcji na komunikaty (MFC) ..................................................................... 198
Blokowanie zamknięcia sesji Windows ................................................................. 198
Wykrycie włożenia do napędu lub wysunięcia z niego płyty CD lub DVD;
wykrycie podłączenia do gniazda USB lub odłączenia pamięci Flash ................. 199
Przeciąganie plików między aplikacjami ............................................................... 201
Poprawny sposób blokowania zamykania okna dialogowego
po naciśnięciu klawisza Enter .............................................................................. 204
Zmiana aktywnego komponentu za pomocą klawisza Enter .................................. 205
XKill dla Windows ................................................................................................. 206
Modyfikowanie menu systemowego formy ........................................................... 208
Haki .............................................................................................................................. 210
Biblioteka DLL z procedurą haka .......................................................................... 211
Rejestrowanie klawiszy naciskanych na klawiaturze ............................................. 216
6
Visual C++. Gotowe rozwiązania dla programistów Windows
Rozdział 7. Biblioteki DLL .............................................................................. 217
Funkcje i klasy w bibliotece DLL ................................................................................. 218
Tworzenie regularnej biblioteki DLL — eksport funkcji ....................................... 218
Statyczne
łączenie
bibliotek DLL — import funkcji .............................................. 220
Dynamiczne
ładowanie
bibliotek DLL — import funkcji ...................................... 222
Tworzenie biblioteki DLL z rozszerzeniem MFC — eksport funkcji .................... 224
Tworzenie biblioteki DLL z rozszerzeniem MFC — eksport klasy ....................... 224
Statyczne
łączenie
biblioteki DLL — import klasy ................................................ 226
Tworzenie biblioteki DLL z rozszerzeniem MFC
— eksport klasy. Modyfikacja dla dynamicznie
ładowanych
bibliotek ............... 227
Dynamiczne
łączenie
bibliotek DLL — import klasy ............................................ 228
Powiadamianie biblioteki o jej załadowaniu lub usunięciu z pamięci .................... 230
Zasoby w bibliotece DLL ............................................................................................. 232
Łańcuchy
w bibliotece DLL ................................................................................... 232
Bitmapa w bibliotece DLL ..................................................................................... 234
Okno dialogowe w bibliotece DLL ........................................................................ 237
Tworzenie apletu panelu sterowania wyświetlającego informacje o dyskach .............. 240
Rozdział 8. Automatyzacja i inne technologie bazujące na COM ...................... 249
Technologia COM ........................................................................................................ 249
Osadzanie obiektów OLE2 ........................................................................................... 250
Statyczne osadzanie obiektu ................................................................................... 251
Kończenie edycji dokumentu.
Łączenie
menu aplikacji klienckiej i serwera OLE ....... 252
Wykrywanie niezakończonej edycji podczas zamykania programu ....................... 254
Inicjowanie edycji osadzonego obiektu z poziomu kodu ................................... 255
Dynamiczne osadzanie obiektu .............................................................................. 256
Automatyzacja .............................................................................................................. 258
Typ VARIANT i klasa COleVariant ...................................................................... 258
Łączenie
z serwerem automatyzacji aplikacji Excel .............................................. 259
Uruchamianie aplikacji Excel za pośrednictwem mechanizmu automatyzacji ....... 265
Uruchamianie procedur serwera automatyzacji ...................................................... 266
Eksplorowanie danych w arkuszu kalkulacyjnym .................................................. 266
Korzystanie z okien dialogowych serwera automatyzacji.
Zapisywanie danych w pliku ................................................................................ 268
Zapisywanie danych z wykorzystaniem okna dialogowego aplikacji klienckiej .... 268
Edycja danych w komórkach Excela ...................................................................... 269
Korzystanie z funkcji matematycznych i statystycznych Excela ............................ 271
Konwersja skoroszytu Excela do pliku HTML ...................................................... 273
Uruchamianie aplikacji Microsoft Word i tworzenie nowego dokumentu
lub otwieranie istniejącego .................................................................................. 276
Wywoływanie funkcji Worda na przykładzie sprawdzania pisowni
i drukowania ........................................................................................................ 278
Wstawianie tekstu do bieżącego dokumentu Worda .............................................. 278
Zapisywanie bieżącego dokumentu Worda ............................................................ 279
Zaznaczanie i kopiowanie całego tekstu dokumentu Worda do schowka .............. 280
Kopiowanie zawartości dokumentu Worda do komponentu CRichEditCtrl
bez użycia schowka (z pominięciem formatowania tekstu) ................................. 280
Formatowanie zaznaczonego fragmentu tekstu w dokumencie Worda .................. 281
Serwer automatyzacji OLE przeglądarki Internet Explorer .................................... 282
Własny serwer automatyzacji ....................................................................................... 284
Projektowanie serwera automatyzacji .................................................................... 284
Testowanie serwera automatyzacji ......................................................................... 287
ActiveX ........................................................................................................................ 289
Korzystanie z kontrolek ActiveX ........................................................................... 289
Zgłoś jeśli naruszono regulamin