API - Application Programming Interface
Interfejs Programowania Aplikacji.

  Windows API jest pełne funkcji sterujących mechanizmem okienek i wykonującym wszystkie zadania związane z systemem Windows. W C++ Builder funkcje API są umieszczane w komponentach. W czasie pracy z programem określa się jakie zadania mają wykonywać komponenty, a one same przekazują Windows szczegóły określające co jest do zrobienia. Jednak komponenty (VCL) nie są w stanie objąć każdej z tysięcy funkcji API i komunikatów dlatego czasami trzeba sięgać wprost do samego źródła.

Menu
  1. Tworzenie okien komunikatów o dowolnym kształcie.

  2. Uruchamianie innego programu - sposób łatwy.

  3. Uruchamianie programu z wybranym do edycji plikiem - sposób trudniejszy.

  4. Uruchamianie pliku w domyślnym programie.

  5. Usuwanie plików z przeniesieniem do kosza.

  6. Kopiowanie plików.

  7. Zmiana rozdzielczości ekranu.

  8. odczyt używanego trybu graficznego (rozdzielczość i jakość kolorów).

  9. uruchamianie okna dialogowego do przeglądania katalogów.

  10. Usuwanie ikony programu z paska zadań.

  11. Obsługa komunikatów (MessageBox).

  12. Zmiana tapety pulpitu.

  13. Tworzenie skrótów Do plików.

  14. Modyfikacja i pobieranie informacji o skrótach.

  15. Tworzenie aplikacji wielowątkowych.

  16. Zamykanie, logowanie i restartowanie systemu.

  17. Zamykanie z wyłączeniem zasilania systemu Windows XP.

  18. Zamykanie Windows z Wyłączeniem Zasilania za pomocą Funkcji ExitWindowsEx.

  19. Powiązanie własnego typu pliku z własnym programem.

  20. Rejestrowanie rozszerzenia pliku.

  21. Sprawdzanie ile czasu uruchomiony jest Windows.

  22. Bezczynność aplikacji - zdarzenie OnIdle.

  23. Obsługa schowka.

  24. Zablokowanie uruchamiania wygaszacza ekranu.

  25. Mruganie ikoną programu na pasku zadań.

  26. Uruchomienie aplikacji i oczekiwanie na jej zamknięcie.

  27. Sprawdzanie i zmiana częstotliwości odświeżania ekranu.

  28. Metryka systemu.

  29. Zablokowanie uruchomienia kopii programu - sposób drugi.

  30. Wyliczanie czcionek zainstalowanych w systemie.

  31. Ładowanie czcionki z pliku.

  32. Uruchamianie apletów Panelu Sterowania.

  33. Wyliczanie Apletów Panelu Sterowania.

  34. Zablokowanie komputera.

  35. Wypełnianie grafiką PopupMenu.

  36. Wyrównywanie polecenia MainMenu do prawej strony.

  37. Tworzenie listy ikon z plików ikon (*.ico, *.exe, *.dll) w ListBox.

  38. Zmiana ustawień regionalnych. aplet panelu sterowania: Opcje regionalne i Językowe.

  39. Przywołanie okna na pierwszy plan.

  40. Ukrywanie i wyświetlanie ikon na pulpicie.

  41. Wyświetlania predefiniowanych ikon systemu Windows.

  42. Sprawdzanie nazwy konta na którym zalogował się użytkownik.

  43. Wyliczanie aktywnych procesów w systemie Windows.

  44. Sprawdzanie ile pamięci zużywa nasz program.

  45. Sprawdzanie zużycia pamięci przez procesy uruchomione w systemie.

  46. Sprawdzanie i zmiana priorytetu aplikacji.

  47. Zamykanie procesów.

  48. Uruchamianie programu z poświadczeniami dla Wybranego użytkownika (tylko WinXP).

  49. Sprawdzanie ile czasu upłynęło od uruchomienia systemu.

  50. Odczytywanie klucza instalacyjnego Windows.

  51. Wywoływanie okna właściwości pliku.

  52. Obliczanie częstotliwości procesora.

  53. Sprawdzanie użycia procesora.

  54. Odczytywanie Identyfikatora procesora i zmiennych środowiskowych.

  55. Ścieżki dostępu do katalogów specjalnych.

  56. Keyloger, czyli przechwytywanie wciśnięcia klawiszy we wszystkich programach.

  57. Wyliczanie zasobów.

  58. Edycja zasobów (modyfikacja, usuwanie, wstawianie).

  59. Komendy: Pokaż pulpit, Właściwości Paska Zadań, itp...

  60. Zmiana wyglądu dymka podpowiedzi (HINT).

  61. Otwieranie plików powiązanych z programem zawsze tylko w otwartym programie.

  62. Wywoływanie nie modalnego okna komunikatu.

  63. Blokada klawiatury i myszki.

  64. Zmiana kursorów myszy dla całego systemu.

  65. Uruchamianie okna Mój Komputer.

  66. Sprawdzanie i opróżnianie kosza.

  67. Wyliczanie usług systemu Windows.

  68. Zatrzymywanie, uruchamianie, wstrzymywanie i wznawianie usług.

  69. Modyfikowanie ustawień usługi.

  70. Usuwanie usługi.

  71. Pobieranie informacji o wersji pliku.

  72. AntiKill - blokowanie możliwości zamknięcia procesu przez inny proces.

  73. Pobieranie tytułu i uchwytu do okna lub obiektu w oknie wskazywanego przez kursor.

  74. Odczytywanie informacji o zasobach komputera za pomocą protokołu WMI.
     

 

