lordofremixes
Goto Top

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

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

Snowman25
Snowman25 26.05.2015 um 10:40:23 Uhr
Goto Top
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
lordofremixes
lordofremixes 26.05.2015 um 11:02:51 Uhr
Goto Top
Hallo snowman25,

gibt es dazu Anleitungen, wie man das macht?
Snowman25
Snowman25 26.05.2015 um 11:28:03 Uhr
Goto Top
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
114757
114757 26.05.2015 um 20:40:01 Uhr
Goto Top
Moin,
warum erstellst du dir nicht einfach eine Verknüpfung zu der Webseite und änderst über das Kontextmenü das zughörige Icon ?

Gruß jodel32
Snowman25
Snowman25 27.05.2015 um 10:45:06 Uhr
Goto Top
Zitat von @114757:
warum erstellst du dir nicht einfach eine Verknüpfung zu der Webseite und änderst über das Kontextmenü das
zughörige Icon ?

Weil das auch nicht das Icon in der Taskleiste ändert?
114757
114757 27.05.2015 um 11:04:49 Uhr
Goto Top
Weil das auch nicht das Icon in der Taskleiste ändert?
OK dann hab ich das falsch verstanden.
colinardo
colinardo 27.05.2015, aktualisiert am 28.05.2015 um 17:01:59 Uhr
Goto Top
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.)
<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>
Schon hast du deine Web-App mit deinem individuellen Icon.
back-to-topLö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
lordofremixes
lordofremixes 28.05.2015 aktualisiert um 16:08:21 Uhr
Goto Top
Hallo Uwe!!!

Coole Varianten face-smile

Variante 2 wäre natürlich perfekt, will das ja dann auf einem Citrix Server veröffentlichen und da wäre diese Variante am besten!
Variante 1 ist wahrscheinlich nicht möglich, ich ja erst auf Programm öffnen klicken muss und er dann automatisch den IE öffnet und ich keine Möglichkeit habe, statt dem IE das .hta File zu öffnen.
Habe es jetzt so gemacht:

In einer cmd eingegeben:

powershell.exe -ExecutionPolicy RemoteSigned -File "C:\install\icon.ps1"

in der Powershell Datei steht:

$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 'Stiftung Warentest'){  
            [util.window]::SetIcon("C:\install\url.ico",$_.MainWindowTitle)  
        }
    }    
}

Leider ändert es aber beim Aufruf von test.de das Icon nicht.

Hast du ne Idee woran das liegen könnte?

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

Gruß jodel32
lordofremixes
lordofremixes 28.05.2015 um 16:16:04 Uhr
Goto Top
Hallo jodel32,

stimmt!! Habe es aus der title Zeile im Quelltext von der Seite rauskopiert.
Habe jetzt Stiftung Warentest - Windows Internet Explorer eingefügt.

Das Icon ändert sich dennoch nicht.

Vielleicht noch ne Idee?
114757
114757 28.05.2015 aktualisiert um 16:23:11 Uhr
Goto Top
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...?
lordofremixes
lordofremixes 28.05.2015 um 16:23:20 Uhr
Goto Top
Ich werde gleich noch andere Seiten ausprobieren..
lordofremixes
lordofremixes 28.05.2015 um 16:32:28 Uhr
Goto Top
Hallo jodel,

habe 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?
114757
114757 28.05.2015 um 16:35:03 Uhr
Goto Top
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 werden
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.
lordofremixes
lordofremixes 28.05.2015 um 16:36:08 Uhr
Goto Top
Probiere es gleich mal an nem anderen PC..
lordofremixes
lordofremixes 28.05.2015 um 16:47:04 Uhr
Goto Top
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?
colinardo
colinardo 28.05.2015 aktualisiert um 17:00:48 Uhr
Goto Top
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,
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
lordofremixes
lordofremixes 28.05.2015 um 16:59:20 Uhr
Goto Top
Hi!!

