ОБСУЖДЕНИЕ

Использование Shell

5 ответов 5,4 тыс.
AI-выжимка обсуждения скоро

Краткие тезисы обсуждения со ссылками на ключевые ответы появятся здесь.

Автор темы
Может я ваще не туда копаю, дело в том что я только начала работать в среде .NET. Я пытаюсь написать прогу типа ShellTreeView в Delphi.
Или в С# OpenFileDialog.
Требуется получить доступ ко всем функциям Windows Shell Api. Например в С++ подключаются библиотеки
#include <shlobj.h>
#include <shlwapi.h>
#include <shellapi.h>
и сразу доступны например функции как
IFACEMETHODIMP ParseDisplayName(HWND hwnd, IBindCtx *pbc, PWSTR pszName,
ULONG *pchEaten, PIDLIST_RELATIVE *ppidl, ULONG *pdwAttributes);
IFACEMETHODIMP EnumObjects(HWND hwnd, DWORD grfFlags, IEnumIDList **ppenumIDList);
IFACEMETHODIMP BindToObject(PCUIDLIST_RELATIVE pidl, IBindCtx *pbc, REFIID riid, void **ppv);
IFACEMETHODIMP BindToStorage(PCUIDLIST_RELATIVE pidl, IBindCtx *pbc, REFIID riid, void **ppv);
IFACEMETHODIMP CompareIDs(LPARAM lParam, PCUIDLIST_RELATIVE pidl1, PCUIDLIST_RELATIVE pidl2);
IFACEMETHODIMP CreateViewObject(HWND hwnd, REFIID riid, void **ppv);
IFACEMETHODIMP GetAttributesOf(UINT cidl, PCUITEMID_CHILD_ARRAY apidl, ULONG *rgfInOut);
IFACEMETHODIMP GetUIObjectOf(HWND hwnd, UINT cidl, PCUITEMID_CHILD_ARRAY apidl,
REFIID riid, UINT* prgfInOut, void **ppv);
IFACEMETHODIMP GetDisplayNameOf(PCUITEMID_CHILD pidl, SHGDNF shgdnFlags, STRRET *pName);
IFACEMETHODIMP SetNameOf(HWND hwnd, PCUITEMID_CHILD pidl, PCWSTR pszName, DWORD uFlags, PITEMID_CHILD * ppidlOut);
В С# подключаю в References Shell32 но этих функций не обнаруживаю.
 
Код:
[DllImport("dllname.dll")]
static extern int function();
 
Так. А что делать если у меня только [DllImportAttribute] есть. И что за функция static extern int function();. Спасибо))
 
Так. А что делать если у меня только [DllImportAttribute] есть. И что за функция static extern int function();. Спасибо))

DllImportAttribute - это и есть то что вам надо. функция приведена для примера, никакой смысловой нагрузки она не несет. лучше почитайте ченить полезное по .NET и C# в частности.
 
Спасибо. А как вызвать функцию BindToObject интерфейса IShellFolder?
 
Вам поможет сайт www.pinvoke.net или любые другие темы по interop