Uruchamianie innego programu - sposób łatwy.

  Najprostszym sposobem uruchomienia innego programu jest skorzystanie z funkcji Windows API 'WinExec()' jako pierwszy argument podając ścieżkę do uruchamianego programu, jako drugi natomiast styl wyświetlanego okna. Jest to procedura łatwa, lecz przestarzała i Microsoft odradza jej stosowanie.

//--------------------------------
void __fastcall TForm1::Button1Click(TObject *Sender)
{
WinExec("C:\\nazwakatalogu\\nazwaprogramu.exe", SW_SHOW);
}
//--------------------------------

W przedstawionym przykładzie podano ścieżkę bezwzględną, jeśli jednak program który chcemy uruchomić znajduje się w tym samym katalogu co program uruchamiający można zastosować funkcję: 'ExtractFileDir'.

//--------------------------------
void __fastcall TForm1::Button1Click(TObject *Sender)
{
WinExec((ExtractFileDir(Application->ExeName) + "\\nazwaprogramu.exe").c_str(), SW_SHOW);
}
//--------------------------------

Opis funkcji: WinExec(const char* lpCmdLine, unsigned int uCmdShow).
Opis funkcji: EctractFileDir(AnsiString FileName).
Application->ExeName - nazwa aplikacji z poziomu której wywoływana jest procedura.

...powrót do menu. 

Uruchamianie programu z wybranym do edycji plikiem - sposób trudniejszy.

  Podany niżej sposób nie jest może tyle trudny, ile wymaga większego nakładu pracy, pozwala za to na otwarcie pliku i uruchomienie programu w którym ten plik będzie edytowany. W podanym przykładzie zostanie uruchomiony notatnik, a następnie zostanie w nim otwarty do edycji plik 'autoexec.bat'.