Nach den 3 eckigen Klammern am Schluss oder davor?
colinardo
colinardo 28.05.2015 aktualisiert um 17:00:24 Uhr
Goto Top
Zitat von @lordofremixes:
Nach den 3 eckigen Klammern am Schluss oder davor?
Ganz zum Schluss ..also eine neue Zeile 41
colinardo
colinardo 28.05.2015 aktualisiert um 17:03:30 Uhr
Goto Top
Hier die Demo das es läuft / WIN7 x64:
seticon_272926.mp4
lordofremixes
lordofremixes 28.05.2015 um 17:06:57 Uhr
Goto Top
Hallo Uwe,

geht bei mir leider nicht. Irgendwo hab ich den Fehler drin. Bei dir und jodel geht es ja..
Ich habe jetzt ca. 2 Stunden Autobahn vor mir, dann teste ich an meinem Rechner zuhause.

Kannst du mir mal bitte den Code deiner Zeile 36 senden?
Muss die Icon Datei irgendwelche Voraussetzungen erfüllen?
colinardo
colinardo 28.05.2015 aktualisiert um 17:11:46 Uhr
Goto Top
Zitat von @lordofremixes:
Kannst du mir mal bitte den Code deiner Zeile 36 senden?
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 face-smile
lordofremixes
lordofremixes 28.05.2015 um 17:12:29 Uhr
Goto Top
Hallo Uwe!

Es geht! War ein Error40. Nach dem sleep Befehl ging es!!

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?

Gruß
colinardo
Lösung colinardo 28.05.2015, aktualisiert am 02.06.2015 um 09:41:29 Uhr
Goto Top
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.
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.

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"
Grüße Uwe
lordofremixes
lordofremixes 29.05.2015 aktualisiert um 13:50:15 Uhr
Goto Top
Hallo Uwe!!!!

Erst einmal super Arbeit und vielen, vielen Dank!!!
Ich habe noch ein paar wenige Fragen:

- Wie bekommt man das Script wieder beendet, so dass keine Icons mehr geändert werden?
- Ich habe den Code ausgeführt wie beschrieben, jetzt passiert aber folgendes:

Wenn ich das Programm öffne, geht ja wie beschrieben der IE auf, das Icon ändert sich nicht.
Führe ich das Script dann nochmal aus, ändert sich das Icon.
Surfe ich dann eine andere Seite an, bleibt das Icon weiterhin verändert..

Hast du ne Idee woran das liegen kann?

Die Adressleiste spielt in dem Script ja eigentlich keine Rolle, aber könnte es sein,
dass das http://localhost/... in der Adressleiste vielleicht stört?

Gruß
lordofremixes
lordofremixes
lordofremixes 29.05.2015 aktualisiert um 13:56:07 Uhr
Goto Top
Ist es eigentlich auch möglich, abhängig von der Adresszeile http://localhost/.... das Icon zu ändern?
Weil das Programm irgendwie nichts in der Titelleiste stehen hat. Im Quelltext steht aber was unter <title> </title>

Gruß
lordofremixes
colinardo
colinardo 29.05.2015 aktualisiert um 14:33:47 Uhr
Goto Top
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.
Hast du ne Idee woran das liegen kann?
Ja, an mir face-smile hab ich nicht berücksichtigt :-P ... kommt wohl durch die Sonne hier in Frankreich face-smile
colinardo
colinardo 29.05.2015 aktualisiert um 14:46:29 Uhr
Goto Top
Code ist oben aktualisiert ...

