0

コンテキスト:Windows 7、XLW 5.x、Microsoft Excel 2007、Visual Studio 2010、C ++

次のコードを考えると...

#import "c:\windows\system32\scrrun.dll" raw_interfaces_only, \
raw_native_types, \
named_guids, \
rename("DeleteFile", "_DeleteFile"), \
rename("MoveFile","_MoveFile"), \
rename("CopyFile", "_CopyFile"), \
rename("GetFreeSpace", "_GetFreeSpace")
using namespace Scripting;

FileSystemObjectをインスタンス化し、そのメソッドを呼び出すにはどうすればよいですか?

4

1 に答える 1

1

これは私のために働いた

std::wstring fileExists(std::wstring name)
{
    VARIANT_BOOL b = 0;
    ::CoInitialize(NULL);
    {
        CComPtr<IFileSystem> spFSO;
        HRESULT hr = spFSO.CoCreateInstance(L"Scripting.FileSystemObject");
        if (SUCCEEDED(hr) && spFSO)
        {
            BSTR theName = SysAllocStringLen( name.data(), name.size());
            hr = spFSO->FileExists(theName, &b);
        }
    }
    ::CoUninitialize();
    return (b == -1) ? L"Exists" : L"Doesn't exist";
}

それは少なくとも私を機能に接続させました。状況に合わせて正しく設定する必要はまだありますが、それは投稿の範囲を超えています.

于 2013-01-06T08:19:53.853 に答える