Прозрачность чужого окна - C#
Формулировка задачи:
Если не ошибаюсь на API есть возможность изменить прозрачность окна стороннего приложения. Как это можно реализовать на C# ?
Заранее благодарен.
Решение задачи: «Прозрачность чужого окна»
textual
Листинг программы
using System;
using System.Runtime.InteropServices;
class Program
{
[DllImport("user32.dll")]
public static extern IntPtr FindWindow(string lpClassName, string lpWindowName);
[DllImport("user32.dll")]
static extern bool SetLayeredWindowAttributes(IntPtr hwnd, uint crKey, byte bAlpha, uint dwFlags);
[DllImport("user32.dll")]
public static extern long SetWindowLong(IntPtr hWnd, int nIndex, long dwNewLong);
[DllImport("user32.dll")]
public static extern long GetWindowLong(IntPtr hWnd, int nIndex);
static void Main(string[] args)
{
const uint LWA_ALPHA = 0x00000002;
const uint LWA_COLORKEY = 0x00000001;
const int GWL_EXSTYLE = -20;
const int GWL_HINSTANCE = -6;
const int GWL_ID = -12;
const int GWL_STYLE = -16;
const int GWL_USERDATA = -21;
const int GWL_WNDPROC = -4;
const long WS_EX_LAYERED = 524288;
IntPtr hWnd = FindWindow(null, "API"); //Ищем окно с заголовком API
long dwStyle = GetWindowLong(hWnd, GWL_STYLE);
SetWindowLong(hWnd, GWL_EXSTYLE, GetWindowLong(hWnd, GWL_EXSTYLE) | WS_EX_LAYERED);
SetLayeredWindowAttributes(hWnd, 0, 128, LWA_ALPHA);
Console.ReadKey(true);
}
}