C-Sharp - Internet-Explorer-Instanzen aus SHDocVW.ShellWindowsClass() auslesen
Hallo,
in einem C#-Programm muss ich die Instanzen der aktuell in Windows geöffneten Internet-Explorer einlesen.
Folgenden Code verwende ich bislang dafür:
Der Code funktioniert soweit.
Aber ich habe mich gefragt, ob ich aus "SHDocVw.ShellWindowsClass()" nicht direkt nur die Internet Explorer-Fenster abfragen und diese direkt in ein Array schreiben kann?! Das mehrmalige Durchlaufen der "SHDocVw.ShellWindowsClass()" gefällt mir nicht so richtig...
Danke
mabue
in einem C#-Programm muss ich die Instanzen der aktuell in Windows geöffneten Internet-Explorer einlesen.
Folgenden Code verwende ich bislang dafür:
static SHDocVw.InternetExplorer getIEWindows()
{
// Anzahl der IE-Fenster ermitteln
int anzahl_ie = 0;
foreach (SHDocVw.InternetExplorer ie in new SHDocVw.ShellWindowsClass())
anzahl_ie++;
// Array für die Aufnahme der IE-Fenster mit Länge 0 anlegen
SHDocVw.InternetExplorer ie_windows = new SHDocVw.InternetExplorer[anzahl_ie];
int zaehler = 0;
foreach (SHDocVw.InternetExplorer ie in new SHDocVw.ShellWindowsClass())
{
ie_windows[zaehler] = ie;
zaehler++;
}
return ie_windows
}
Der Code funktioniert soweit.
Aber ich habe mich gefragt, ob ich aus "SHDocVw.ShellWindowsClass()" nicht direkt nur die Internet Explorer-Fenster abfragen und diese direkt in ein Array schreiben kann?! Das mehrmalige Durchlaufen der "SHDocVw.ShellWindowsClass()" gefällt mir nicht so richtig...
Danke
mabue
Please also mark the comments that contributed to the solution of the article
Content-Key: 237083
Url: https://administrator.de/contentid/237083
Printed on: April 23, 2024 at 14:04 o'clock
2 Comments
Latest comment
Hallo mabue,
dann nehme anstatt eines statischen Arrays in dem du die Instanzen speicherst einfach ein dynamisches Array (z.B. eine ArrayList()) dem du die Instanzen direkt hinzufügen kannst ohne erst die Größe ermitteln zu müssen, dann benötigst du nur eine Schleife.
und dann die Instanz innerhalb einer einzigen Schleife so zum Array hinzufügen:
Eine Methode die direkt nur Handles von spezifischen Fenstern zurückgibt lässt sich mit den Win32 APIs machen: http://stackoverflow.com/questions/2238609/c-sharp-get-handles-to-all-w ...
Grüße Uwe
dann nehme anstatt eines statischen Arrays in dem du die Instanzen speicherst einfach ein dynamisches Array (z.B. eine ArrayList()) dem du die Instanzen direkt hinzufügen kannst ohne erst die Größe ermitteln zu müssen, dann benötigst du nur eine Schleife.
ArrayList ie_windows = new ArrayList();
ie_windows.Add(ie);
Eine Methode die direkt nur Handles von spezifischen Fenstern zurückgibt lässt sich mit den Win32 APIs machen: http://stackoverflow.com/questions/2238609/c-sharp-get-handles-to-all-w ...
Grüße Uwe