我用showwindow函数隐藏了桌面和任务栏,为什么只要双击鼠标,开始菜单会弹出?
得到句柄是用findwindow函数.
如果桌面不隐藏,就不会出现上述情况.和任务栏显示与否没关系.
大家有没遇到这个问题?

解决方案 »

  1.   

    .在桌面上建立Desk.exe和Tray.exe的快捷方式(注意:起始位置要设成两个文件的存放目录)
    2.将Desk.exe的快捷方式移到任务栏上
    3.运行Desk.exe奇数次隐藏桌面图标,偶数次显示桌面图标
    4.运行Tray.exe奇数次隐藏任务栏,偶数次显示任务栏
    {源代码如下}
    program Desk;
    {=============================}
    {========桌面隐藏/显示========}
    {============彭 涵============}
    {============v 0.1============}
    {=============================}
    uses
      Windows,
      IniFiles,
      SysUtils;{$R *.res}
    var
      hDesktop : THandle;
      MyIni: TIniFile;
      bShow: boolean;
    begin
      hDesktop := FindWindow('ProgMan', nil);
      MyIni := TIniFile.Create(ExtractFilePath(ParamStr(0)) + 'Desk.ini');
      with MyIni do
        begin
          bShow := ReadBool('SETUP', 'DESKTOP_SHOW', False);
          if bShow then
            ShowWindow(hDesktop, SW_SHOW)
          else
            ShowWindow(hDesktop, SW_HIDE);
          WriteBool('SETUP', 'DESKTOP_SHOW', not bShow);
          UpdateFile;
          Free;
        end;
    end.program Tray;
    {=============================}
    {=======任务栏隐藏/显示=======}
    {============彭 涵============}
    {============v 0.1============}
    {=============================}
    uses
      Windows,
      IniFiles,
      SysUtils;
    {$R *.res}
    var
      hTray: THandle;
      MyIni: TIniFile;
      bShow: boolean;
    begin
      hTray := FindWindow('Shell_TrayWnd', nil);
      MyIni := TIniFile.Create(ExtractFilePath(ParamStr(0)) + 'Desk.ini');
      with MyIni do
        begin
          bShow := ReadBool('SETUP', 'SHELLTRAY_SHOW', False);
          if bShow then
            ShowWindow(hTray, SW_SHOW)
          else
            ShowWindow(hTray, SW_HIDE);
          WriteBool('SETUP', 'SHELLTRAY_SHOW', not bShow);
          UpdateFile;
          Free;
        end;
    end.
      

  2.   

    可以用程序模拟WIN+D等按健,可以不用调用SHOWWINDOW,并且绝对不会出现你说的问题