Как я могу получить в C# Aero как прозрачное окно, которое можно щелкнуть через
Я хочу сделать так, чтобы внешнее приложение (процесс) перешло в TopMost Aero наподобие прозрачного, по которому можно переходить. Проблема в том, что я могу заставить Aero работать или щелкнуть TopMost через окно, но не то и другое одновременно. Закомментированная часть кода (/*DwmApi... */) представляет собой код Aero, который также удаляет строку заголовка окна процесса, а под ним находится код для окна перехода по клику (мне не нужно устанавливать альфа, если я есть Aero, здесь он используется для целей тестирования).
Вот ссылка, которая показывает, что делает код Aero: http://ru11en.wordpress.com/category/mikumikudance/
А вот ссылка для кликающего "сквозного" кода: самая верхняя форма, нажав "сквозной", возможно?
Обратите внимание, что если я изменю GWL_STYLE=-17, программа больше не удалит строку заголовка.
// GWL_STYLE = -16; GWL.ExStyle = -20;
private void прозрачность_Click(отправитель объекта, EventArgs e)
{
ProcessItem selectedItem = (ProcessItem)this.comboBox1.SelectedItem;
if (selectedItem!= null)
{
IntPtr handle = selectedItem.Handle;
if (handle!= IntPtr.Zero)
{ /*DwmApi.DwmExtendIntoClientAll(handle);
int num = GetWindowLong(handle, GWL_STYLE) & ~WS_OVERLAPPEDWINDOW;
SetWindowLong(handle, GWL_STYLE, num);
SetWindowPos(handle, IntPtr.Zero, 0, 0, 0, 0, SWP__REFRESH);
*/
int wl = GetWindowLong(handle, GWL.ExStyle);
original = wl;
wl = wl | 0x80000 | 0x20;
SetWindowPos(handle, HWND_TOPMOST, 0, 0, 0, 0, SWP_NOMOVE | SWP_NOSIZE | SWP_SHOWWINDOW);
SetWindowLong(handle, GWL.ExStyle, wl);
SetLayeredWindowAttributes(handle, 0, 200, LWA.Alpha);
}
}
}