_bstr_t 和_variant_t

_variant_t和_bstr_t类用于封装VARIANT和BSTR数据类型,这两种类型是COM中常用的数据类型。在ADO编程中,可以通过这两个类实现C++变量到COM变量的转换。本文介绍如何使用这些类进行连接对象的创建和记录集对象的赋值。

_variant_t和_bstr_t这两个类分别封装并管理VARIANT和BSTR这两种数据类型,  VARIANT和BSTR这两种类型是COM中使用的数据类型。 

 为了C++中的变量应用到ADO编程中,只能进行数据类型的转换。  通过_variant_t和_bstr_t这两个类,就可以方便的把C++类型变量转换成COM中的变量了。 

   m_Pconn->Open((_bstr_t)SQL,"","",adModeUnknown);//连接对象真正的连接


    m_pRecordset->Open( _variant_t(strsql) ,theApp.m_pConnection.GetInterfacePtr(),
                                            adOpenDynamic,adLockOptimistic,adCmdText);//记录集对象真正的赋值

//注意:在给记录集赋值时候,要注意后面还有一个连接对象的名称,,所以一定要注意命名问题!!1


这两行都很重要,,必背!!

bool MainWindow::setAutoStartViaTaskScheduler(bool enable) { HRESULT hr = CoInitializeEx(NULL, COINIT_MULTITHREADED); if (FAILED(hr)) return false; ITaskService* pService = NULL; hr = CoCreateInstance(CLSID_TaskScheduler, NULL, CLSCTX_INPROC_SERVER, IID_ITaskService, (void**)&pService); if (FAILED(hr)) return false; hr = pService->Connect(_variant_t(), _variant_t(), _variant_t(), _variant_t()); if (FAILED(hr)) { pService->Release(); return false; } ITaskFolder* pRootFolder = NULL; hr = pService->GetFolder(_bstr_t(L"\\"), &pRootFolder); if (FAILED(hr)) { pService->Release(); return false; } if (enable) { // 创建任务定义 IRegisteredTask* pRegisteredTask = NULL; ITriggerCollection* pTriggerCollection = NULL; ITrigger* pTrigger = NULL; IActionCollection* pActionCollection = NULL; IAction* pAction = NULL; IExecAction* pExecAction = NULL; ITaskDefinition* pTask = NULL; hr = pService->NewTask(0, &pTask); if (SUCCEEDED(hr)) { // 设置任务基本信息 pTask->put_Author(_bstr_t(L"QtApp")); pTask->put_Description(_bstr_t(L"Auto start Qt application")); // 配置触发器(登录时触发) hr = pTask->get_Triggers(&pTriggerCollection); if (SUCCEEDED(hr)) { hr = pTriggerCollection->Create(TASK_TRIGGER_LOGON, &pTrigger); if (SUCCEEDED(hr)) { ILogonTrigger* pLogonTrigger = NULL; hr = pTrigger->QueryInterface(IID_ILogonTrigger, (void**)&pLogonTrigger); if (SUCCEEDED(hr)) { pLogonTrigger->put_Id(_bstr_t(L"QtAppTrigger")); pLogonTrigger->Release(); } pTrigger->Release(); } } // 配置操作(启动EXE) hr = pTask->get_Actions(&pActionCollection); if (SUCCEEDED(hr)) { hr = pActionCollection->Create(TASK_ACTION_EXEC, &pAction); if (SUCCEEDED(hr)) { hr = pAction->QueryInterface(IID_IExecAction, (void**)&pExecAction); if (SUCCEEDED(hr)) { QString appPath = QCoreApplication::applicationFilePath().replace('/', '\\'); pExecAction->put_Path(_bstr_t(appPath.toStdWString().c_str())); pExecAction->Release(); } pAction->Release(); } } // 注册任务 hr = pRootFolder->RegisterTaskDefinition( _bstr_t(L"QtAppAutoStart"), pTask, TASK_CREATE_OR_UPDATE, _variant_t(L""), _variant_t(), TASK_LOGON_INTERACTIVE_TOKEN, _variant_t(L""), &pRegisteredTask); if (SUCCEEDED(hr)) { pRegisteredTask->Release(); } pTask->Release(); } } else { // 删除任务 pRootFolder->DeleteTask(_bstr_t(L"QtAppAutoStart"), 0); } pRootFolder->Release(); pService->Release(); CoUninitialize(); return SUCCEEDED(hr); } mainwindow.cpp:68:20: No member named 'put_Author' in 'ITaskDefinition'
最新发布
09-30
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值