Internex Explorer beim Aufruf einer bestimmten Seite Icon ändern
Hallo zusammen,
ist es möglich, das Icon beim IE beim Aufruf einer bestimmten Seite zu ändern?
Betriebssystem ist Win 7 x64 mit IE11.
Hintergrund ist der: Ein Programm sagen wir mal 'xy' öffnet sich und läuft nur als Icon in der Taskleiste.
Um es zu starten, muss man dann auf das Icon draufklicken und dann öffnet sich der Internet Explorer mit http://xy
Das ist das ganze Programm. Da es ja dann im IE läuft, wird natürlich auch das IE Icon angezeigt.
Daher die Frage:
Kann man den IE dazu bringen, unter einer ausgeführten Bedingung (http://xy ist) geöffnet) sein Icon spezifisch zu ändern?
Hoffe die Fragestellung ist klar.
Gruß
lordofremixes
ist es möglich, das Icon beim IE beim Aufruf einer bestimmten Seite zu ändern?
Betriebssystem ist Win 7 x64 mit IE11.
Hintergrund ist der: Ein Programm sagen wir mal 'xy' öffnet sich und läuft nur als Icon in der Taskleiste.
Um es zu starten, muss man dann auf das Icon draufklicken und dann öffnet sich der Internet Explorer mit http://xy
Das ist das ganze Programm. Da es ja dann im IE läuft, wird natürlich auch das IE Icon angezeigt.
Daher die Frage:
Kann man den IE dazu bringen, unter einer ausgeführten Bedingung (http://xy ist) geöffnet) sein Icon spezifisch zu ändern?
Hoffe die Fragestellung ist klar.
Gruß
lordofremixes
Bitte markiere auch die Kommentare, die zur Lösung des Beitrags beigetragen haben
Content-ID: 272926
Url: https://administrator.de/forum/internex-explorer-beim-aufruf-einer-bestimmten-seite-icon-aendern-272926.html
Ausgedruckt am: 02.04.2025 um 03:04 Uhr
41 Kommentare
Neuester Kommentar
Hallo @lordofremixes,
Nein, das ist nicht möglich.
Du könntest allerdings eine GUI erstellen, die einfach nur eine WebForm bereitstellt und das Icon von dieser ändern.
Dazu musst du dich allerdings mit den Windows COM-Objekten auseinandersetzen.
Gruß,
@Snowman25
Nein, das ist nicht möglich.
Du könntest allerdings eine GUI erstellen, die einfach nur eine WebForm bereitstellt und das Icon von dieser ändern.
Dazu musst du dich allerdings mit den Windows COM-Objekten auseinandersetzen.
Gruß,
@Snowman25
Unter Umständen gibt es das, aber falls ja, weiss ich nicht wo.
Es wäre auch besser, sich tiefer mit der Materie auseinander zu setzen, um ein Verständnis für die gesamte Umgebung zu bekommen.
Gruß,
@Snowman25
Es wäre auch besser, sich tiefer mit der Materie auseinander zu setzen, um ein Verständnis für die gesamte Umgebung zu bekommen.
Gruß,
@Snowman25

Moin,
warum erstellst du dir nicht einfach eine Verknüpfung zu der Webseite und änderst über das Kontextmenü das zughörige Icon ?
Gruß jodel32
warum erstellst du dir nicht einfach eine Verknüpfung zu der Webseite und änderst über das Kontextmenü das zughörige Icon ?
Gruß jodel32

Weil das auch nicht das Icon in der Taskleiste ändert?
OK dann hab ich das falsch verstanden.
Moin lordofremixes,
das lässt sich z.B. mit einer kleinen HTA-Applikation lösen:
(Das ganze speicherst du als *.hta-Datei,und in Zeile 8 des Scripts gibst du den Pfad zum Icon an. Den Pfad zu deiner Webseite welche aufgerufen werden soll gibst du in Zeile 17 an.)
Schon hast du deine Web-App mit deinem individuellen Icon.
Via Powershell und Win32-API gibts auch eine Möglichkeit anhand des Titels des Internet-Explorer-Fensters das Icon des IE zu ändern:
(Titel und Icon kann man in Zeile 36 und 37 anpassen)
Grüße Uwe
das lässt sich z.B. mit einer kleinen HTA-Applikation lösen:
(Das ganze speicherst du als *.hta-Datei,und in Zeile 8 des Scripts gibst du den Pfad zum Icon an. Den Pfad zu deiner Webseite welche aufgerufen werden soll gibst du in Zeile 17 an.)
<html>
<head>
<title>MyBrowserApp</title>
<HTA:APPLICATION
APPLICATIONNAME="My FullScreen Window"
ID="myApp"
VERSION="1.0"
ICON="FullScreenApp.ico"
SCROLL="auto"
SCROLLFLAT="yes"
WINDOWSTATE="maximize"
NAVIGABLE="yes"/>
</head>
<script language="VBScript">
Sub Window_OnLoad
window.location = "http://www.google.de"
End Sub
</script>
<body>
</body>
</html>
Lösung für Powershell
Via Powershell und Win32-API gibts auch eine Möglichkeit anhand des Titels des Internet-Explorer-Fensters das Icon des IE zu ändern:(Titel und Icon kann man in Zeile 36 und 37 anpassen)
$code = @"
using System;
using System.Runtime.InteropServices;
using System.Drawing;
namespace util {
public class window{
[DllImport("user32.dll", CharSet=CharSet.Auto)]
private static extern IntPtr FindWindow(string strClassName, string strWindowName);
[DllImport("user32.dll",CharSet=CharSet.Auto)]
private static extern int SendMessage(IntPtr hWnd, int wMsg, IntPtr wParam, IntPtr lParam);
[DllImport("user32.dll")]
private static extern int DrawMenuBar(int currentWindow);
const int WM_GETICON = 0x7F;
const int WM_SETICON = 0x80;
const int ICON_SMALL = 0; //16
const int ICON_BIG = 1; //32
public static void SetIcon(string ico, string title)
{
System.Drawing.Icon i = new System.Drawing.Icon(ico);
IntPtr hwnd = FindWindow(null, title);
SendMessage(hwnd, WM_SETICON, (IntPtr)ICON_SMALL, (IntPtr)i.Handle);
DrawMenuBar((int)hwnd);
}
}
}
"@
Add-Type -TypeDefinition $code -ReferencedAssemblies "System.Drawing"
$ie = Get-Process iexplore -EA SilentlyContinue
if ($ie){
$ie | %{
if ($_.MainWindowTitle -eq 'Google - Windows Internet Explorer'){
[util.window]::SetIcon("C:\Icons\deinIcon.ico",$_.MainWindowTitle)
}
}
}
sleep(1)
Grüße Uwe

Moin,
dein Titel scheint nicht korrekt zu sein.
Beim IE sieht das meistens so aus:
Kann man sich aber auch anzeigen lassen
Der Titel muss exakt überstimmen, ansonsten musst du einen -like Vergleich machen.
Gruß jodel32
dein Titel scheint nicht korrekt zu sein.
Beim IE sieht das meistens so aus:
Stiftung Warentest - Windows Internet Explorer
(Get-Process iexplore -EA SilentlyContinue).MainWindowTitle
Gruß jodel32

So wie ich den Code sehe ändert der Code nur das 16x16 Icon und nicht das größere wenn die Taskleiste auf nur Symbole geschaltet ist. hier funktionierts zumindest. Vielleicht hat das was mit der Terminal-Server Umgebung zu tun...?

Zitat von @lordofremixes:
habe es bisher nur lokal auf meinem Rechner getestet. Was meinst du mit " wenn die Taskleiste auf nur Symbole geschaltet ist
"?`
Ich meine wenn nur Symbole, und keine Titel angezeigt werdenhabe es bisher nur lokal auf meinem Rechner getestet. Was meinst du mit " wenn die Taskleiste auf nur Symbole geschaltet ist
"?`
Habe bei Schaltflächen der Symbolleiste : Nie gruppieren eingestellt. Welche Einstellung meinst du?
Jup so hab ichs hier auch. So wie beim alten Windows halt.Zitat von @lordofremixes:
Geht auf einem anderen PC auch nicht. Irgendwo hab ich noch nen Fehler.
Was meint Uwe mit Win32-API , da muss ich aber nicht noch irgendwas installieren?
Hallo Lordo,Geht auf einem anderen PC auch nicht. Irgendwo hab ich noch nen Fehler.
Was meint Uwe mit Win32-API , da muss ich aber nicht noch irgendwas installieren?
die Win32-API ist Windows selber bzw. dessen native Funktionen, du brauchst also nichts weiter zu installieren.
Bau in das Script am Ende mal ein
sleep(2)
ein. Manchmal ist die Windows-Message API nicht schnell genug.
Grüße Uwe
Ganz zum Schluss ..also eine neue Zeile 41
Hier die Demo das es läuft / WIN7 x64:
seticon_272926.mp4
seticon_272926.mp4
Nix besonderes ...

if ($_.MainWindowTitle -eq 'Google - Windows Internet Explorer'){
Muss die Icon Datei irgendwelche Voraussetzungen erfüllen?
Ein 16x16er Icon sollte sie haben.Ich habe jetzt ca. 2 Stunden Autobahn vor mir, dann teste ich an meinem Rechner zuhause.
Dann gute Fahrt Zitat von @lordofremixes:
Was aber nicht so gut ist, wenn ich den IE schließe und wieder öffne, gilt der Befehl ja nicht mehr..
Ist vom Script auch nicht beabsichtigt.Was aber nicht so gut ist, wenn ich den IE schließe und wieder öffne, gilt der Befehl ja nicht mehr..
Gibt es eine Möglichkeit das für immer einzustellen, beim Aufruf z.B. von google.de?? Auch z.B. nach einem
Serverneustart?
Ein Script im Loop das die IE-Prozesse dauerhaft überwacht und bei auftauchen eines Fensters eben das Icon ändert.Serverneustart?
Der Loop könnte dann so aussehen:
$code = @"
using System;
using System.Runtime.InteropServices;
using System.Drawing;
namespace util {
public class window{
[DllImport("user32.dll", CharSet=CharSet.Auto)]
private static extern IntPtr FindWindow(string strClassName, string strWindowName);
[DllImport("user32.dll",CharSet=CharSet.Auto)]
private static extern int SendMessage(IntPtr hWnd, int wMsg, IntPtr wParam, IntPtr lParam);
[DllImport("user32.dll")]
private static extern int DrawMenuBar(int currentWindow);
const int WM_GETICON = 0x7F;
const int WM_SETICON = 0x80;
const int ICON_SMALL = 0; //16
const int ICON_BIG = 1; //32
public static void SetIcon(System.Drawing.Icon ico, string title)
{
IntPtr hwnd = FindWindow(null, title);
SendMessage(hwnd, WM_SETICON, (IntPtr)ICON_SMALL, (IntPtr)ico.Handle);
DrawMenuBar((int)hwnd);
}
}
}
"@
Add-Type -TypeDefinition $code -ReferencedAssemblies "System.Drawing"
$ICON = 'D:\DeinIcon.ico'
$TITLE = 'Google - Windows Internet Explorer'
# IE Icon extrahieren
$ie_icon = [System.Drawing.Icon]::ExtractAssociatedIcon("$($env:ProgramFiles)\Internet Explorer\iexplore.exe")
# Instanz des neuen Icons erstellen
$new_icon = new-Object System.Drawing.Icon($ICON)
while($true){
$ie = Get-Process iexplore -EA SilentlyContinue
if ($ie){
$ie | %{
if ($_.MainWindowTitle -eq $TITLE){
[util.window]::SetIcon($new_icon,$_.MainWindowTitle)
}else{
[util.window]::SetIcon($ie_icon,$_.MainWindowTitle)
}
}
}
sleep(2)
}
Den Abstand zwischen den Überprüfungen kannst du dann in der vorletzten Zeile ändern.
Das Script kannst du dann im Nicht-Interaktiven Modus und versteckt ausführen lassen:
powershell -ExecutionPolicy ByPass -NonInteractive -WindowStyle Hidden -File "C:\Pfad\script.ps1"
Zitat von @lordofremixes:
- Wie bekommt man das Script wieder beendet, so dass keine Icons mehr geändert werden?
Wenn du meine Zeile von oben benutzt hast, musst du den CMD-Prozess im Taskmanager killen.- Wie bekommt man das Script wieder beendet, so dass keine Icons mehr geändert werden?
Hast du ne Idee woran das liegen kann?
Ja, an mir
So halb halb
mit Lappi auf dem SUP-Board, leider heut kein Wind zum Kiten (hoffentlich kommen jetzt keine großen Wellen
) ...irgendwie ist man heute auch im Urlaub bei Arbeit 
Uwe, noch eine frage, wenn ich das Script dann auf mehreren citrix Servern veröffentliche , gilt das dann für alle User
?
Hab mit Citrix leider nix am hut musst du bei dir testen. Wenns im Userkontext läuft bestimmt nicht.?
Und muss ich nach einem Server Neustart das Script erneut ausführen?
Selbstverständlich (Taskplaner ?) ...
Das geht nur mit einem User, in einer Multi-Userumgebung geht das nicht, da es mehrere Fenster mit unterschiedlichen Titeln gibt, deswegen swingt das bei euch hin und her 

Hmm hier geht's wieder problemlos, auch mit mehreren unterschiedlichen Fenstern scheint ein Fluch auf deinen Rechnern zu liegen ;-P

Zitat von @lordofremixes:
Zum beenden welchen CMD Prozess killen? Da gibts soooooo vieeellllleee.......
Dann hast du es mehrfach laufen :-P kill sie alle, meld dich ab oder start den Rechner neu, meine Güte wo ist das Problem ??? Heut noch kein Kaffee gehabt ?Zum beenden welchen CMD Prozess killen? Da gibts soooooo vieeellllleee.......