WSH_PANEL_MOD: Zugriff auf Win32_Battery korrekt?

Begonnen von Buran, 20. Februar 2011, 01:00:32

Vorheriges Thema - Nächstes Thema

Buran

Hallo zusammen,
seit ca. 2 Jahren setze ich Foobar ein und habe durch häufiges Mitlesen hier im Forum
mächtig viel gelernt. Vielen Dank an dieser Stelle an die Protagonisten! Einige WSH-Scripts
hier aus dem Forum habe ich erfolgreich übernommen und auch adaptiert.

Jetzt hänge ich aber leider ein wenig beim Auslesen des Batterie-Status via Win32_Battery.
Mein Code sieht folgendermaßen aus (auf das Wesentliche reduziert):

============================
var oBatteries;
var enumInstances;
var oDevice;

function on_paint(gr){
    oBatteries = GetObject("WinMgmts:").InstancesOf ("Win32_Battery");
    enumInstances = new Enumerator(oBatteries);
    oDevice = enumInstances.item();
    percentage = oDevice.EstimatedChargeRemaining;
    minutes = oDevice.EstimatedRunTime % 60;
    hours = (oDevice.EstimatedRunTime - minutes)/60;
    //Ausgabe der Daten im folgenden
    //...
}

function on_playback_time() {
    counter++;
    if (counter == 20) {
        counter = 0;
        window.Repaint();
    }   
}
============================


Das Auslesen des Batteriestatus funktoniert tadellos und Foobar läuft nach wie
vor stabil. Wenn ich allerdings zudem WSH-Scripts in einem anderen DUI-Element
einsetze, die die Funktion "window.CreateTimerInterval(1000)" beinhalten, wird
Foobar instabil und stürzt sporadisch ab. Ein Beispiel ist das Script "coveranimation1",
das hier im Forum gepostet wurde.
Jedes Script (Batterie oder coveranimation1) für sich läuft stabil. Nur wenn beide
Scripts im Einsatz sind, wird Foobar instabil, insbesondere auf meinem Netbook
mit schwachem Prozessor.

Kann es ein, dass sich die beiden Scripts in die Quere kommen?
Ist mein obiges Script vielleicht buggy beim Zugriff auf Win32?

Über jeden Tipp wäre ich sehr dankbar!

Bei Bedarf stelle ich gerne den kompletten Crash-Report zur Verfügung.
Hier ein Auszug:
Illegal operation:
Code: C0000005h, flags: 00000000h, address: 6676D3EEh
Access violation, operation: read, address: 00000000h
Call path:
entry=>app_mainloop
[...]
Crash location:
Module: foo_uie_wsh_panel_mod
Offset: 3D3EEh

Danke & Gruß

    Buran

grimes

Da es ein foobar2000-crash ist, liegt der Fehler nicht im Skript (wie bei einem Skripterror), sondern in der Anwendung foo_uie_wsh_panel_mod.
Dafür ist der Entwickler T.P Wang zuständig. Du kannst den Crashlog an den Entwickler (auf Hydrogenaudio) schicken, oder mit "Send crashlog"(?) in foobar2000.

Buran

Hallo grimes,
vielen Dank für den Hinweis! Es war mir nicht klar, dass hier ein Scriptfehler
auszuschließen ist, da der Crash im Plugin selbst stattfindet.

Ende der Woche werde ich einen Crash-Log senden, wenn ich wieder am
heimischen Rechner sitze.

Danke nochmals & Gruß

    Buran