//--------------------------------
void __fastcall TForm1::Button1Click(TObject *Sender)
{
  char katalog [MAX_PATH];
    GetWindowsDirectory(katalog, MAX_PATH);
    AnsiString Notes = AnsiString(katalog) + "\\notepad.exe";
   Notes = Notes + " " + "c:\\autoexec.bat";

    STARTUPINFO StartupInfo;
    ;ZeroMemory( &StartupInfo, sizeof(STARTUPINFO));
    StartupInfo.cb = sizeof(STARTUPINFO);

    PROCESS_INFORMATION ProcessInfo;

    if(CreateProcess(NULL,
        Notes.c_str(),
        NULL,
        NULL,
        TRUE,
        NORMAL_PRIORITY_CLASS,
        NULL,
        NULL,
        &StartupInfo,
        &ProcessInfo))
    {
    CloseHandle(ProcessInfo.hProcess);
    CloseHandle(ProcessInfo.hThread);
    }

}
//--------------------------------

...powrót do menu. 

Uruchamianie pliku w domyślnym programie.

  W celu uruchomienia pliku w domyślnym programie należy skorzystać z funkcji Windows API 'ShellExecute()'. Żeby funkcja zadziałała należy w pliku źródłowym (*.cpp) lub w pliku nagłówkowym (*.h) projektu, umieścić w sekcji #include wiersz: #include <shellapi.h>. Shellapi.h jest nazwą dostarczonego pliku nagłówkowego, który definiuje 'ShellExecute()'.

//--------------------------------
#include <vcl.h>
#pragma hdrstop

#include "Unit1.h"
#include <shellapi.h>
//--------------------------------
#pragma package(smart_init)
#pragma resource "*.dfm"
TForm1 *Form1;
//--------------------------------
__fastcall TForm1::TForm1(TComponent* Owner)
      : TForm(Owner)
{
}
//--------------------------------
void __fastcall TForm1::Button1Click(TObject *Sender)
{
ShellExecute(Form1->Handle, NULL , "nazwapliku.xxx", "", "", SW_SHOWNORMAL);
}
//--------------------------------

Opis funkcji: ShellExecute(void* hwnd, const char* lpOperation, const char* LpFile, const char* LpParameters, const char* lpDirectory, int nShowCmd).

...powrót do menu. 

Usuwanie plików z przeniesieniem do kosza.

  W celu usunięcia plików z przeniesieniem ich do kosza, należy posłużyć się funkcją Windows API 'SHFileOperation'. W tym przypadku również trzeba dołączyć wiersz #include <shellapi.h>.

//--------------------------------
void __fastcall TForm1::Button1Click(TObject *Sender)
{
  SHFILEOPSTRUCT fos;
  fos.hwnd = Handle;
  fos.wFunc = FO_DELETE;
  fos.pFrom = (ExtractFileDir(Application->ExeName) + "\\nazwapliku.xxx").c_str();  //nazwa kasowanego pliku, trzeba podać pełną ścieżkę dostępu
      fos.fFlags = FOF_ALLOWUNDO;
  SHFileOperation(&fos);
}
//--------------------------------

Opis funkcji: SHFileOperation(SHFILEOPSTRUCT * ipFileOp) .
c_str() - konwertuje zmienną typu string na zmienną typu char.

...powrót do menu. 

Zamykanie z wyłączeniem zasilania systemu Windows XP.

    W poradzie 'Zamykanie, logowanie i restartowanie systemu' przedstawiony jest sposób zamykania systemu Windows XP, jednak ten system ma to do siebie, że po zamknięciu z reguły wyłącza zasilanie, przedstawiona tam porada jednak nie odłącza zasilania, dlatego jeżeli chcemy zamknąć system WinXP z wyłączeniem zasilania należy to zrobić w ten sposób:

//--------------------------------
void __fastcall TForm1::Button1Click(TObject *Sender)
{
 WinExec("tsshutdn 0 /POWERDOWN /DELAY:0", SW_HIDE);
}
//--------------------------------

Nie spowoduje to gwałtownego zamknięcia systemu, najpierw zostaną zakończone wszystkie otwarte procesy i zostaną wylogowani wszyscy użytkownicy, a dopiero potem nastąpi zamknięcie systemu, może to potrwać około 30 sekund.

...powrót do menu.