3,245
社区成员
发帖
与我相关
我的任务
分享
HRESULT hr = S_OK;
clearSession();
addNewInfo(_T("Try to connect a device....."));
CoInitialize(NULL);
// Create an instance of the IRAPIDesktop interface.
hr = CoCreateInstance(CLSID_RAPI,
NULL,
CLSCTX_INPROC_SERVER,
IID_IRAPIDesktop,
(void**)&mpIRapiDesktop);
if (hr ==0 && mpIRapiDesktop)
{
addNewInfo(_T("CoCreateInstance success"));
}else{
addNewInfo(_T("CoCreateInstance failure"));
return false;
}
// Call EnumDevices to obtain an enumeration of connected devices.
hr = mpIRapiDesktop->EnumDevices(&mpIRapiEnumDevices);
UINT CCESyncDlg::ThreadProc(LPVOID param) //线程函数
{
//数据库的初始化
DBConnectionFactory* pFactory =NULL;
try
{
pFactory=DBConnectionFactory::getIntance();
pFactory->initPool();
}
catch(DatabaseException e)
{
TRACE(e.what());
}
CCESyncDlg* pThread=(CCESyncDlg*)param;
pThread->SyncFun();//实现部分
Sleep(1000);
DBConnectionFactory::releaseInstance();
AfxEndThread(RetThread);
return RetThread;
}
void CCESyncDlg::OnBnClickedSync()
{
// TODO: 在此添加控件通知处理程序代码
ExitCode=0;
m_iThread=AfxBeginThread(ThreadProc,(LPVOID)this);
GetDlgItem(IDC_STOP)->EnableWindow(true);
return ;
}
#include "stdafx.h"
#include "crtdbg.h"
#include "windows.h"
#pragma comment(lib, "ole32.lib")
LPSTREAM g_pMarshaledInterfaceStream;
DWORD WINAPI ClientThreadProc(LPVOID lpParam)
{
HRESULT hr;
LPUNKNOWN pUnk;
::OleInitialize( 0 );
// unmarshal interface to create proxy/stub pair
hr = ::CoUnmarshalInterface(g_pMarshaledInterfaceStream, IID_IUnknown, (void**)&pUnk);
_ASSERTE( SUCCEEDED(hr) );
//
// use this interface proxy to manipulate the word document
//
LPOLEOBJECT pOleObject;
hr = pUnk->QueryInterface(IID_IOleObject, (void**)&pOleObject);
_ASSERTE( SUCCEEDED(hr) );
// release interface after use
pOleObject->Release();
pUnk->Release();
::OleUninitialize();
return 0;
}
int _tmain(int argc, _TCHAR* argv[])
{
// get word document CLSID
CLSID clsidWord;
::CLSIDFromProgID(OLESTR("Word.Document"), &clsidWord);
::OleInitialize( 0 );
HRESULT hr;
// start winword server
LPUNKNOWN pUnk;
hr = ::CoCreateInstance(clsidWord, NULL, CLSCTX_LOCAL_SERVER, IID_IUnknown, (void**)&pUnk);
if( SUCCEEDED(hr) )
{
// marshal interface between threads
hr = ::CoMarshalInterThreadInterfaceInStream(IID_IUnknown, pUnk, &g_pMarshaledInterfaceStream);
_ASSERTE( SUCCEEDED(hr) );
// create a client thread;
// we don't need the CRT runtime, so use CreateThread() directly
HANDLE hClientThread;
hClientThread = ::CreateThread(NULL, 0, ClientThreadProc, NULL, 0, NULL);
// wait client thread to end
::WaitForSingleObject(hClientThread, INFINITE);
// release resources
pUnk->Release();
g_pMarshaledInterfaceStream->Release();
}
::OleUninitialize();
return 0;
}