Изменение непрозрачности любого окна из C # - PullRequest
3 голосов
/ 01 сентября 2009

Можно ли изменить непрозрачность всех открытых окон из C #. Я googled для минимизации окон, и я узнал, что это возможно с вызовами pInvoke. Это даже сработало. Точно так же можно изменить непрозрачность всех открытых окон из C #?

Кроме того, я не знаком с MFC. Тем не менее, есть ли инструменты, чтобы узнать список API, выставленных в DLL?

1 Ответ

8 голосов
/ 01 сентября 2009

Вы можете использовать SetLayeredWindowAttributes API для этого.

Отметьте это для версии pInvoke этого API.

Пример кода по вышеуказанной ссылке:

[DllImport("user32.dll")]
static extern bool SetLayeredWindowAttributes(IntPtr hwnd, uint crKey,byte bAlpha, uint dwFlags);

public const int GWL_EXSTYLE = -20;
public const int WS_EX_LAYERED = 0x80000;
public const int LWA_ALPHA = 0x2;
public const int LWA_COLORKEY = 0x1;

//set the window style to alpha appearance
private void button4_Click(object sender, EventArgs e)
{
    SetWindowLong(Handle, GWL_EXSTYLE, GetWindowLong(Handle, GWL_EXSTYLE) ^ WS_EX_LAYERED);
    SetLayeredWindowAttributes(Handle, 0, 128, LWA_ALPHA);
}
...