Laden...

Eventhandler für das Eindocken eines Notebooks in Dockingstation

Erstellt von Adleano vor 10 Jahren Letzter Beitrag vor 10 Jahren 2.650 Views
A
Adleano Themenstarter:in
31 Beiträge seit 2011
vor 10 Jahren
Eventhandler für das Eindocken eines Notebooks in Dockingstation

Hallo zusammen,

gibt es eigentlich einen Eventhandler für das Eindocken eines Notebooks in die Dockingstation?

Hintergrund ist folgender:
Wir haben bei uns einige Rechner (alles die gleichen), für die es auch Dockingstations gibt. JEder Rechner kann sich an einer beliebigen Dockingstation eindocken. Das hat dann allerdings zur Folge, dass jedes Mal wenn der Rechner an einer "neuen" Dockingstation eingedockt wird, durch den Rechner automatisch eine neue LAN-Verbindung erstellt wird.
Diese LAN-Verbindung muss ich dann mit einer statischen Konfiguration versehen, damit der Netzwerkzugriff funktioniert.

Alternativ wäre auch ein Eventhandler gut, der erkennt wenn eine neue LAN-Verbindung erstellt wird.

Hat jemand von Euch eine Idee dazu?

Besten Dank und viele Grüße
Adleano

16.842 Beiträge seit 2008
vor 10 Jahren

MSDN Suche nach Docking in der Win32 API:
CM_Is_Dock_Station_Present function
CM_Is_Dock_Station_Present_Ex function

Sowas wird aber mit Sicherheit von Hersteller zu Hersteller verschieden und eher eine Treibersache sein. Ich kann mir nicht vorstellen, dass Windows das Dock jedes Herstellers erkennt.
Die Docking meines Laptops (Dell Latitude E6430 14") registriert sich als einfacher USB Hub.

A
Adleano Themenstarter:in
31 Beiträge seit 2011
vor 10 Jahren

Hallo Abt,

vielen Dank für Deine Antwort.

bei unseren Rechnern hier wird das auch ein weiterer Standard-USB-Hub.

Ich würde es gerne mal mit der Implementierung von "CM_Is_Dock_Station_Present function" versuchen.
Ich häng aber leider grad nur an der Implementierung in einem kleinen C#-Testprogramm.
Muss ja soweit ich weiß über WinAPI funktionieren, oder?

Nur welche DLL und welche Parameter?
Könnt ihr mir dabei bitte helfen?

Besten Dank.

D
216 Beiträge seit 2009
vor 10 Jahren

Steht doch in dem Link den Abt gepostet hat.

[DllImport("cfgmgr32.dll")]
public static extern bool CM_Is_Dock_Station_Present();

A
Adleano Themenstarter:in
31 Beiträge seit 2011
vor 10 Jahren

Hi, danke für´s Augen öffnen 😁
Ich blinder Mensch.

Was ich aber im Moment nicht so ganz verstehe ist, dass mir folgende Methode immer true zurückmeldet. Wenn ich das richtig verstehe, müsste die Funktion " CM_Is_Dock_Station_Present" ja den übergebenen Parameter "test" ja entsprechend true oder false setzen, jenachdem ob der Rechner eingedockt ist oder nicht. Oder liege ich da falsch?

Bei mir bleibt Test aber immer false und Blub immer true.


 private void backgroundWorker1_DoWork(object sender, DoWorkEventArgs e)
        {
            bool test= false;
            bool blub = CM_Is_Dock_Station_Present(test);
            System.Windows.Forms.MessageBox.Show("Dockingstatus: " + blub);
        }

Besten Dank.

Z
403 Beiträge seit 2007
vor 10 Jahren

Hallo Adleano,

weil du den bool als Kopie übergibst und nicht als Referenz.
Der Rückgabewert gibt an ob die Funktion erfolg hatte.

[DllImport("cfgmgr32.dll")]
public static extern bool CM_Is_Dock_Station_Present(out bool pbPresent);

private void backgroundWorker1_DoWork(object sender, DoWorkEventArgs e)
{
    bool test= false;
    bool blub = CM_Is_Dock_Station_Present(out test);
    System.Windows.Forms.MessageBox.Show("Dockingstatus: " + blub);
}

André

A
Adleano Themenstarter:in
31 Beiträge seit 2011
vor 10 Jahren

ahhh jetzt versteh ichs. Vielen Dank dafür.

Jetzt gibt die Funktion nur leider immer false zurück. Egal ob der Rechner eingedockt ist oder nicht. 🙁
Habs bei zwei verschiedenen Notebooks probiert (unterschiedlich).

16.842 Beiträge seit 2008
vor 10 Jahren

Ich kann mir nicht vorstellen, dass Windows das Dock jedes Herstellers erkennt.

A
Adleano Themenstarter:in
31 Beiträge seit 2011
vor 10 Jahren

tja dann hab ich hier wohl zwei solche Fälle gefunden...

Also dann werd ich mal nach ner anderen Lösung suchen.

Danke Euch allen für die Unterstützung.