In Raymond's demonstration of how to hop around some shell objects, he first obtains an IWebBrowser2 (or technically IWebBrowserApp), and then uses QueryService to get to SID_STopLevelBrowser. I was wondering if anyone can explain conceptually what those two things are and how they're related. Is one inside the other within an Explorer window? Thanks for any info.
What's the relationship between SID_STopLevelBrowser and IWebBrowser2?
389 views Asked by AudioBubble At
1
There are 1 answers
Related Questions in SHELL
- macOS - Most secure way of a GUI SUDO_ASKPASS
- When does Bash read heredocs?
- Why `set -o pipefail` gives different output even though the pipe is not failing
- Run multiple shell scripts in Dockerfile
- Alias does not take effect when I use Vim to execute external commands
- why variable substitution is so different?
- Error: fish: ${ is not a valid variable in fish
- Custom Bash functions & custom statements - Need some advice
- unexpected operator == in square brackets when trying to use gum lib
- Delete first three lines containing a certain word
- Keep the log for the last 14 days
- Iterate over items in one array and groups of items in second array
- Keep multi-version of a static-lib like what we do for shared-libs
- How to write function in bash for reuse shell commands inside using osascript?
- Why is it that when I pass certain directory names to `ls`, sometimes it does not list their contents?
Related Questions in WINAPI
- How to immediately apply DISPLAYCONFIG_SCALING display scaling mode with SetDisplayConfig and DISPLAYCONFIG_PATH_TARGET_INFO
- Changing the theme of a #32768 (menu) window class at runtime
- Issue with GetOpenFileName while debugging
- How to populate a ListBox with SendMessage?
- Is there a function to end a child process?
- HDR video publishing
- Frameless Qt + WinAPI maximized window size is bigger than the availableGeometry()
- Mount .iso file with python
- What is Win32 x86-64 CONTEXT::VectorRegister for?
- WinAPI - right mouse drag & drop and IContextMenu
- Win32 per-filesystem cache tuning?
- Client connection timeout during Android & Windows PC communication via sockets
- MessageBoxEx sometimes shows as hollow window, border only, and only on Windows 11
- Win32api send message and Pydirectinput and Powertoy (Keyboard Manager ) Not working when open the application
- Would it be possible to run an application right after csrss.exe loads? (Windows)
Related Questions in INTERFACE
- How do I apply the interface concept with the base-class in design?
- Save Interface in DB golang
- Collections.max with custom Comparator on list
- Linux Networking - Routing packets from one network interface to another
- How to design the file operation interface involving status and transactions?
- Angular component's interface ( @Output / @Input ) how do you expose methods? Or certain type of events?
- Own Pattern / framework for interfacing with components in C
- Does anyone know how to make iPad layout the same as iPhone's? Size wise the text and overall layout get's smaller when I run the app on the iPad
- Use Interface Type in Map or Struct Definition, but Implement with Concrete utype
- How does variance work when implementing interfaces/type aliases in TypeScript?
- Fatal error: Uncaught TypeError when returning class instead of interface
- Golang Use of array of structs that implement MyInterface as []MyInterface not allowed
- Calling c++ from fortran
- Interface and model in TypeScript (angular 17)
- Interface called Delegate call failed
Related Questions in COM
- How to program a COM object with an IEnumerator, IEnumerable interface inside
- WinAPI - right mouse drag & drop and IContextMenu
- Function Returning Excel COM Objects Unexpectedly
- Windows ContextMenuHandler names - Document conflict?
- How to publish a console application with COM interop and trim unused code
- IContextMenu Handler - Should ShellExecute or CreateProcess be used to InvokeCommand?
- Windows Explorer Conditional Context Menu Item for Drive?
- How do I fix an error while trying to send email using Outlook with COM?
- ITypeLib2.GetLibStatistics() always throws AccessViolationException in C#
- Directwrite is not always able to query font
- How can I pass a C++ struct to a C# DLL method using COM interop
- VBA PowerPoint Run-time error '-2147467259' (80004005): Presentation.Close: Failed
- PHP using a dll with COM + dotnet
- d3d11 triangle rendering failure despite everything being properly initialized
- COM context menu InvokeCommand not being called
Related Questions in IWEBBROWSER2
- I want to make fitting the Parent Window to IWebBrowser2 object size
- IHTMLElement setAttribute does not refresh
- Sending POST request with IWebBrowser2 in plain C
- How to show UTF-8 in IWebBrowser2
- Web browser in C# windows application form without using web browser class
- CWebBrowser2 (MFC) GoBack method causing crash when it has nothing to go back to
- function get_Document (ExDisp.h -) - how to get error message : IErrorInfo?
- Windows update KB5003637 seems to have broken WebBrowser control, does anyone know why?
- Open Mozilla Firefox with CoCreateInstance function . How do?
- Why would my BHO fail to obtain IWebBrowser2 pointer inside IObjectWithSite::SetSite()?
- show webview/webpage window in c++ windows desktop application
- What's the relationship between SID_STopLevelBrowser and IWebBrowser2?
- Disabling "Script Error" popup IWebBrowser2 c++ WinApi
- Set pdf viewer in IWebBrowser2 when it is displaying pdf file(C++)
- How to disable right click for IWebBrowser2 (C++)
Popular Questions
- How do I undo the most recent local commits in Git?
- How can I remove a specific item from an array in JavaScript?
- How do I delete a Git branch locally and remotely?
- Find all files containing a specific text (string) on Linux?
- How do I revert a Git repository to a previous commit?
- How do I create an HTML button that acts like a link?
- How do I check out a remote Git branch?
- How do I force "git pull" to overwrite local files?
- How do I list all files of a directory?
- How to check whether a string contains a substring in JavaScript?
- How do I redirect to another webpage?
- How can I iterate over rows in a Pandas DataFrame?
- How do I convert a String to an int in Java?
- Does Python have a string 'contains' substring method?
- How do I check if a string contains a specific word?
Popular Tags
Trending Questions
- UIImageView Frame Doesn't Reflect Constraints
- Is it possible to use adb commands to click on a view by finding its ID?
- How to create a new web character symbol recognizable by html/javascript?
- Why isn't my CSS3 animation smooth in Google Chrome (but very smooth on other browsers)?
- Heap Gives Page Fault
- Connect ffmpeg to Visual Studio 2008
- Both Object- and ValueAnimator jumps when Duration is set above API LvL 24
- How to avoid default initialization of objects in std::vector?
- second argument of the command line arguments in a format other than char** argv or char* argv[]
- How to improve efficiency of algorithm which generates next lexicographic permutation?
- Navigating to the another actvity app getting crash in android
- How to read the particular message format in android and store in sqlite database?
- Resetting inventory status after order is cancelled
- Efficiently compute powers of X in SSE/AVX
- Insert into an external database using ajax and php : POST 500 (Internal Server Error)
SID_STopLevelBrowseris just a GUID tellingQueryService(in this case) which hierarchy object you are interested in. What you are really asking about is; what is the difference betweenIWebBrowserandIShellBrowser.IWebBrowseris a Internet Explorer object but when Explorer.exe gained web support in Win98/IE4, a plain Explorer.exe also gained the ability to host web pages (this ability was disabled/deprecated in Vista). The top level(SID_STopLevelBrowser)IShellBrowseron the other hand is the classic "host" object that hostsIShellView(the file list in all versions of Explorer):Users of Windows 95 could choose to install IE4 without the shell update and on those systems there is full separation between Explorer and Internet Explorer.
Raymond asks for this other browser object because he needs to call
IShellBrowser::QueryActiveShellViewto gain access to the shell view and the world ofIShellFolders and PIDLs.You can think of
IShellBrowseras the host/container ofIWebBrowserand/orIShellViewbut keep in mind thatIShellViewcan be implemented by 3rd-parties when you are in special namespace folders andIShellBrowsercan be implemented by 3rd-party file explorer applications so you can't really say thatIWebBrowserand the other parts of a Explorer window are tightly connected.When
QueryServicedoes not know the service you are asking for, it is allowed to ask its client-site/host/"parent"/"child". If you want to get the "main" view instance you ask forSID_STopLevelBrowser. Similarly, you can ask the top level browser forSID_SShellBrowserto get the current tab in IE7+.