[BlueLeaf1336]> PROBLEMS> DelphiでShellオブジェクトを使う>
| history | TOP |
2006/06/01:作成
| 2006/06/01 | TOP |
とりあえず、誰でもできるところからはじめます。Shellオブジェクトのメソッドのうち、procedureタイプのもの、つまり、戻り値のないやりっぱなしの関数です。
画面のボタンひとつがそれぞれのメソッドひとつに対応しています。基本的に、スタートメニューとタスクバーから実行できるコトばかりです。数秒考えて、全てのボタンクリックのイベントでShellオブジェクトを作って、メソッドをひとつ実行してShellオブジェクトを捨てるようにしています。
実行結果は...やってみなくてもわかると思います。ただし、動作確認したのは、WindowsXPなので、Windows2000でどうなるかはわかりません。また、「PCの取り出し(EjectPC)」と「サスペンド(Suspend)」は実行しても何も起こりませんでした。
Level1.zip(166,861Bytes) ソースコードと実行ファイルです。
| コード | TOP |
uses
ComObj, Variants;
{$R *.dfm}
// http://www2.moug.net/bbs/wordvba/20060517000002.htm
// http://leed.issp.u-tokyo.ac.jp/~takeuchi/delphi/article/043/043760.html
// http://pc.2ch.net/tech/kako/1019/10196/1019654975.html
// ms-help://MS.PSDK.1033/shellcc/platform/shell/reference/objects/shell/shell.htm
// 特殊フォルダを列挙
type
TShellSpecialFolderConstants =
(
ssfALTSTARTUP = $1d,
ssfAPPDATA = $1a,
ssfBITBUCKET = $a,
ssfCOMMONALTSTARTUP = $1e,
ssfCOMMONAPPDATA = $23,
ssfCOMMONDESKTOPDIR = $19,
ssfCOMMONFAVORITES = $1f,
ssfCOMMONPROGRAMS = $17,
ssfCOMMONSTARTMENU = $16,
ssfCOMMONSTARTUP = $18,
ssfCONTROLS = $3,
ssfCOOKIES = $21,
ssfDESKTOP = $0,
ssfDESKTOPDIRECTORY = $10,
ssfDRIVES = $11,
ssfFAVORITES = $6,
ssfFONTS = $14,
ssfHISTORY = $22,
ssfINTERNETCACHE = $20,
ssfLOCALAPPDATA = $1c,
ssfMYPICTURES = $27,
ssfNETHOOD = $13,
ssfNETWORK = $12,
ssfPERSONAL = $5,
ssfPRINTERS = $4,
ssfPRINTHOOD = $1b,
ssfPROFILE = $28,
ssfPROGRAMFILES = $26,
ssfPROGRAMS = $2,
ssfRECENT = $8,
ssfSENDTO = $9,
ssfSTARTMENU = $b,
ssfSTARTUP = $7,
ssfSYSTEM = $25,
ssfTEMPLATES = $15,
ssfWINDOWS = $24
);
//-----------------------------------------------------------------------------
// ウィンドウを重ねて表示
procedure TForm1.Button1Click(Sender: TObject);
var
Shell: OleVariant;
begin
Shell := CreateOleObject('Shell.Application');
Shell.CascadeWindows;
Shell := Unassigned;
end;
//-----------------------------------------------------------------------------
// コントロールパネル実行
// C:\Windows\system32\*.cpl を指定する
procedure TForm1.Button2Click(Sender: TObject);
var
Shell: OleVariant;
begin
Shell := CreateOleObject('Shell.Application');
Shell.ControlPanelItem('desk.cpl');
Shell := Unassigned;
end;
//-----------------------------------------------------------------------------
// PCの取り出し(if your computer supports this command)...意味不明
procedure TForm1.Button3Click(Sender: TObject);
var
Shell: OleVariant;
begin
Shell := CreateOleObject('Shell.Application');
Shell.EjectPC;
Shell := Unassigned;
end;
//-----------------------------------------------------------------------------
// 特殊フォルダをエクスプローラ表示
procedure TForm1.Button4Click(Sender: TObject);
var
Shell: OleVariant;
begin
Shell := CreateOleObject('Shell.Application');
Shell.Explore(Integer(ssfMYPICTURES));
Shell := Unassigned;
end;
//-----------------------------------------------------------------------------
// フォルダをエクスプローラ表示
procedure TForm1.Button5Click(Sender: TObject);
var
Shell: OleVariant;
begin
Shell := CreateOleObject('Shell.Application');
Shell.Explore('C:\Windows\');
Shell := Unassigned;
end;
//-----------------------------------------------------------------------------
// ファイル名を指定して実行...
procedure TForm1.Button6Click(Sender: TObject);
var
Shell: OleVariant;
begin
Shell := CreateOleObject('Shell.Application');
Shell.FileRun;
Shell := Unassigned;
end;
//-----------------------------------------------------------------------------
// コンピュータを検索
procedure TForm1.Button7Click(Sender: TObject);
var
Shell: OleVariant;
begin
Shell := CreateOleObject('Shell.Application');
Shell.FindComputer;
Shell := Unassigned;
end;
//-----------------------------------------------------------------------------
// ファイルやフォルダを検索
procedure TForm1.Button8Click(Sender: TObject);
var
Shell: OleVariant;
begin
Shell := CreateOleObject('Shell.Application');
Shell.FindFiles;
Shell := Unassigned;
end;
//-----------------------------------------------------------------------------
// ヘルプとサポート
procedure TForm1.Button9Click(Sender: TObject);
var
Shell: OleVariant;
begin
Shell := CreateOleObject('Shell.Application');
Shell.Help;
Shell := Unassigned;
end;
//-----------------------------------------------------------------------------
// デスクトップを表示
procedure TForm1.Button10Click(Sender: TObject);
var
Shell: OleVariant;
begin
Shell := CreateOleObject('Shell.Application');
Shell.MinimizeAll;
Shell := Unassigned;
end;
//-----------------------------------------------------------------------------
// 特殊フォルダを開く
procedure TForm1.Button11Click(Sender: TObject);
var
Shell: OleVariant;
begin
Shell := CreateOleObject('Shell.Application');
Shell.Open(Integer(ssfMYPICTURES));
Shell := Unassigned;
end;
//-----------------------------------------------------------------------------
// フォルダを開く
procedure TForm1.Button12Click(Sender: TObject);
var
Shell: OleVariant;
begin
Shell := CreateOleObject('Shell.Application');
Shell.Open('C:\Windows\');
Shell := Unassigned;
end;
//-----------------------------------------------------------------------------
// スタートメニューを最新の状態に更新
procedure TForm1.Button13Click(Sender: TObject);
var
Shell: OleVariant;
begin
Shell := CreateOleObject('Shell.Application');
Shell.RefreshMenu;
Shell := Unassigned;
end;
//-----------------------------------------------------------------------------
// 日付と時刻の調整
procedure TForm1.Button14Click(Sender: TObject);
var
Shell: OleVariant;
begin
Shell := CreateOleObject('Shell.Application');
Shell.SetTime;
Shell := Unassigned;
end;
//-----------------------------------------------------------------------------
// 終了オプション
procedure TForm1.Button15Click(Sender: TObject);
var
Shell: OleVariant;
begin
Shell := CreateOleObject('Shell.Application');
Shell.ShutdownWindows;
Shell := Unassigned;
end;
//-----------------------------------------------------------------------------
// サスペンド(for computers that support suspending)
procedure TForm1.Button16Click(Sender: TObject);
var
Shell: OleVariant;
begin
Shell := CreateOleObject('Shell.Application');
Shell.Suspend;
Shell := Unassigned;
end;
//-----------------------------------------------------------------------------
// ウィンドウを上下に並べて表示
procedure TForm1.Button17Click(Sender: TObject);
var
Shell: OleVariant;
begin
Shell := CreateOleObject('Shell.Application');
Shell.TileHorizontally;
Shell := Unassigned;
end;
//-----------------------------------------------------------------------------
// ウィンドウを左右に並べて表示
procedure TForm1.Button18Click(Sender: TObject);
var
Shell: OleVariant;
begin
Shell := CreateOleObject('Shell.Application');
Shell.TileVertically;
Shell := Unassigned;
end;
//-----------------------------------------------------------------------------
// タスクバーのプロパティ
procedure TForm1.Button19Click(Sender: TObject);
var
Shell: OleVariant;
begin
Shell := CreateOleObject('Shell.Application');
Shell.TrayProperties;
Shell := Unassigned;
end;
//-----------------------------------------------------------------------------
// ウィンドウを元に戻す
procedure TForm1.Button20Click(Sender: TObject);
var
Shell: OleVariant;
begin
Shell := CreateOleObject('Shell.Application');
Shell.UndoMinimizeALL;
Shell := Unassigned;
end;
| EOF | TOP |