1 // ProfileSection.cpp : CProfileSection
\82Ì
\83C
\83\93\83v
\83\8a\83\81\83\93\83e
\81[
\83V
\83\87\83\93
3 #include "SeraphyScriptTools.h"
4 #include "ProfileSection.h"
6 /////////////////////////////////////////////////////////////////////////////
9 STDMETHODIMP CProfileSection::InterfaceSupportsErrorInfo(REFIID riid)
11 static const IID* arr[] =
13 &IID_ISeraphyScriptTools_ProfileSection
15 for (int i=0; i < sizeof(arr) / sizeof(arr[0]); i++)
17 if (IsEqualGUID(*arr[i],riid))
23 STDMETHODIMP CProfileSection::get_Value(VARIANT idx, VARIANT *pVal)
27 CHAR szKeyname[MAX_PATH] = { 0 };
28 const int siz = 1024 * 8; // 8KBytes
29 LPSTR szReturn = new CHAR[siz];
30 if(varIdx.ChangeType(VT_BSTR,&idx) == S_OK){
31 WideCharToMultiByte(GetACP(),0,varIdx.bstrVal,-1,szKeyname,MAX_PATH,NULL,NULL);
33 if(GetPrivateProfileString(m_szSectionName,szKeyname,"",szReturn,siz,m_szProfilePath)){
34 CComVariant ret((LPCSTR)szReturn);
41 STDMETHODIMP CProfileSection::put_Value(VARIANT idx, VARIANT newVal)
43 //
\83f
\83B
\83t
\83H
\83\8b\83g
\82Ì
\92l
\82Â
\82«
\8eæ
\93¾
44 CComVariant varIdx,varNew;
45 CHAR szKeyname[MAX_PATH] = { 0 };
46 const int siz = 1024 * 8; // 8KBytes
47 LPSTR szWrite = new CHAR[siz+1];
48 if(varIdx.ChangeType(VT_BSTR,&idx) == S_OK){
49 WideCharToMultiByte(GetACP(),0,varIdx.bstrVal,-1,szKeyname,MAX_PATH,NULL,NULL);
51 if(varNew.ChangeType(VT_BSTR,&newVal) == S_OK){
52 int cnt = WideCharToMultiByte(GetACP(),0,varNew.bstrVal,-1,szWrite,siz,NULL,NULL);
55 WritePrivateProfileString(m_szSectionName,szKeyname,szWrite,m_szProfilePath);
60 STDMETHODIMP CProfileSection::GetValue(VARIANT idx, VARIANT def,VARIANT* pVal)
62 //
\83f
\83B
\83t
\83H
\83\8b\83g
\82Ì
\92l
\82Â
\82«
\8eæ
\93¾
64 CComVariant varIdx,varDef;
65 CHAR szKeyname[MAX_PATH] = { 0 };
66 CHAR szDefault[MAX_PATH] = { 0 };
67 const int siz = 1024 * 8; // 8KBytes
68 LPSTR szReturn = new CHAR[siz];
69 if(varIdx.ChangeType(VT_BSTR,&idx) == S_OK){
70 WideCharToMultiByte(GetACP(),0,varIdx.bstrVal,-1,szKeyname,MAX_PATH,NULL,NULL);
72 if(varDef.ChangeType(VT_BSTR,&def) == S_OK){
73 WideCharToMultiByte(GetACP(),0,varDef.bstrVal,-1,szDefault,MAX_PATH,NULL,NULL);
75 if(GetPrivateProfileString(m_szSectionName,szKeyname,szDefault,szReturn,siz,m_szProfilePath)){
76 CComVariant ret((LPCSTR)szReturn);
83 STDMETHODIMP CProfileSection::GetKeyNames(VARIANT *pVal)
85 //
\83L
\81[
\96¼
\82Ì
\97ñ
\8b\93\82ð
\8ds
\82¤
89 LPSTR pBuf = new CHAR[siz];
90 while( (retsiz = GetPrivateProfileSection(m_szSectionName,pBuf,siz,m_szProfilePath)) &&
91 (retsiz == (siz - 2)) && ( oldsiz != retsiz ) ){
97 //
\83J
\83E
\83\93\83g
\82·
\82é
104 //
\88ê
\8e\9f\94z
\97ñ
\82Ì
\90¶
\90¬
105 SAFEARRAY* pArray = SafeArrayCreateVector(VT_VARIANT,0,count);
119 SafeArrayPutElement(pArray,&idx,&tmp);
126 pVal->vt = VT_VARIANT | VT_ARRAY;
127 pVal->parray = pArray;