29 Aralık 2019 Pazar

Powershell $OutputEncoding

Örnek
Şöyle yaparız.
$OutputEncoding = [System.Text.Encoding]::Unicode

23 Aralık 2019 Pazartesi

Windows Batch START komutu - Yeni Bir Process Başlatır

Giriş
Tek başına çalışan bir process başlatır. Açıklaması şöyle
If you type start filename.ext in command prompt, the file is run using explorer's engine, and as such whatever is associated to that file extension will start the file.
Örnek
Bir kısayolu (shortcut) çalıştırmak için şöyle yaparız.
start mmsys.cpl
Örnek
Şöyle yaparız.
start winword
Örnek - pencere ismi
Şöyle yaparız
start "" "C:\Program Files (x86)\Microsoft Visual Studio\2019\Community\VC"

:: # Or more elaborately:
start "Optional Window Title" "C:\Program Files (x86)\Microsoft Visual Studio\2019\Community\VC"
wait seçeneği
Açıklaması şöyle.
start a command in a new window, wait for it to complete, then run another command locally and call a batch file.
Şöyle yaparız.
start "" /wait command1 & command2 & call command3.cmd

Powershell Start - Komutu Çalıştırır

Örnek
Şöyle yaparız.
PS> start excel
PS> start myfile.docx
PS> start http://www.website.com

19 Aralık 2019 Perşembe

CreateFile metodu

Giriş
İkinci parametre GENERIC_WRITE, GENERIC_READ OLABİLİR.
Üçüncü parametre sharing mode anlamına gelir. Genellikle 0 verilir.

Beşinci parametre dosya varsa ne yapacağımızı belirtir. CREATE_ALWAYS,OPEN_EXISTING olabilir.

Örnek
Şöyle yaparız. Burada OPEN_EXISTING kullanıldığı için yazmak için bir cihaz açılıyor diye düşünülebilir.
char path[] = "...";

HANDLE output = CreateFile(path,
            GENERIC_WRITE,
            FILE_SHARE_WRITE,
            NULL,
            OPEN_EXISTING,
            0,
            NULL);

Örnek
Şöyle yaparız
HANDLE h = CreateFile("process.txt",  // name of the file
                       GENERIC_WRITE,    // open for writing
                       0,                // sharing mode, none in this case
                       0,                // use default security descriptor
                       CREATE_ALWAYS,    // overwrite if exists
                       FILE_ATTRIBUTE_NORMAL,
                       0);
Örnek
Şöyle yaparız.
wchar_t wszPath[] = L"\\\\.\\F:";
HANDLE hDevice = CreateFileW(wszPath,         
                             0,                
                             FILE_SHARE_READ | 
                             FILE_SHARE_WRITE,
                             NULL,             
                             OPEN_EXISTING,    
                             0,                
                             NULL);            

if (hDevice != INVALID_HANDLE_VALUE)    
{
  ...
  CloseHandle(hDevice);
  hDevice = NULL;
}
Örnek
Şöyle yaparız.
serialPortHandle = CreateFile(("COM2"),
        GENERIC_READ | GENERIC_WRITE,
        0,
        NULL,
        OPEN_EXISTING,
        FILE_FLAG_OVERLAPPED | FILE_FLAG_NO_BUFFERING,
        NULL);

18 Kasım 2019 Pazartesi

GetWindowLong metodu

Örnek
Şöyle yaparız.
HWND g_hwndTarget;

BOOL CALLBACK  EnumCallback(HWND hwnd, LPARAM lParam)
{
    wchar_t szText[MAX_PATH] = {};
    GetWindowTextW(hwnd, szText, MAX_PATH);

    std::wstring strTitle = szText;
    if (strTitle.find(L"cmd.exe") != std::string::npos)
    {
        g_hwndTarget = hwnd;
        return FALSE;
    }
    return TRUE;
}


int main()
{
  EnumDesktopWindows(NULL, EnumCallback, 0);

  RECT rect = {};
  SystemParametersInfo(SPI_GETWORKAREA, 0, &rect, 0);

  if (g_hwndTarget)
  {
    LONG style = GetWindowLong(g_hwndTarget, GWL_STYLE);
    style &= ~WS_BORDER;
    style &= ~WS_OVERLAPPEDWINDOW;
    SetWindowLong(g_hwndTarget, GWL_STYLE, style);
    SetWindowPos(g_hwndTarget, HWND_BOTTOM, 0, 0, rect.right, rect.bottom, 0);
  }

  return 0;
}

EnumDesktopWindows metodu

Giriş
Callback FALSE dönünce durur.

Örnek
Şöyle yaparız.
HWND g_hwndTarget;

BOOL CALLBACK  EnumCallback(HWND hwnd, LPARAM lParam)
{
  wchar_t szText[MAX_PATH] = {};
  GetWindowTextW(hwnd, szText, MAX_PATH);

  std::wstring strTitle = szText;
  if (strTitle.find(L"cmd.exe") != std::string::npos)
  {
    g_hwndTarget = hwnd;
    return FALSE;
  }
  return TRUE;
}


EnumDesktopWindows(NULL, EnumCallback, 0);

SystemParametersInfo metodu

Örnek
Şöyle yaparız
RECT rect = {};
SystemParametersInfo(SPI_GETWORKAREA, 0, &rect, 0);

GetWindowText metodu

Giriş
Şu satırı dahil ederiz.
#include <windows.h>
Örnek
Şöyle yaparız.
QString getActiveWndTitle()
{
  char buff[256];
  HWND hwnd = GetForegroundWindow();
  GetWindowText(hwnd, (LPWSTR) buff, 254);
  QString title = QString::fromWCharArray((const wchar_t *)buff);
  return title;
}
Örnek
Şöyle yaparız
HWND hwnd = ...
wchar_t szText[MAX_PATH] = {};
GetWindowTextW(hwnd, szText, MAX_PATH);

17 Ekim 2019 Perşembe

ShellExecute metodu

Örnek
Şöyle yaparız.
char verb[10] = "runas";
char cmd[10] = "net";
char params[40] = "user myuser";

ShellExecuteA(NULL, verb, cmd, params, 0, SW_SHOW);

3 Ekim 2019 Perşembe

CreateThread metodu

Giriş
İmzası şöyle.
HANDLE WINAPI CreateThread( __in_opt LPSECURITY_ATTRIBUTES lpThreadAttributes,
 __in SIZE_T dwStackSize,
 __in LPTHREAD_START_ROUTINE lpStartAddress,
 __in_opt LPVOID lpParameter,
 __in DWORD dwCreationFlags,
 __out_opt LPDWORD lpThreadId );