怎样用程序隐藏开始菜单?谢谢!

解决方案 »

  1.   

    隐藏不知道,只知道禁用
    HKEY_CURRENT_USER\Software\Microsoft\Windows\CurrentVersion\Policies\Explorer在右边的窗口中创建一个DOWRD值:"NoChangeStartMenu",并将其值设为“1”
      

  2.   

    showwindow(findwindow('Shell_TrayWnd',nil),SW_HIDE); // 隐藏 
    showwindow(findwindow('Shell_TrayWnd',nil),SW_NORMAL); // 恢复
      

  3.   

    var
      hwndTask,hwndStart : THandle;
    begin
      hwndTask  := FindWindow('Shell_TrayWnd','');
      hwndStart := FindWindowEx(hwndTask,0,'Button','');
      ShowWindow(hwndStart,SW_HIDE);
    end;
      

  4.   

    呵呵
    可以啦!
    // 隐藏var
     h:hwnd;
    begin
      h := FindWindowEx(FindWindow('Shell_TrayWnd', nil),0,'Button',nil);
      ShowWindow(h,SW_HIDE);
    end;
    // 恢复
    var
     h:hwnd;
    begin
      h := FindWindowEx(FindWindow('Shell_TrayWnd', nil),0,'Button',nil);
      ShowWindow(h,SW_NORMAL);
    end;刚刚测试过的!
      

  5.   

    我的测试代码:// 隐藏
    procedure TForm1.Button1Click(Sender: TObject);
    var
     h:hwnd;
    begin
      h := FindWindowEx(FindWindow('Shell_TrayWnd', nil),0,'Button',nil);
      ShowWindow(h,SW_HIDE);
    end;
    // 恢复
    procedure TForm1.Button2Click(Sender: TObject);
    var
     h:hwnd;
    begin
      h := FindWindowEx(FindWindow('Shell_TrayWnd', nil),0,'Button',nil);
      ShowWindow(h,SW_NORMAL);
    end;
      

  6.   

    估计难 因为 windows键 很难 拦截 最好写 HOOK拦截 这个键 
    同时:
    void StartButton(bool Visible)
    {
     HWND  hTaskBarWindow  ;
    hTaskBarWindow=FindWindow("Shell_TrayWnd",NULL);
    if (hTaskBarWindow!=0)
     {
      hTaskBarWindow = FindWindowEx(hTaskBarWindow,0,"Button",NULL);
      EnableWindow(hTaskBarWindow,Visible);
     }
    }
      

  7.   

    procedure hideStartbutton(visi:boolean);
      Var
        Tray, Child : hWnd;
        C : Array[0..127] of Char;
        S : String;  Begin
        Tray := FindWindow('Shell_TrayWnd', NIL);
        Child := GetWindow(Tray, GW_CHILD);
        While Child <> 0
              do Begin
                   If GetClassName(Child, C, SizeOf(C)) > 0
                      Then Begin
                             S := StrPAS(C);
                             If UpperCase(S) = 'BUTTON'
                                then begin
                                       // IsWindowVisible(Child)
                                       startbutton_handle:=child;
                                       If Visi
                                          then ShowWindow(Child, 1)
                                          else ShowWindow(Child, 0);
                                     end;
                           End;
                   Child := GetWindow(Child, GW_HWNDNEXT);
                 End;
      End;
      

  8.   

    随着Win32的广泛应用,INI文件的局限性逐渐显示出来,例如不能存放二进制的数据等。虽然简单,但也不利于保密。其实注册表的操作与INI文件类似。操作注册表需要认识到注册表的六个根键。看看DELPHI的定义:const
       { Reserved Key Handles. }
       {$EXTERNALSYM HKEY_CLASSES_ROOT}
       HKEY_CLASSES_ROOT = DWORD($80000000);
       {$EXTERNALSYM HKEY_CURRENT_USER}
       HKEY_CURRENT_USER = DWORD($80000001);
       {$EXTERNALSYM HKEY_LOCAL_MACHINE}
       HKEY_LOCAL_MACHINE = DWORD($80000002);
       {$EXTERNALSYM HKEY_USERS}
       HKEY_USERS = DWORD($80000003);
       {$EXTERNALSYM HKEY_PERFORMANCE_DATA}
       HKEY_PERFORMANCE_DATA = DWORD($80000004);
       {$EXTERNALSYM HKEY_CURRENT_CONFIG}
       HKEY_CURRENT_CONFIG = DWORD($80000005);
       {$EXTERNALSYM HKEY_DYN_DATA}
       HKEY_DYN_DATA = DWORD($80000006);它们必须在TRegistry变量的RootKey属性中指定。
    要取得某一个路径的某个键值,必须找到某一个主键,例如有如下一个路径存放着WORD97存放的程序路径:
      \Software\Microsoft\Office\8.0\Word\InstallRoot\Path
    其中,PATH是键,在它前面的便是主键(键的路径),而这些键又是放在HKEY_LOCAL_MACHINE这个根键中的。当然,我们想要的是PATH对应的数据,而不是想知道有PATH这个键存在。PATH的类型是一个字符串,所以需要一个字符串变量存放它,例程中使用直接显示的方法表达它。因此,读出PATH键数据的过程就应该是,确定根键,进入主键(路径),读出键的数据值。为了体现对注册表的写操作,我们还特意创建一个主键\Software\3hsoft和里面一个字符串的键MyData。下面是一小段关于此过程的程序,虽然内容不多,但基本上已经将读写的操作表现出来了。
     unit Unit1;
    interface
    uses
      Windows, Messages, SysUtils, Classes, Graphics, Controls, Forms,
      Dialogs, StdCtrls, Registry; // 记得要加入这个红色的。
    type
      TForm1 = class(TForm)
          Button1: TButton;
          procedure Button1Click(Sender: TObject);
      end;
    var
      Form1: TForm1;
    implementation
    {$R *.DFM}procedure TForm1.Button1Click(Sender: TObject);
    Const
      FPath = '\Software\Microsoft\Office\8.0\Word\InstallRoot';
      FKey = 'Path';
      FMyPath = '\Software\3hSoft';
      FMyKey = 'MyData';
    Var
      Reg : TRegistry;
    begin
      Reg := TRegistry.Create;
      try
        Reg.RootKey := HKEY_LOCAL_MACHINE;
        If Reg.OpenKey(FPath, False) then
           ShowMessage(Reg.ReadString(FKey)); // 读出的 WinWord 的路径就显示出来了。
        Reg.CreateKey(FMyPath);      // 创建我们的主键
        Reg.OpenKey(FMyPath, True);  // 进入我们自己的主键中
        Reg.WriteString(FMyKey, 'This is a registry operation test program.');
            // 写进键值。
      finally
        Reg.Free; // 用 Try..Finally 结构确保 REG 变量能够释放。
      end;
    end;
    end. 
      

  9.   

    showwindow(findwindow('Shell_TrayWnd',nil),SW_HIDE); findwindow('Shell_TrayWnd',nil)返回开始菜单的句柄。showwindow显示开始菜单,sw_hide 指明显示方式为隐藏。
      

  10.   

    SORRY ,
    var
      hwndTask,hwndStart : THandle;
    begin
      hwndTask  := FindWindow('Shell_TrayWnd','');
      hwndStart := FindWindowEx(hwndTask,0,'Button','');
      ShowWindow(hwndStart,SW_HIDE);
    end;
    这段代码是可以的,我测试过了,OK