Iwao Dev

気付いたことをメモしています.

この画面は、簡易表示です

2011年11月7日

Shell.Tile…

以前,デスクトップ上のウィンドウを操作したいことがあった.


ToggleDT.scf
[Shell]
Command=2
IconFile=explorer.exe,3
[Taskbar]
Command=ToggleDesktop


TileVert.vbs
Set objShell = CreateObject(“Shell.Application”)
objShell.TileVertically


TileHorz.vbs
Set objShell = CreateObject(“Shell.Application”)
objShell.TileHorizontally


CascadeW.vbs
Set objShell = CreateObject(“Shell.Application”)
objShell.CascadeWindows


//**************************************************************************************************
// ファイル名 :CtrlDskT.cxx
// 機能名 :デスクトップの制御
// 作成者 :
// 作成年月日 :’07/08/08
// 変更履歴 :
//**************************************************************************************************
//
#include <Afx.h>

#include "DelFileE.hxx"
#include "CharMFC.hxx"
#include "ShellExc.hxx"
#include "HelpAPI.hxx"
#include "CtrlDskT.hxx"

////
//*******************************************************************************
// 関数名 :デスクトップの表示
// 作成日 :’07/08/08
//*******************************************************************************
// http://support.microsoft.com/kb/190355/ja
// クイック起動バーに [デスクトップの表示] アイコンを再登録する方法
BOOL ControlDesktop::ToggleDesktop (void)
{
  CString td_scf = ::GetTempPath()+_T("Command.tmp\\") + _T("ToggleDT.scf") ;
  if (::FileIsNothing(td_scf)) {
  // "デスクトップの表示.scf" の生成
    ::CreateEmptyFile(td_scf) ;
    CString tdCmd ;
    tdCmd += _T("[Shell]\r\n") ;
    tdCmd += _T("Command=2\r\n") ;
    tdCmd += _T("IconFile=explorer.exe,3\r\n") ;
    tdCmd += _T("[Taskbar]\r\n") ;
    tdCmd += _T("Command=ToggleDesktop\r\n") ;
    ::SaveText(td_scf,tdCmd) ;
    }
  ShellExec se ;
  se.SetFile(td_scf) ;
  se.Execute() ;
  { // 終了時に削除するように登録
    static DelFileE dfe ;
    dfe.Add(td_scf) ;
    }
  return TRUE ;
  }

////
//*******************************************************************************
// 関数名 :重ねて表示,上下に並べて表示,左右に並べて表示
// 作成日 :’07/08/08
//*******************************************************************************
// http://www.microsoft.com/japan/technet/scriptcenter/resources/qanda/jul05/hey0726.mspx
// Hey, Scripting Guy! デスクトップ上にウィンドウを並べて表示する方法はありますか
#define CD_AW_CascadeW 0
#define CD_AW_TileHorz 1
#define CD_AW_TileVert 2

BOOL ControlDesktop::CascadeWindows (void) { return
ArrangeWindows(CD_AW_CascadeW) ; }
BOOL ControlDesktop::TileHorizontally(void) { return
ArrangeWindows(CD_AW_TileHorz) ; }
BOOL ControlDesktop::TileVertically (void) { return
ArrangeWindows(CD_AW_TileVert) ; }

BOOL ControlDesktop::ArrangeWindows (const long type)
{
  CString cw_vbs = ::GetTempPath()+_T("Command.tmp\\") + _T("CascadeW.vbs") ;
  CString th_vbs = ::GetTempPath()+_T("Command.tmp\\") + _T("TileHorz.vbs") ;
  CString tv_vbs = ::GetTempPath()+_T("Command.tmp\\") + _T("TileVert.vbs") ;
  CString cmdvbs ;
  CString cmdExc ;
  switch (type) {
    case CD_AW_CascadeW : cmdvbs = cw_vbs ; cmdExc = _T("objShell.CascadeWindows \r\n") ; break ;
    case CD_AW_TileHorz : cmdvbs = th_vbs ; cmdExc = _T("objShell.TileHorizontally \r\n") ; break ;
    case CD_AW_TileVert : cmdvbs = tv_vbs ; cmdExc = _T("objShell.TileVertically \r\n") ; break ;
    default : cmdvbs = cw_vbs ; cmdExc = _T("objShell.CascadeWindows \r\n") ; break ;
    }
  if (::FileIsNothing(cmdvbs)) {
    ::CreateEmptyFile(cmdvbs) ;
    CString awCmd ;
    awCmd += _T("Set objShell = CreateObject(\"Shell.Application\")\r\n") ;
    awCmd += cmdExc ;
      // objShell.TileHorizontally
      // objShell.TileVertically
      // objShell.CascadeWindows
    ::SaveText(cmdvbs,awCmd) ;
    }
  ShellExec se ;
  se.SetFile(cmdvbs) ;
  se.SetShowCmd(SW_HIDE) ;
  se.Execute() ;
  { // 終了時に削除するように登録
    static DelFileE dfe ;
    dfe.Add(cmdvbs) ;
    }
  return TRUE ;
  }

デスクトップ上にウィンドウを並べて表示する方法はありますか
Shell.TileHorizontally method

この投稿は役に立ちましたか? 役に立った 役に立たなかった 0 人中 0 人がこの 投稿 は役に立ったと言っています。

  にほんブログ村 IT技術ブログへ



    top

    %d人のブロガーが「いいね」をつけました。