[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 |