25 Eylül 2019 Çarşamba

CreateCompatibleBitmap metodu

Giriş
Açıklaması şöyle.
Note: When a memory device context is created, it initially has a 1-by-1 monochrome bitmap selected into it. If this memory device context is used in CreateCompatibleBitmap, the bitmap that is created is a monochrome bitmap. To create a color bitmap, use the HDC that was used to create the memory device context
Örnek
Elimizde şöyle bir kod olsun. Bu siyah beyaz çizim yapar.
HDC hdc = GetDC (Window);
HDC hdc_buffer = CreateCompatibleDC (hdc);
HBITMAP bitmap_buffer = CreateCompatibleBitmap (hdc_buffer, width, height);
Renkli çizmek için şöyle yaparız.
CreateCompatibleBitmap(hdc, width, height);//colored bitmap

CreateProcessAsUser metodu

Giriş
hToken parametresi için açıklama şöyle.
A handle to the primary token that represents a user. The handle must have the TOKEN_QUERYTOKEN_DUPLICATE, and TOKEN_ASSIGN_PRIMARY access rights.
OpenProcess() -> OpenProcessToken () -> DuplicateTokenEx() çağrısı ile bu parametre elde edilebilir.

20 Eylül 2019 Cuma

GlobalMemoryStatusEx metodu

Örnek
Sistemdeki toplam kullanılabilecek bellek miktarını öğrenmek için şöyle yaparız. Bu miktar toplam bellek miktarı değildir.
MEMORYSTATUSEX statex;
statex.dwLength = sizeof(statex);
GlobalMemoryStatusEx(&statex);
unsigned long long RAM_GB = statex.ullTotalPhys / 1024ll / 1024ll / 1024ll;

5 Eylül 2019 Perşembe

PlaySound metodu

Giriş
Şu satırı dahil ederiz
#include <mmsystem.h>
PlaySound Senkron Çalma - path 
Örnek
Şöyle yaparız.
PlaySound("C:/brainshock.wav", 0, SND_FILENAME);
Örnek
Şöyle yaparız.
PlaySound("BigShaq.wav", NULL, SND_SYNC);
PlaySound  Asenkron Çalma - path
Açıklaması şöyle
The sound is played asynchronously and PlaySound returns immediately after beginning the sound. To terminate an asynchronously played waveform sound, call PlaySound with pszSound set to NULL.
Şöyle yaparız.
PlaySound(L"C:/brainshock.wav", NULL, SND_ASYNC);
Dosya bulunamazsa bile varsayılan sesi çalmak için şöyle yaparız.
PlaySound(L"C:/brainshock.wav", NULL, SND_FILENAME | SND_ASYNC);
PlaySound Senkron Çalma - buffer
Şöyle yaparız.
string fname = ...  bool async = false;

BYTE* pFileBytes;

ifstream f(fname, ios::binary);

f.seekg(0, ios::end);
int lim = f.tellg();
dwFileSize = lim;

pFileBytes = new BYTE[lim];
f.seekg(0, ios::beg);

f.read((char *)pFileBytes, lim);

f.close();


if (async)
  PlaySound((LPCSTR)pFileBytes, NULL, SND_MEMORY | SND_ASYNC);
else
  PlaySound((LPCSTR)pFileBytes, NULL, SND_MEMORY);
PlaySound - Durdurma
Asenkron çalmayı durdurmak için şöyle yaparız.
PlaySound (NULL, NULL, 0);

DllMain metodu

Giriş
ul_reason_for_call Parametresi DLL'i kimin yüklediğini gösterir.

Örnek
Şöyle yaparız.
BOOL APIENTRY DllMain( HMODULE hModule,
    DWORD  ul_reason_for_call,
    LPVOID lpReserved)
{
  switch (ul_reason_for_call)
  {
    case DLL_PROCESS_ATTACH:
    {
      ...
       return TRUE;
    }
    case DLL_THREAD_ATTACH:
    case DLL_THREAD_DETACH:
    case DLL_PROCESS_DETACH:
      break;
  }
  return TRUE;
}
Örnek
Şöyle yaparız.
BOOL APIENTRY DllMain(
    HMODULE hModule,
    DWORD  ul_reason_for_call,
    [[maybe_unused]] LPVOID lpReserved) noexcept
{
  switch (ul_reason_for_call)
  {
    case DLL_PROCESS_ATTACH:
    case DLL_THREAD_ATTACH:
    case DLL_THREAD_DETACH:
        break;

    case DLL_PROCESS_DETACH:
      ...
        break;
    }

    return TRUE;
}