Note that there are some explanatory texts on larger screens.

plurals
  1. POHow can I remove titlebar and taskbar icons of Java programs on Windows 7?
    text
    copied!<p>I have written a little app that disables the titlebar and taskbar icons of all windows of the <strong>Windows OS</strong> in C#. Here is the code:</p> <pre><code>using System; using System.Runtime.InteropServices; using System.Windows.Forms; namespace IconKiller { class Program { /// Import the needed Windows-API functions: // ... for enumerating all running desktop windows [DllImport("user32.dll")] static extern bool EnumDesktopWindows(IntPtr hDesktop, EnumDesktopWindowsDelegate lpfn, IntPtr lParam); private delegate bool EnumDesktopWindowsDelegate(IntPtr hWnd, int lParam); // ... for loading an icon [DllImport("user32.dll")] static extern IntPtr LoadImage(IntPtr hInst, string lpsz, uint uType, int cxDesired, int cyDesired, uint fuLoad); // ... for sending messages to other windows [DllImport("user32.dll")] static extern IntPtr SendMessage(IntPtr hWnd, uint Msg, int wParam, IntPtr lParam); /// Setup global variables // Pointer to empty icon used to replace all other application icons static IntPtr m_pIcon = IntPtr.Zero; // Windows API standard values const int IMAGE_ICON = 1; const int LR_LOADFROMFILE = 0x10; const int WM_SETICON = 0x80; const int ICON_SMALL = 0; static void Main(string[] args) { // Load the empty icon string strIconFilePath = @"blank.ico"; m_pIcon = LoadImage(IntPtr.Zero, strIconFilePath, IMAGE_ICON, 16, 16, LR_LOADFROMFILE); // Setup the break condition for the loop int counter = 0; int max = 10 * 60 * 60; // Loop to catch new opened windows while (counter &lt; max) { // enumerate all desktop windows EnumDesktopWindows(IntPtr.Zero, new EnumDesktopWindowsDelegate(EnumDesktopWindowsCallback), IntPtr.Zero); counter++; System.Threading.Thread.Sleep(100); } // ... then restart application Application.Restart(); } private static bool EnumDesktopWindowsCallback(IntPtr hWnd, int lParam) { // Replace window icon SendMessage(hWnd, WM_SETICON, ICON_SMALL, m_pIcon); return true; } } } </code></pre> <p>This code seems to work fine with native windows applications. My only problem is now that Java apparently uses a different instance of its application icon to display in the taskbar. Meaning that my little app removes the icon in the titlebar of Java programs, but not the one in the taskbar (Netbeans is a good example). </p> <p>How to resolve that issue? Is it maybe possible to pass a message to those programs through the JVM, similar to the trick I used with the windows API, to call <code>JFrame.setIconImage()</code> on running Java applications or something along those lines?</p> <p>EDIT: I am not bound to just C#, I am very much willing to write something like a "helper" app in java that I would execute in my main app, should it be necessary.</p>
 

Querying!

 
Guidance

SQuiL has stopped working due to an internal error.

If you are curious you may find further information in the browser console, which is accessible through the devtools (F12).

Reload