我知道windows通用對話框有一個IShellBrowser接口,它的類名是'SHELLDLL_DefView'。請參閱this。有沒有辦法從對話框中獲取IShellBrowser?
如何獲取文件打開對話框的IShellBrowser接口? (文件打開對話框在外面,不是我的應用程序的。)
This與我的問題相同,但是是delphi(?)ver。 我不知道delphi代碼。如何解決這個問題作爲C++或MFC代碼?
我知道windows通用對話框有一個IShellBrowser接口,它的類名是'SHELLDLL_DefView'。請參閱this。有沒有辦法從對話框中獲取IShellBrowser?
如何獲取文件打開對話框的IShellBrowser接口? (文件打開對話框在外面,不是我的應用程序的。)
This與我的問題相同,但是是delphi(?)ver。 我不知道delphi代碼。如何解決這個問題作爲C++或MFC代碼?
下面是Delphi代碼的C/C++編譯:
const UINT CWM_GETISHELLBROWSER = WM_USER + 7;
IShellBrowser *ShellBrowser = (IShellBrowser*) SendMessage(aDialog, CWM_GETISHELLBROWSER, 0, 0);
if (ShellBrowser) {
ShellBrowser->AddRef();
// use ShellBrowser as needed...
ShellBrowser->Release();
}
你也可能需要閱讀下面的文章,它提供了一個稍微正式的(即,更可靠,更復雜的)方式得到一個IShellBrowser
對於給定HWND
:
Querying information from an Explorer window
開始the ShellWindows object代表所有的O筆殼窗口。你可以用the Item property來枚舉它們......從每一個項目中,我們可以問它它的窗口句柄,看看它是否是我們想要的那個......好吧,現在我們已經通過它的
IWebBrowserApp
找到了文件夾,我們需要進入頂級shell瀏覽器。這是通過查詢SID_STopLevelBrowser
服務並要求theIShellBrowser
interface完成的。
Delphi代碼只有兩行。你有哪些麻煩? –
爲什麼首先需要文件打開對話框的「IShellBrowser」?你打算用它做什麼?你不擁有別人的對話,那麼你爲什麼要亂用它呢? –