С# Расположение окна на рабочем столе

Допустим, у меня есть обычное окно на С#. У него нет стилей границ, поэтому его нельзя перемещать, изменять размер и т. Д. Как мне расположить это окно, чтобы оно отображалось на том же уровне, что и рабочий стол, или выше?

Как виджет или скин Rainmeter. Есть идеи?


person Ozzy    schedule 27.12.2009    source источник


Ответы (1)


Если я вас правильно понял и вы хотите рисовать на рабочем столе, то это может помочь: http://www.neowin.net/forum/lofiversion/index.php/t293883.html

[DllImport("user32.dll", CharSet=CharSet.Auto)]
 public static extern IntPtr FindWindow(
  [MarshalAs(UnmanagedType.LPTStr)] string lpClassName,
  [MarshalAs(UnmanagedType.LPTStr)] string lpWindowName);
[DllImport("user32.dll")]
 public static extern IntPtr SetParent(
  IntPtr hWndChild,      // handle to window
  IntPtr hWndNewParent   // new parent window
  );


IntPtr hwndf = this.Handle;
IntPtr hwndParent = FindWindow("ProgMan", null);
SetParent(hwndf,hwndParent);
this.TopMost = false;

Это приведет к тому, что ваша форма станет дочерним окном самого рабочего стола.

Прочитав код еще несколько раз, я не уверен, почему они используют FindWindow() для поиска «ProgMan» вместо использования

[DllImport("user32.dll")]
static extern IntPtr GetDesktopWindow();

но сам пока не пробовал.

person Benjamin Podszun    schedule 27.12.2009
comment
Почему это не может быть так просто. OnDesktop: P спасибо, сработало как шарм - person Ozzy; 27.12.2009
comment
мне больше повезло с GetDesktopWindow(). - person colin lamarre; 13.03.2019