Why are all my Delphi apps missing the taskbar menu on Windows 10 but not Windows 7? - windows

In Windows 7 when I right click on the taskbar icon, all my Delphi apps (5, 2006 and XE) show the full taskbar menu: App name, Pin/Unpin and Close Window. On Windows 10 all these apps show only the Close Window menu item. Why is that and how can I get the full menu in Win10?
Update: If I create a new app in Delphi XE on Win 10 it shows the full menu. If I create a new app on Delphi XE in Win 7 it shows the full menu on Win 7 but not on Win 10.

No, this neither happens to all your apps (it happens to every application with a window), nor can David Heffernan be able to see it: Win10 just don't has that (most likely it was gone with Win8 already).
To make sure what fullerm is talking about: right-click on the task button and see its context menu: for every window you only have "close" plus two more generic entries, and then based on the application even more. But the system menu (right click on a window's top left icon) is not available thru the task button anymore
Task button = taskbar representing each currently displayed window. Pinned apps and shortcuts are not task buttons, neither are those of the task tray (rightmost next to the clock)
System menu = context menu every window owns with basic entries like "minimize", "maximize", "close", "size", "move" and even more. Accessible thru right clicking the topleft icon of a window or pressing ALT+SPACE. Might be inaccessible when the window is owner-drawn.
Window = owned by a running process. Processes neither need to have a window, nor are they restricted to only having one window. Nowadays Windows calls processes "apps" (I guess).

Related

Is there a Windows API for getting the positions of the icons on the Desktop?

Is there an API or a database/settings file/registry for getting the positions of icons on the Desktop?
If you wonder why I want that, basically I want to create a replica of Desktop in my app for my personal use, so that I could access those icons, when multiple windows are open, without using the "Show Desktop" feature which minimises all windows. The problem of Window's "Show Desktop" is that if I opened a new window by clicking an icon on the desktop, performing "Show Desktop" again does not restore all minimised windows at once.
On macOS, I did not have this problem, because pinching-out with 4 fingers showed the desktop without minimising opened windows. It just temporarily moved them out of the screen, and pinching-in restored windows to their original states, even if I had opened a new window by clicking an icon on the desktop.
There are other ways to access those icons, without using "Show Desktop", like opening the Desktop location in File Explore, but then the icon locations are not the same as the Desktop, so it is difficult to find the item I want. Enabling multiple virtual Desktops, and switching to an empty Desktop to click the item is one way, but then it gets opened on that Desktop and I would have to move it to the other Desktop.

How can I make the taskbar icon for my app move to the same display as the app?

Starting with Windows 8, there is a taskbar settings called Show taskbar buttons on where the user can control where the taskbar buttons are displayed when multiple displays are being used. How can I get my application to obey the Taskbar where window is open setting instead of always displaying on only the main taskbar?
The app in question is written in VB6 but I imagine this question might apply to other older frameworks as well.

Disable application taskbar icon's context menu in Windows 8.0 and 8.1

In Windows 7, 8 and 8.1, when a user right-clicks on an application's taskbar icon, a context menu appears. Furthermore, a user can right-click on the application's name again (from the context menu) and another context menu appears, as shown in this image for Windows Explorer:
Is there a possible way (through winapi or registry or GPO) to disable all the items in the first context menu except for "Close Window" in Win 8 and 8.1? I know that this is achieved in Windows 7 by setting the prevent pinning on the application window but it doesn't work in Windows 8 and 8.1...
If not, is it possible to show only the "Close Window" and the Application Launcher icon only in the context menu in Windows 8/8.1 without allowing the user to right-click on the application's name and display the Properties context menu?
I found this registry value which does the job well:
NoViewContextMenu: https://technet.microsoft.com/en-us/library/cc960925.aspx

IIS 7 manager not opening but working

I have windows 7 home premium. I have turned on IIS .Confirmed if its running by typing localhost on my address bar. It show IIS welcome message, showing its working.
However when I try to open IIS manager, nothing happens. I want to deploy my asp.net mvc 3 application on it. How do I solve this issue?
For me helped focusing on the window via Alt-Tab, then pressing Alt-Space and select Move in the drop-down menu. After that, either drag the mouse or move with keyboard buttons. By the way, works with all windows.
Update for Win 10
There is another easier solution for such windows for Win 10. You can pull any available window to the left edge of the screen. Windows will expand the window to half of the screen and prompts you to choose any opened window to fill the second half. Choose the window you can't access and you're good.

How can I disable / permanently hide the taskbar in Windows 7?

I would like to completely remove the Windows 7 taskbar, including tray and start-button, so that the user can not reactivate it by pressing the Windows-key on the keyboard. however, all other explorer functionality (i.e. starting an explorer Window using Windows+E) should remain.
Is it possible to permanently hide the complete taskbar? Maybe there are some registry values on could change in order to make that behaviour selectable using a powershell script?
Thanks a lot
Here be my solution (it hides rather than replaces or removes the native taskbar - this allows it to work with programs that have a dependency on the native taskbar, such as display fusions taskbar).
disable-taskbar-always-top
Still to solve: [HALF SOLVED]
Eliminate the stupid line that auto-hide leaves with some maximized applications, such as Google Chrome
HALF SOLUTION -
If you move the taskbar to the left or right edge prior to doing the above steps, you don't get the stupid auto-hide line at the top or bottom of Google Chrome. Since the native taskbar is not mouse sensitive anymore, it won't impact your use of hot corners, or multi monitors (for instance I have the native taskbar on the left of my middle monitor, and it does not popup when moving between monitors using the steps in this post).
Okay, I think I have finally - finally - got a workaround that:
Keeps the native Windows 7/8 taskbar hidden for your session (you do have a couple of steps you need to do on start-up each time, or if you manually un-hide the taskbar).
Prevents the native Windows 7/8 taskbar from opening with popups or programs seeking attention (flashing taskbar thing).
Prevents the native taskbar from being mouse sensitive (i.e. despite auto-hide, it will not appear when you mouse over the hidden taskbar anymore).
Allows you to use the screen area that is occupied by the native taskbar (this is the problem of not combining Taskbar-Hide with the autohide setting; you can't use that screen real-estate).
Allows you to run alternative taskbars that are dependent on keeping the native taskbar functional (for instance Dislay Fusions Multi-Monitor Taskbar + [Settings >> Advanced Settings ?> 'Show On All Montiors'])
One Time Steps:
1) Download and run this registry edit to prevent balloon notification popups from the native taskbar/system tray:
Notifications - Enable or Disable Message Balloons - Windows 7 Help Forums
(You can open this in notepad to see what changes it will make prior to installing it, if you want).
2) Download and run Taskbar-Hide from here:
Hide Taskbar: Hide Taskbar in Windows 8 | 7 with a hotkey
3) Set the taskbar to auto-hide
Optional:
3) B) Add a shortcut to Taskbar-Hide.exe in your startup folder, to have it launch automatically with windows on startup (you still need to use the Ctrl+Esc hotkeys to activate the functions of taskbar-hide - though you could also script this if you were really keen).
Startup Folder:
C:\Users{User Name}\AppData\Roaming\Microsoft\Windows\Start Menu\Programs\Startup
Steps to hide taskbar after each start-up or manually un-hiding using Taskbar-Hide
4) Make sure Taskbar-Hide is running.
5) Make sure the taskbar is in its auto-hide state (i.e. you'll have to look at any programs that are currently seeking attention).
6) Once the taskbar is 'auto-hidden', press the hotkeys for Taskbar-Hide (Ctrl+Esc)
[This should mean that the native taskbar area is no longer sensitive to mouse activity]
One way is to replace the explorer shell with your own shell. This is the a common method done in Windows 7 Embedded.
In older versions of Windows (such as XP) it was possible to specifiy a shell for each user via regedit. I am not sure this is easily possible in Windows 7.
See https://superuser.com/questions/352865/how-do-i-change-the-windows-shell-for-only-one-user
Make an empty exe file and use it as the file to use in your "Custom User Interface" group policy. Additional information here.
I have found another solution that works nearly perfect for me, by just hiding the Taskbar and the Start button by simply sending both the WM_HIDE message:
Handle = FindWindow("Shell_TrayWnd", "");
...
ShowWindow(Handle, SW_SHOW);
The only problem I have with that solution is that the taskbar is not hidden permanently, i.e. as soon as one element is activated that does not have the focus, which on the taskbar leads to the item flashing in yellow, the taskbar gets visible again.
I'm not sure if there is a way to prevent Windows from re-enabling the visible flag of the taskbar in some way, or a method to hook to the SW_SHOW in C# though.

Resources