using System;
using System.Runtime.InteropServices;
public class TransA
{
const int GWL_ID = (-12);
const int GWL_STYLE = (-16);
const int GWL_EXSTYLE = (-20);
const int WS_EX_LAYERED = 0x00080000;
const int LWA_ALPHA = 0x00000002;
[DllImport("user32.dll")]
public static extern int SetWindowLong(int hWnd, int nIndex, int dwNewLong);
[DllImport("user32.dll", SetLastError=true)]
public static extern int GetWindowLong(int hWnd, int nIndex);
[DllImport("user32.dll")]
public static extern bool SetLayeredWindowAttributes(int hWnd, uint crKey, byte bAlpha, uint dwFlags);
[DllImport("user32.dll")]
public static extern int FindWindow(string lpClassName, string lpWindowName);
public static void Main(string[] args)
{
if (args.Length >= 2)
{
int alpha = int.Parse(args[0]);
if ( alpha >= 100 && alpha <= 255 )
{
for( int i = 1 ; i < args.Length ; i++ )
{
string names = args[i].ToString();
int hwnd = FindWindow( null, names );
if ( hwnd != 0 )
{
SetWindowLong( hwnd, GWL_EXSTYLE, GetWindowLong(hwnd, GWL_EXSTYLE) | WS_EX_LAYERED );
SetLayeredWindowAttributes( hwnd, 0, ( byte )alpha, LWA_ALPHA );
Console.WriteLine( string.Format("{0}을 찾아서 변환 하였습니다.", names ) );
hwnd = 0;
}
}
}
else
{
Console.WriteLine( "alpha 값은 100 이상 255 미만의 값을 가집니다." );
}
}
else
{
Console.WriteLine( "사용법 : app.exe alpha_value Windows_name" );
}
}
}
컴퓨터 개발/닷넷2011. 1. 25. 15:56