Access Desktop Items in Win10 vs. Win7? - windows

I'm trying to access the names and positions of desktop icons under win10 with no luck. I posted a similar question and solution (SO#58126669) when I was using Win7. Now I find the solution (which worked perfectly under Win7) doesn't work anymore under Win10.
Here's What I Know
Under Win7, the desktop icons are stored in a SysListView32 child of the desktop. Info about each can be obtained using LVM_* messages and associated structures.
Here's What I Don't Know
Under Win10, the view hierachy appears to have changed. The SysList view no longer contains the items, but rather it has a single child of class SysHeader32. The LVM messages did not work on it. I tried using comparable HDM_* messages and structures with no luck there either.
Does anybody know how to access the desktop icons under win10?

Windows 10 uses a different approach to the desktop vs. Windows 7 as commented on by #Raymond Chen. You must use COM objects like IShellWindows, IFolderView, etc. Rather than duplicate the code here, please see the answer SO #58126669 (Window 10 Addendum).

Related

Windows Forms text grows too big when run on another PC

I've got a VB.Net Windows Form application containing several controls (labels, groupboxes, comboboxes, etc.) This application is deployed to several PCs running Windows 10. There are also Win10 tablets connecting to these PCs via Remote Desktop. The issue is that the text on the form sometimes gets resized and overlaps onto other controls when viewed on the tablet. In other words, the text becomes too big.
I thought this was only happening when using Remote Desktop but today I saw it happen on a PC too. This is the first time this has happened. One difference is that the PC was re-imaged in the field instead of being brought back to the office first. The monitors used between the two locations are different, and I'm suspecting this has something to do with it. I know there are DPI and resolution factors to consider but don't fully understand how to rectify them in this case, or if they're even applicable.
Here's how it looks as designed and running on my dev PC:
And here's how it looks when running on the production PC (sorry for the grainy image):
Of note is that some text doesn't appear to get oversized, for example the "Currently: 6 ft/min". All fonts are Microsoft Sans Serif.
Suggestions?
The answer provided here worked for me by changing the compatibility settings for the executable. Another method is provided here but I haven't had a chance to test it yet.

Prevent disconnected display from merging windows into the active one

I've got a personal laptop (running Windows 10) which I use at work where I connect it to an external display using extended display mode. I keep all my personal icons and windows on my laptop display and store all the work-related windows on the external display. Whenever I unplug it, all the windows and icons from that display are merged into my laptop screen. I want to programmatically prevent changing anything on my primary screen when the secondary is disconnected. I'm currently writing a utility app for a variety of small productivity improving features and would like to add such feature in it. I can think of two ways to achieve this:
by tricking the system to think that the external display hasn't been
disconnected;
or take all the opened windows and icons on disconnected screen and put them on separate virtual desktop.
I was looking into Windows GDI Device Context Functions but haven't found anything about display connection/disconnection events. How can I detect display disconnection (and get that display's opened windows and icons)? Anything that can be done using C#, C++ or PowerShell scripts would be much appreciated!

Windows 8 - Start screen icon for IE launches desktop version of IE

When I first installed Windows 8 (64 bit, Pro version, with Media Player), the IE icon on the Start screen launched the Metro / Modern / Windows Store / whatever version of IE.
But somewhere along the line, it no longer does so. It launches the traditional IE desktop version.
Any suggestions how to get things back to normal?
Side questions: I haven't done any spelunking on Windows 8. Any tips for the following questions would be appreciated...
What are the relevant file locations for various "Metro" apps (both Microsoft and 3rd party)? I know about C:\Windows\SysWOW64\WinMetadata for .winmd files. C:\Windows\WinStore seems almost useless. What else is worthwhile looking at?
Ditto for registry entries
What's hidden where? I assume that apps have NTFS permissions set so that, even as an Administrator (and with doing a Takeown) I can't even see certain system/app-related things.
Where is the Start Screen located? Suppose I wanted to write a program that lists the Start Screen icons, their captions, etc
And any other internals info of this ilk would be appreciated.
Thanks.
Go to Internet Options, Programs tab and in the Opening Internet Explorer section disable the ckeckbox Open Internet Explorer Tiles on the desktop.
Greetings.

Windows 7 Taskbar Widget or Toolbar

My Lenovo laptop has two task bar type programs that show the network status and battery status. I have been trying to search for what these types of widgits are called. Unfortuantly my google-foo is only returning results for minimizing programs to the system tray.
I am not even sure if these are system tray apps or taskbar apps. but either way, please help me find a API reference or even better a tutorial.
I want to make a Work Week Widgit, that displays the current work week number on this widget. I program mostly in python, but am willing to learn another language just to make this tool.
They are known as Desktop Bands, also known as DeskBands. Note that Desktop Bands are not recommended starting in Windows 7. Note also that since they are shell extensions, they must be written in native code.

SWT setForeground in Windows 7 vs. Windows XP

We have SWT apps which use the setForeground method on windows XP, and they work fine. However, running the most recent stable SWT jars and dlls on Win7 seems to show the setForeground method being ignored. I know that the javadoc says it's a hint, but I wanted to know if this is because something changed between XP and 7, or if it's possible it's a system setting on my new Win7 install.
I had found this post: How to set SWT button foreground color?, but the main answer definitively says that setForeground is ignored on Windows, which isn't true in XP. Also, our problem doesn't seem to be limited to Buttons. Same issues happen with Groups as well.
Apparently, a hacky work-around exists by adding a paint listener that manipulates the GC directly to redraw the text with the appropriate color, besides being hacky, this is not practical, because it would mean we had to add this listener to the thousands places where we use Buttons.
Thanks for any help.
This doesn't have anything to do with your system settings. It's just that, as you have guessed, something has changed between XP and 7. Actually, it changed between XP and Vista. Unfortunately there is not much you can do about this, except for the hack that you have mentioned.
For more information, see this bug report.
Further investigation reveals that this is not a difference between XP and Windows 7, but rather the Classic theme vs the Aero or XP theme. If we use the XP theme in XP, Button foreground also cannot be set.

Resources