- 2014-10-27
- Visual C++
だいぶ、ほったらかしだったんだけども、
前回
を参照してソースを書いてみる。
ヘッダー部。COMの宣言なんかを行う。
Oleviewの画面見ながらと、MSのHELP見ながらで何となく理解できると思うけど。
最初は、ひたすら書く。
#import "c:\windows\system32\scrrun.dll" raw_interfaces_only, \
raw_native_types, \
named_guids, \
rename("DeleteFile", "DelFile"), \
rename("MoveFile","MvFile"), \
rename("CopyFile", "CpFile"), \
rename("GetFreeSpace", "_GetFreeSpace")
using namespace Scripting;
本体部。COMを扱う場合は、必ず「CoInitialize」と「CoUninitialize」を行う。
void CFileSystemDlg::OnBnClickedOk()
{
HRESULT hRet = S_OK; // 結果格納用
// COMオブジェクトの初期化
hRet = ::CoInitialize(NULL);
// 初期化は成功したか?
if (hRet != S_OK)
{
//エラー処理
return;
}
CComPtr<IFileSystem> pFiso; // ファイルシステムオブジェクト
// インスタンスの生成
hRet = pFiso.CoCreateInstance( L"Scripting.FileSystemObject" );
// インスタンスは生成されたか?
if ( hRet != S_OK )
{
//エラー処理
::CoUninitialize();
return;
}
// ディレクトリの削除
hRet = pFiso->DeleteFolder( bstr_t( "C:\\Test" ), VARIANT_TRUE );
// インスタンスは生成されたか?
if ( hRet != S_OK )
{
//エラー処理
pFiso.Release();
::CoUninitialize();
return;
}
pFiso.Release();
::CoUninitialize();
}
COMインタフェース生成の方法は他にもあって、
IFileSystemPtr pFiso; hRet = pFiso.CreateInstance( "Scripting.FileSystemObject" ); とか IFileSystemPtr pFiso; hRet = pFiso.CreateInstance( __uuidof( FileSystemObject ) );
んな感じ。。
時間ができたら、補足説明書こうかな。。
しかし、これくらいの処理だと、断然VBSのが楽だな。。






