31 Mart 2020 Salı

NETBIOS

Giriş
NETBIOS ismi 16 byte uzunluğundadır. Son byte - yani suffix - bilgisayarın tipini belirtir. Açıklaması şöyle.
This appears to be a NetBIOS name, which is why it's padded with spaces to 15 ASCII characters, and then followed by a different character at the end as a suffix.

30 Mart 2020 Pazartesi

InternetOpen metodu

Giriş
Şu satırı dahil ederiz. Bu metod wininet kütüphanesi içindedir.
#include <windows.h>
#include <strsafe.h>
#include <wininet.h>  
// ...

#pragma comment(lib, "wininet.lib")
#pragma comment(lib, "user32.lib")
Şöyle yaparız.
string DownloadString(string URL) {
  HINTERNET interwebs = InternetOpenA("Mozilla/5.0", INTERNET_OPEN_TYPE_DIRECT, NULL,
    NULL, NULL);
  HINTERNET urlFile;
  string rtn;
  if (interwebs) {
    urlFile = InternetOpenUrlA(interwebs, URL.c_str(), NULL, NULL, NULL, NULL);
    if (urlFile) {
      char buffer[2000];
      DWORD bytesRead;
      do {
        InternetReadFile(urlFile, buffer, 2000, &bytesRead);
        rtn.append(buffer, bytesRead);
        memset(buffer, 0, 2000);
      } while (bytesRead);
      InternetCloseHandle(interwebs);
      InternetCloseHandle(urlFile);
      string p = replaceAll(rtn, "|n", "\r\n");
      return p;
    }
  }
  InternetCloseHandle(interwebs);
  string p = replaceAll(rtn, "|n", "\r\n");
  return p;

}

28 Mart 2020 Cumartesi

GetMessage metodu

Giriş 
Message loop'u çalıştırmak içindir.

Örnek
Şöyle yaparız.
int APIENTRY wWinMain(_In_ HINSTANCE hInstance,
                     _In_opt_ HINSTANCE hPrevInstance,
                     _In_ LPWSTR    lpCmdLine,
                     _In_ int       nCmdShow)
{
  ...
  MSG msg;

  // Main message loop:
  while (GetMessage(&msg, nullptr, 0, 0))
  {
    if (!TranslateAccelerator(msg.hwnd, hAccelTable, &msg))
    {
      TranslateMessage(&msg);
      DispatchMessage(&msg);
    }
  }

  return (int) msg.wParam;
}

Powershell Invoke-Command - Bir Komut veya Script Çalıştırır

Giriş
Başka bir powershell script'ini çalıştırmak için kullanılabilir.

ComputerName seçeneği
Uzak bilgisayarda bir komut çalıştırır. 

- Eğer tüm komutlarımızın uzak bilgisayarda çalışmasını istiyorsak sürekli Invoke-Command -ComputerName ... şeklide yazmak yerine Enter-PSSession kullanılabilir. Açıklaması şöyle
If you have several cmdlets you want to run on the remote PC, instead of repeatedly typing the Invoke-Command cmdlet and the remote IP address, you can start a remote session instead.
New-PSSession yazısına göz atabilirsiniz

Örnek
Şöyle yaparız.
$strings = Invoke-Command -FilePath C:\...\script1.ps1 
  -ComputerName localhost -Credential $credential
ScriptBlock seçeneği
Örnek
Şöyle yaparız. scriptBlock arka planda çalıştırılacak metodu temsil eder. Bu metod bir parametre ile çağrılır
$Param1 = "..."
$Computers =(Get-Content "computers.txt")

foreach ($computer in $Computers) {

  $scriptBlock = {

    param($ScriptParam1)

    ...

  }

  Invoke-Command ScriptBlock $scriptBlock -ArgumentList ($Param1)

}

13 Mart 2020 Cuma

ShowWindow metodu

Giriş
Pencereyi görünür, görünmez yapar.

Örnek
Şöyle yaparız.
HWND hwnd = ...
ShowWindow(hwnd, SW_SHOW);