• Status: Solved
  • Priority: Medium
  • Security: Public
  • Views: 346
  • Last Modified:

Tweak UI Desktop Folder Icons.

Does anyone know how Tweak UI determines the list of Icons
that show up in the Desktop folders list? I assume that the Shell Namespace is enumerated somehow, but I don't know
exactly how it's done. What criteria is used to determine
which entries go into the list and which ones do not.
0
crhodes
Asked:
crhodes
  • 7
  • 4
  • 2
1 Solution
 
smeebudCommented:
It uses the "shelliconcache". I'm studing that right now and get back with you with my extensive ( I hope) Findings.
Or you don't have to wait a day, you can still reject.
But it has to do with the shelliconcache.

0
 
crhodesAuthor Commented:
Could you email specifics directly to me? If so, send
them to: Chris_Rhodes@classic.msn.com

Thanks.
Chris.

0
 
smeebudCommented:
If you Delete the ShellIconCache file. This file is re-created automatically when you restart Windows 95. To delete this file, use the following steps:

http://premium.microsoft.com/support/kb/articles/q132/6/68.asp

So that's what tweakui does. I've verified this in the newsgroups and at http://www.microsoft.com/search/default.asp
where I typed shelliconcache as the searh phrase. There's a lot there to help you understand it. Too much to put here.

I hope that answers your question, it did for me. As I said I was on quest for that interaction when you popped up with the question. Good timing:)
0
Concerto's Cloud Advisory Services

Want to avoid the missteps to gaining all the benefits of the cloud? Learn more about the different assessment options from our Cloud Advisory team.

 
smeebudCommented:
If you Delete the ShellIconCache file. This file is re-created automatically when
you restart Windows 95. To delete this file, use the following steps:

http://premium.microsoft.com/support/kb/articles/q132/6/68.asp 

So that's what tweakui does. I've verified this in the newsgroups and at
http://www.microsoft.com/search/default.asp 
where I typed shelliconcache as the searh phrase. There's a lot there to help you
understand it. Too much to put here.

I hope that answers your question, it did for me. As I said I was on quest for that
interaction when you popped up with the question. Good timing:)
0
 
crhodesAuthor Commented:
Sorry. I don't think you understood my question. I'm talking about the utility "Tweak UI" that comes with power toys. This
utility has a number of property pages, one of them is named
"Desktop". When you select this property page, it has a CListCtrl that shows a number of items like "Recycle Bin" "Internet Explorer", etc... How does this utility decide what itmes will go into this list? It must be enumerating the Shell's
Namespace somehow, using the IShellFolder interface and binding to Explorers IShellFolder interface and then enumerate the items. Again how does it decide which ones go into the list and which ones do not?

Chris.
 
0
 
magigrafCommented:
I'm shooting blind folded...
It's in the programming of the applet itself.  I don't think that you can modify these items (add or delete).  Also bear in mind that all CONFIRMED info regarding these toys are almost unavailable since it was released without warranty from MS.
If I did hit the target, let me know.
Regards
0
 
crhodesAuthor Commented:
Actually, this list changes dynamically. I've seen this on my own system. Tweak UI is building this list dynamically everytime
the utility loads.

Regards,
Chris.
0
 
smeebudCommented:
The only person that can answer that, and will is Raymond Chen. He's the Author/programmer of tweakui.
raymondc@microsoft.com (Raymond Chen)
0
 
smeebudCommented:
I'd say yes you're right. After looking and mu 'Namespace' in the registry and comparing them to what is marked in tweakui, the only one that is marked (recycle bin) is the only one that has a value of it's name, ie;
[HKEY_LOCAL_MACHINE\SOFTWARE\Microsoft\Windows\CurrentVersion\explorer\Desktop\NameSpace\{645FF040-5081-101B-9F08-00AA002F954E}]
@="Recycle Bin"
The rest do not have values.
If you gave it a value tweakui would pick that up.
I think that's what magigraf was trying to say.
it took me a little while to understand you question.
0
 
crhodesAuthor Commented:
Thanks for the input. I'm suprised no one else can answer this.
Someone out there must know about the IShellFolder interface at
this level?

Chris.

0
 
smeebudCommented:
If you really want to get and understand of how the
IShellFolder interface calls or retrieves information, too much to put here see:
http://www.microsoft.com/msdn/sdk/inetsdk/help/inet4725.htm
There are many hot links for futher understanding.
-----
IShellFolder


The IShellFolder interface is used to manage folders.

When to Implement

Implement this interface for objects that extend the shell's
namespace. Creating a separate namespace
that requires a rooted Explorer or installing a new namespace
directly within the hierarchy of the system
namespace are two examples. You are most familiar with the
contents of your namespace, so you are
responsible for implementing everything needed to access your
data.

When to Use

Use this interface when you need to display or perform an
operation on the contents of the shell's
namespace. Objects that support IShellFolder are usually
created by other shell folder objects, with the
root object (the Desktop shell folder) being returned
from the SHGetDesktopFolder function.

IShellFolder Methods
Description
BindToObject
Retrieves the IShellFolder interface for the specified subfolder.
BindToStorage
Returns the storage instance of a subfolder. Not currently implemented.
CompareIDs
Determines the relative order of two file objects or folders, given their item
identifier lists.
CreateViewObject
Creates a view object of the folder itself.
EnumObjects
Enumerates the objects in a folder.
GetAttributesOf
Retrieves the attributes of the specified file object or subfolder.
GetDisplayNameOf
Retreives the display name of a file object or subfolder.
GetUIObjectOf
Creates an OLE interface that can be used to carry out operations on a file
object or subfolder.
ParseDisplayName
Translates a display name into an item identifier list.
SetNameOf
Sets the display name of the specified file object or subfolder and changes its
identifier accordingly.
0
 
smeebudCommented:
You can got to:
http://premium.microsoft.com/msdn/library/sdkdoc/folder_21v7.htm
and register to allow yourself access to all the information available. Hope this helps.

Also the BindToObject is the main interface:
IShellFolder::BindToObject


HRESULT BindToObject(
LPCITEMIDLIST pidl,
LPBC pbcReserved,
REFIID riid,
LPVOID *ppvOut
);  

Retrieves an IShellFolder object for a subfolder.

Returns NOERROR if successful, or an OLE-defined error value otherwise.

pidl
Address of an ITEMIDLIST structure that identifies the subfolder relative to its
parent folder.
pbcReserved
Reserved. Callers should specify NULL for this parameter; those called
should ignore it.
riid
Identifier of the interface to return. This parameter must point to the
IID_IShellFolder interface identifier.
ppvOut
Address that receives the interface pointer. If an error occurs, a NULL pointer
is returned in this address.

Use this method to access the COM interface to the subfolder or subobject.
0
 
magigrafCommented:
Well, I guess I'll sit and watch since it's new for me...
I was under the impression that it does not since we do not have Tweal UI installed on our COBAI system. But you guys look like you have an update for me and it seems to be changing.
Regards
0

Featured Post

Concerto Cloud for Software Providers & ISVs

Can Concerto Cloud Services help you focus on evolving your application offerings, while delivering the best cloud experience to your customers? From DevOps to revenue models and customer support, the answer is yes!

Learn how Concerto can help you.

  • 7
  • 4
  • 2
Tackle projects and never again get stuck behind a technical roadblock.
Join Now