Exemple #1
0
TaskBarCore::TaskBarCore():
	State(TBPF_NOPROGRESS),
	pTaskbarList(nullptr)
{
	HRESULT hRes=CoInitializeEx(nullptr,COINIT_APARTMENTTHREADED);

	switch (hRes)
	{
		case S_OK:
		case S_FALSE:
			CoInited=true;
		case RPC_E_CHANGED_MODE:
			CoCreateInstance(CLSID_TaskbarList, nullptr, CLSCTX_INPROC_SERVER,
#ifdef __GNUC__
				IID_ITaskbarList3, IID_PPV_ARGS_Helper(&pTaskbarList)
#else
				IID_PPV_ARGS(&pTaskbarList)
#endif
			);
			break;
		default:
			CoInited=false;
			break;
	}
}
Exemple #2
0
taskbar::taskbar():
	State(TBPF_NOPROGRESS),
	pTaskbarList()
{
	CoCreateInstance(CLSID_TaskbarList, nullptr, CLSCTX_INPROC_SERVER,
#if COMPILER == C_GCC
		IID_ITaskbarList3, IID_PPV_ARGS_Helper(&pTaskbarList)
#else
		IID_PPV_ARGS(&pTaskbarList)
#endif
		);
}
IFileIsInUse* CreateIFileIsInUse(const string& File)
{
	IFileIsInUse *pfiu = nullptr;
	IRunningObjectTable *prot;
	if (SUCCEEDED(GetRunningObjectTable(0, &prot)))
	{
		IMoniker *pmkFile;
		if (SUCCEEDED(CreateFileMoniker(File.data(), &pmkFile)))
		{
			IEnumMoniker *penumMk;
			if (SUCCEEDED(prot->EnumRunning(&penumMk)))
			{
				HRESULT hr = E_FAIL;
				ULONG celt;
				IMoniker *pmk;
				while (FAILED(hr) && (penumMk->Next(1, &pmk, &celt) == S_OK))
				{
					DWORD dwType;
					if (SUCCEEDED(pmk->IsSystemMoniker(&dwType)) && dwType == MKSYS_FILEMONIKER)
					{
						IMoniker *pmkPrefix;
						if (SUCCEEDED(pmkFile->CommonPrefixWith(pmk, &pmkPrefix)))
						{
							if (pmkFile->IsEqual(pmkPrefix) == S_OK)
							{
								IUnknown *punk;
								if (prot->GetObject(pmk, &punk) == S_OK)
								{
									hr = punk->QueryInterface(
#ifdef __GNUC__
										IID_IFileIsInUse, IID_PPV_ARGS_Helper(&pfiu)
#else
										IID_PPV_ARGS(&pfiu)
#endif
										);
									punk->Release();
								}
							}
							pmkPrefix->Release();
						}
					}
					pmk->Release();
				}
				penumMk->Release();
			}
			pmkFile->Release();
		}
		prot->Release();
	}
	return pfiu;
}
Exemple #4
0
taskbar::taskbar():
	m_State(TBPF_NOPROGRESS)
{
	CoCreateInstance(CLSID_TaskbarList, nullptr, CLSCTX_INPROC_SERVER, IID_ITaskbarList3, IID_PPV_ARGS_Helper(&ptr_setter(m_TaskbarList)));
}