Weitere Anpassung nur gegen Cash face-wink
Viel Spaß.
Grüße Uwe
lordofremixes
lordofremixes 29.05.2015 aktualisiert um 14:53:50 Uhr
Goto Top
Ach du liebes bisschen, bist du im Urlaub ??
Uwe, noch eine frage, wenn ich das Script dann auf mehreren citrix Servern veröffentliche , gilt das dann für alle User ? Und muss ich nach einem Server Neustart das Script erneut ausführen?
colinardo
colinardo 29.05.2015 aktualisiert um 15:13:07 Uhr
Goto Top
Zitat von @lordofremixes:
Ach du liebes bisschen, bist du im Urlaub ??
So halb halb face-smile mit Lappi auf dem SUP-Board, leider heut kein Wind zum Kiten (hoffentlich kommen jetzt keine großen Wellen face-smile) ...irgendwie ist man heute auch im Urlaub bei Arbeit face-confused
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 ?) ...
lordofremixes
lordofremixes 01.06.2015 um 11:37:38 Uhr
Goto Top
Hallo Uwe!!

Leider erst heute dazugekommen, dir ne Rückmeldung zu geben. Hatte keinen VPN Zugriff auf den Server von zuhause aus..
Hoffentlich hast noch ein wenig Wind abbekommen?

Habe noch folgendes getestet:

Nach Ausführung deines angepassten Scripts und dann über Programm öffnen ist der IE aufgegangen.
Erst ist das Icon garnicht erschienen, dann erschien es und blinkt/wechselt im 2 Sekunden Takt (erst individuelles Icon, dann IE Icon; immer im Wechsel).

Wenn ich dann z.B. auf google.de surfe, wechselt das Icon weiterhin zwischen individuellem Icon und dem original IE Icon.
Irgend ne Idee woran das liegen könnte?Soll ich vielleicht ein Video machen und hochladen?

Gruß
lordofremixes
114757
114757 01.06.2015 aktualisiert um 12:01:20 Uhr
Goto Top
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 face-wink
lordofremixes
lordofremixes 01.06.2015 um 13:07:30 Uhr
Goto Top
Hallo jodel,

habe es aber noch nicht mit mehreren Usern getestet. Bin nur als ein einziger User (Admin) angemeldet, switcht trotzdem hin und her..
114757
114757 01.06.2015 um 13:14:34 Uhr
Goto Top
Hmm hier geht's wieder problemlos, auch mit mehreren unterschiedlichen Fenstern scheint ein Fluch auf deinen Rechnern zu liegen ;-P
lordofremixes
lordofremixes 01.06.2015 um 13:15:14 Uhr
Goto Top
Was mir auch noch aufgefallen ist, wenn ich mich vom Betriebssystem nicht abmelden. Den IE schließe und dann wieder aufmache. Ändert sich das Icon erst nicht, erst wenn ich das Script wieder ausführe, ändert sich das Icon wieder und switcht hin und her...
lordofremixes
lordofremixes 01.06.2015 um 13:15:57 Uhr
Goto Top
Ich probiere es jetzt mal mit einem anderen PC...
lordofremixes
lordofremixes 01.06.2015 um 14:09:03 Uhr
Goto Top
Zum beenden welchen CMD Prozess killen? Da gibts soooooo vieeellllleee.......
114757
Lösung 114757 01.06.2015, aktualisiert am 02.06.2015 um 09:41:08 Uhr
Goto Top
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 ?
Snowman25
Snowman25 01.06.2015 um 16:05:28 Uhr
Goto Top
Zitat von @114757:

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 ?

Meine Vermutung liegt eher auf "Verschleppter" bzw. "vererbter Administration".
lordofremixes
lordofremixes 02.06.2015 um 09:41:52 Uhr
Goto Top
Kaffee doch schon drei, aber heute nacht nur 3 Stunden schlaf gehabt..
Hab die Lösung!!
lordofremixes
lordofremixes 02.06.2015 aktualisiert um 09:43:27 Uhr
Goto Top
Ncohmal ne kjurze Rückmeldung:
Funktioniert alles super, Hatte nur Probleme mit Windows Server 2012 da gab es noch ausstehende Updates. Danach ging alles ohne Probleme..
Ganz DICKES LOB an UWE!!!! Frag mich grad eh die ganze Zeit, wieso es der Hersteeller nicht gebacken bekommt, aber UWE schon!!!!???!!!!