C++ ICommonQuery::OpenQueryWindow。搜索结果中没有管理上下文菜单
我尝试使用管理和其他扩展功能从应用程序中调用Active directory搜索窗口。为此,我使用了以下标志:C++ ICommonQuery::OpenQueryWindow。搜索结果中没有管理上下文菜单,c++,active-directory,dsquery,C++,Active Directory,Dsquery,我尝试使用管理和其他扩展功能从应用程序中调用Active directory搜索窗口。为此,我使用了以下标志: DSQPF_ENABLEADMINFEATURES | DSQPF_ENABLEADVANCEDFEATURES; 如MSDN所述: DSQPF_ENABLEADMINFEATURES-使用目录服务管理工具支持的功能,例如上下文菜单的管理显示说明符和属性页 DSQPF_ENABLEADVANCEDFEATURES-指定传递到上下文菜单和属性页的IDataObject实例中的高级功能
DSQPF_ENABLEADMINFEATURES | DSQPF_ENABLEADVANCEDFEATURES;
如MSDN所述:
DSQPF_ENABLEADMINFEATURES-使用目录服务管理工具支持的功能,例如上下文菜单的管理显示说明符和属性页
DSQPF_ENABLEADVANCEDFEATURES-指定传递到上下文菜单和属性页的IDataObject实例中的高级功能
这两个标志完全适用于选项卡。作为域管理员,我可以在用户属性中看到很多选项卡。但这些参数对上下文菜单没有影响。例如:
#include "stdafx.h"
#include "activeds.h"
#include "cmnquery.h"
#include "dsquery.h"
#include "shlobj.h"
#include "dsclient.h"
#include "windows.h"
#pragma comment(lib, "uuid.lib")
#pragma comment(lib, "activeds.lib")
HRESULT FindADUsers(HWND hwndParent)
{
HRESULT hr;
ICommonQuery *pcq;
hr = CoCreateInstance(CLSID_CommonQuery,
NULL,
CLSCTX_INPROC_SERVER,
IID_ICommonQuery,
(LPVOID*)&pcq);
if (SUCCEEDED(hr))
{
OPENQUERYWINDOW openQueryWindow;
DSQUERYINITPARAMS dqip;
IDataObject *pdo;
ZeroMemory(&openQueryWindow, sizeof(openQueryWindow));
openQueryWindow.cbStruct = sizeof(openQueryWindow);
openQueryWindow.dwFlags = OQWF_DEFAULTFORM | OQWF_SINGLESELECT | OQWF_SHOWOPTIONAL;
openQueryWindow.pHandlerParameters = &dqip;
openQueryWindow.clsidHandler = CLSID_DsQuery;
openQueryWindow.clsidDefaultForm = CLSID_DsFindPeople;
ZeroMemory(&dqip, sizeof(dqip));
dqip.cbStruct = sizeof(dqip);
dqip.dwFlags = DSQPF_NOSAVE | DSQPF_SHOWHIDDENOBJECTS | DSQPF_ENABLEADMINFEATURES | DSQPF_ENABLEADVANCEDFEATURES;
hr = pcq->OpenQueryWindow(hwndParent, &openQueryWindow, &pdo);
if (S_OK == hr)
{
pdo->Release();
}
pcq->Release();
}
return hr;
}
// Entry point for application
int main(int argc, _TCHAR* argv[])
{
HRESULT hr;
CoInitialize(NULL);
hr = FindADUsers(NULL);
CoUninitialize();
return 0;
}