Сделайте окно обоев кликабельным - PullRequest
0 голосов
/ 25 мая 2018

Я создал библиотеку, которая позволяет перемещать любое окно за значками рабочего стола, используя user32.dll, но проблема в том, что окно не реагирует ни на щелчки, ни на нажатия клавиш (даже KeyboardDevice, похоже, ничего не захватывает) '

Следует отметить, что после запуска любого окна на этом слое обоев оно исчезает с панели задач.

Это код:

    public static void MoveBehindIcons(IntPtr windowHandle)
    {
      IntPtr window = W32.FindWindow("Progman", (string) null);
      IntPtr result = IntPtr.Zero;
      int num1 = 1324;
      IntPtr wParam = new IntPtr(0);
      IntPtr zero = IntPtr.Zero;
      int num2 = 0;
      int num3 = 1000;
      W32.SendMessageTimeout(window, (uint) num1, wParam, zero, (W32.SendMessageTimeoutFlags) num2, (uint) num3, out result);
      IntPtr workerw = IntPtr.Zero;
      W32.EnumWindows((W32.EnumWindowsProc) ((tophandle, topparamhandle) =>
      {
        if (W32.FindWindowEx(tophandle, IntPtr.Zero, "SHELLDLL_DefView", IntPtr.Zero) != IntPtr.Zero)
          workerw = W32.FindWindowEx(IntPtr.Zero, tophandle, "WorkerW", IntPtr.Zero);
        return true;
      }), IntPtr.Zero);
      W32.SetParent(windowHandle, workerw);
    }

класс W32: https://pastebin.com/Tw72Lbw6

WallpaperEngine может сделать это как-то ..

Можно ли заставить его работать?

...