Ke tal raguin, kisiera agradecerte una vez mas por toda la ayuda ke me has brindado, y aprovecho la oportunidad para comentarte otra duda, bueno en realidad dos. La primera es que necesito desde mi aplicación llamar a devmgmt.msc ke está en system32 ke es el administrador de dispositivos, pensé ke lo podía hacer con: system("C:\WINNT\system32\devmgmt.msc"); pero no funcionó, la pregunta es cómo podria hacerlo.
La segunda tiene ke ver con datos tipo VARIANT, usando la CMSComm la función ke lee la entrada del puerto me devueve un dato VARIANT, y no un CString como es de esperarse, me pregunto como convertirlo a un CString o a una array char. GRACIAS por tu atención... un saludo......... the hippiex...
1 respuesta
Respuesta de raguin
1
1
raguin, Pues porque veo que eres un curioson, soy Ingeniero Tecnico de...
De nuevo the hippiex, perdona la tardanza, he estado con gripe esta ultima semana. Para ejecutar una aplicacion externa desde VC usa la funcion WinExec, aunq en este caso, no siendo un ejecutable no se si funcionara, yo no lo he probado. Para lo de los tipos variant, aki t pasteo una clase q seguramente t sea de ayuda class CCrack { public: static LPCTSTR strFieldType(short sType); static LPCTSTR strQueryDefType(short sType); static LPCTSTR strBOOL(BOOL bFlag); static CString strVARIANT(const COleVariant& var); }; LPCTSTR CCrack::strFieldType(short sType) { switch(sType){ case (dbBoolean): return _T("Bool"); case (dbByte): return _T("Byte"); case (dbInteger): return _T("Integer"); case (dbLong): return _T("Long"); case (dbCurrency): return _T("Currency"); case (dbSingle): return _T("Single"); case (dbDouble): return _T("Double"); case (dbDate): return _T("Date"); case (dbText): return _T("Text"); case (dbLongBinary): return _T("Long Binary"); case (dbMemo): return _T("Memo"); case (dbGUID): return _T("GUID"); } return _T("Unknown"); } LPCTSTR CCrack::strQueryDefType(short sType) { switch(sType){ case (dbQSelect): return _T("Select"); case (dbQAction): return _T("Action"); case (dbQCrosstab): return _T("Crosstab"); case (dbQDelete): return _T("Delete"); case (dbQUpdate): return _T("Update"); case (dbQAppend): return _T("Append"); case (dbQMakeTable): return _T("MakeTable"); case (dbQDDL): return _T("DDL"); case (dbQSQLPassThrough): return _T("SQLPassThrough"); case (dbQSetOperation): return _T("Set Operation"); case (dbQSPTBulk): return _T("SPTBulk"); } return _T("Unknown"); } LPCTSTR CCrack::strBOOL(BOOL bFlag) { return bFlag ? _T("TRUE") : _T("FALSE"); } CString CCrack::strVARIANT(const COleVariant& var) { CString strRet; strRet = _T("Fish"); switch(var.vt){ case VT_EMPTY: case VT_NULL: strRet = _T("NULL"); break; case VT_I2: strRet.Format(_T("%hd"),V_I2(&var)); break; case VT_I4: strRet.Format(_T("%d"),V_I4(&var)); break; case VT_R4: strRet.Format(_T("%e"),(double)V_R4(&var)); break; case VT_R8: strRet.Format(_T("%e"),V_R8(&var)); break; case VT_CY: strRet = COleCurrency(var).Format(); break; case VT_DATE: strRet = COleDateTime(var).Format(_T("%m %d %y")); break; case VT_BSTR: strRet = V_BSTRT(&var); break; case VT_DISPATCH: strRet = _T("VT_DISPATCH"); break; case VT_ERROR: strRet = _T("VT_ERROR"); break; case VT_BOOL: return strBOOL(V_BOOL(&var)); case VT_VARIANT: strRet = _T("VT_VARIANT"); break; case VT_UNKNOWN: strRet = _T("VT_UNKNOWN"); break; case VT_I1: strRet = _T("VT_I1"); break; case VT_UI1: strRet.Format(_T("0x%02hX"),(unsigned short)V_UI1(&var)); break; case VT_UI2: strRet = _T("VT_UI2"); break; case VT_UI4: strRet = _T("VT_UI4"); break; case VT_I8: strRet = _T("VT_I8"); break; case VT_UI8: strRet = _T("VT_UI8"); break; case VT_INT: strRet = _T("VT_INT"); break; case VT_UINT: strRet = _T("VT_UINT"); break; case VT_VOID: strRet = _T("VT_VOID"); break; case VT_HRESULT: strRet = _T("VT_HRESULT"); break; case VT_PTR: strRet = _T("VT_PTR"); break; case VT_SAFEARRAY: strRet = _T("VT_SAFEARRAY"); break; case VT_CARRAY: strRet = _T("VT_CARRAY"); break; case VT_USERDEFINED: strRet = _T("VT_USERDEFINED"); break; case VT_LPSTR: strRet = _T("VT_LPSTR"); break; case VT_LPWSTR: strRet = _T("VT_LPWSTR"); break; case VT_FILETIME: strRet = _T("VT_FILETIME"); break; case VT_BLOB: strRet = _T("VT_BLOB"); break; case VT_STREAM: strRet = _T("VT_STREAM"); break; case VT_STORAGE: strRet = _T("VT_STORAGE"); break; case VT_STREAMED_OBJECT: strRet = _T("VT_STREAMED_OBJECT"); break; case VT_STORED_OBJECT: strRet = _T("VT_STORED_OBJECT"); break; case VT_BLOB_OBJECT: strRet = _T("VT_BLOB_OBJECT"); break; case VT_CF: strRet = _T("VT_CF"); break; case VT_CLSID: strRet = _T("VT_CLSID"); break; } WORD vt = var.vt; if(vt & VT_ARRAY){ vt = vt & ~VT_ARRAY; strRet = _T("Array of "); } if(vt & VT_BYREF){ vt = vt & ~VT_BYREF; strRet += _T("Pointer to "); } if(vt != var.vt){ switch(vt){ case VT_EMPTY: strRet += _T("VT_EMPTY"); break; case VT_NULL: strRet += _T("VT_NULL"); break; case VT_I2: strRet += _T("VT_I2"); break; case VT_I4: strRet += _T("VT_I4"); break; case VT_R4: strRet += _T("VT_R4"); break; case VT_R8: strRet += _T("VT_R8"); break; case VT_CY: strRet += _T("VT_CY"); break; case VT_DATE: strRet += _T("VT_DATE"); break; case VT_BSTR: strRet += _T("VT_BSTR"); break; case VT_DISPATCH: strRet += _T("VT_DISPATCH"); break; case VT_ERROR: strRet += _T("VT_ERROR"); break; case VT_BOOL: strRet += _T("VT_BOOL"); break; case VT_VARIANT: strRet += _T("VT_VARIANT"); break; case VT_UNKNOWN: strRet += _T("VT_UNKNOWN"); break; case VT_I1: strRet += _T("VT_I1"); break; case VT_UI1: strRet += _T("VT_UI1"); break; case VT_UI2: strRet += _T("VT_UI2"); break; case VT_UI4: strRet += _T("VT_UI4"); break; case VT_I8: strRet += _T("VT_I8"); break; case VT_UI8: strRet += _T("VT_UI8"); break; case VT_INT: strRet += _T("VT_INT"); break; case VT_UINT: strRet += _T("VT_UINT"); break; case VT_VOID: strRet += _T("VT_VOID"); break; case VT_HRESULT: strRet += _T("VT_HRESULT"); break; case VT_PTR: strRet += _T("VT_PTR"); break; case VT_SAFEARRAY: strRet += _T("VT_SAFEARRAY"); break; case VT_CARRAY: strRet += _T("VT_CARRAY"); break; case VT_USERDEFINED: strRet += _T("VT_USERDEFINED"); break; case VT_LPSTR: strRet += _T("VT_LPSTR"); break; case VT_LPWSTR: strRet += _T("VT_LPWSTR"); break; case VT_FILETIME: strRet += _T("VT_FILETIME"); break; case VT_BLOB: strRet += _T("VT_BLOB"); break; case VT_STREAM: strRet += _T("VT_STREAM"); break; case VT_STORAGE: strRet += _T("VT_STORAGE"); break; case VT_STREAMED_OBJECT: strRet += _T("VT_STREAMED_OBJECT"); break; case VT_STORED_OBJECT: strRet += _T("VT_STORED_OBJECT"); break; case VT_BLOB_OBJECT: strRet += _T("VT_BLOB_OBJECT"); break; case VT_CF: strRet += _T("VT_CF"); break; case VT_CLSID: strRet += _T("VT_CLSID"); break; } } return strRet; } Pruebalo y m cuentas. Raguin