ユーザーにできるだけWindowsのシステム変更をさせないため、また使用機能を限定するために、Windowsのスタートボタンを消すことを頼まれました。
ちょっとググったところタスクバーのウィンドウハンドルからButtonクラスのウィンドウハンドルを見つけShowWindowでSH_HIDEすれば隠れるとの記事が多量に検索できました。
しかし、これを試してみると、Buttonウィンドウのハンドルが見つかりません。
SPY++で確認してみる
のVisual Studio のSPY++でWindows10のスタートボタンのハンドルを調査したところ、「Start」というクラスになっていました。Window10で変わったのかな?
ご参考になれば幸いです。
サンプルプログラム
using System.Runtime.InteropServices;
public partial class MainWindow : Window
{
const int SW_HIDE = 0;
const int SW_SHOW = 5;
[DllImport("user32.dll", CharSet = CharSet.Auto, SetLastError = true)]
public static extern IntPtr FindWindow(string lpClassName, string lpWindowName);
[DllImport("user32.dll", SetLastError = true, CharSet = CharSet.Auto)]
public static extern IntPtr FindWindowEx(IntPtr parentWnd, IntPtr previousWnd, string className, string windowText);
private void Window_Loaded(object sender, RoutedEventArgs e)
{
IntPtr taskBar, startButton;
taskBar = FindWindow("Shell_TrayWnd", null); // タスクバーのウィンドウハンドル取得
startButton = FindWindowEx(taskBar, IntPtr.Zero, "Start", null);
ShowWindow(startButton, SW_HIDE); // スタートボタンを消す
}
}
Startボタンが消えています。