0

I have to extend a terminal server software in order to work with windows 8.1. The scenario is a follows:

Two PCs: on one runs the client software on the other one runs the server. The operating system of the server is Windows 8.1

When the user presses a button on the client PC it opens an RDP connection via virtual channel to the server PC. There has to be a logon and the tiles have to be hidden and also the server part of the software hast to be startet.

In order to hide the normal desktop under earlier versions of windows we used the following commands:

// For Windows Vista and Windows 7 hide the Status-Bar and all Desktop-Icons
int   a_hWndTaskBar      = FindWindow( "Shell_TrayWnd", null );
int   a_hWndStart        = FindWindow( "Button", "Start" );
int   a_hWndDesktop      = FindWindow( "Progman", null );
bool  a_bResult          = false;

try
{
  a_bResult = SetWindowPos( a_hWndTaskBar, 0, 0, 0, 0, 0, SWP_HIDEWINDOW );
  a_bResult = SetWindowPos( a_hWndStart, 0, 0, 0, 0, 0, SWP_HIDEWINDOW );
  a_bResult = ShowWindow( a_hWndDesktop, SW_HIDE );
}
catch( Exception e )
{
  MessageBox.Show( e.Message );
}

What do I have to do in order to achieve this with windows 8.1?

Regards Markus

seva titov
  • 11,720
  • 2
  • 35
  • 54
Markus
  • 19
  • 3

1 Answers1

0

Here: Works for me:

using System;
using System.Collections.Generic;
using System.Linq;
using System.Text;
using System.Runtime.InteropServices;

namespace Constants.UI
{

    public class Taskbar
    {
        [DllImport("user32.dll")]// For Windows Mobile, replace user32.dll with coredll.dll
        private static extern IntPtr FindWindow(string lpClassName, string lpWindowName);

        [DllImport("user32.dll", SetLastError = true)]
        private static extern IntPtr FindWindowEx(IntPtr parentHandle, IntPtr childAfter, string className, string windowTitle);

        [DllImport("user32.dll")]
        private static extern int ShowWindow(int hwnd, int command);

        private const int SW_HIDE = 0;
        private const int SW_SHOW = 1;

        protected static int Handle
        {
            get
            {
                return HandlePtr.ToInt32();
            }
        }
        protected static IntPtr HandlePtr
        {
            get
            {
                return FindWindow("Shell_TrayWnd", "");
            }
        }
        protected static int StartHandle
        {
            get
            {
                int hStart = FindWindow("Button", "Start").ToInt32();
                if (hStart == 0)
                {
                    hStart = FindWindowEx(HandlePtr, IntPtr.Zero, "Start", null).ToInt32(); //windows 8
                }
                return hStart;
            }
        }

        private Taskbar()
        {
            // hide ctor
        }
        static object lockAccess = new object();
        public static void Show()
        {
            try
            {
                lock (lockAccess)
                {
                    ShowWindow(Handle, SW_SHOW);
                    ShowWindow(StartHandle, SW_SHOW);
                }
            }
            catch { }
        }

        public static void Hide()
        {
            try
            {
                lock (lockAccess)
                {
                    ShowWindow(Handle, SW_HIDE);
                    ShowWindow(StartHandle, SW_HIDE);
                }
            }
            catch { }
        }
}
Joseph
  • 1,716
  • 3
  • 24
  • 42