Frage

Welches ist die bevorzugte Entwicklungssprache für Windows 7-Geräte?

Ich weiß, dass ein Gadget XML, HTML, CSS und Script (Java/VB) verwendet, aber ich benötige einige erweiterte Funktionen wie:

  1. Eine Datei schreiben/lesen
  2. Liste der laufenden Prozesse abrufen
  3. Senden von Schlüsseln an eine aktive Anwendung

Für die oben genannten Aufgaben muss ich die Windows-API oder, wenn möglich, .NET verwenden.Ist es möglich, die oben genannten Funktionen in einem Gadget zu haben?

War es hilfreich?

Lösung

Für JScript stehen verschiedene COM-Objekte zur Verfügung, die das verwenden ActiveXObject Klasse.Sie können Ihre eigene Interop-Assembly mit .NET schreiben, dies führt jedoch zu mehreren Problemen:

  • Jede öffentliche Klasse innerhalb der Assembly muss vor der Verwendung auf dem Hostcomputer registriert werden.Beim Schreiben und Erstellen von Schlüsseln in x64 treten Probleme auf, mit denen das WScript.Shell-Objekt für bestimmte Teile der Registrierung zu kämpfen hat.WMI eignet sich jedoch gut für die Registrierung.
  • Ab der Instanziierung ist die Assembly-DLL gesperrt und kann nicht gelöscht werden, selbst wenn das Gadget geschlossen ist.Dies ist vor allem dann ein Problem, wenn Deinstallationen/Softwareaktualisierungen ins Spiel kommen.Sobald der Prozess „sidebar.exe“ beendet ist, wird die Datei entsperrt.
  • Das Aufheben der Registrierung scheint selbst mit WMI problematisch zu sein.Der Zeitpunkt der Aufhebung der Registrierung ist oft ein Problem (tun Sie das beim Entladen oder nach der Instanziierung?Was passiert, wenn mehrere Gadgets geöffnet sind, die es verwenden?).Wenn Sie die Registrierung nicht aufheben, bleiben außerdem unerwünschte Registrierungsschlüssel auf dem Computer des Benutzers zurück, wenn dieser beschließt, Ihr Gadget nicht zu behalten.
  • Wenn das Gadget zu 100 % auf der Baugruppe basiert und die Baugruppe aus irgendeinem Grund nicht auf dem Computer des Benutzers registriert werden kann, steht dem Benutzer nicht die gesamte Erfahrung mit dem Gadget zur Verfügung.Seien Sie auf einige schlecht bewertete Rezensionen in der Windows Live Gallery vorbereitet.

Wenn Sie sich entscheiden, müssen Sie wirklich eine Assembly schreiben.Wenn Sie Ihre eigene Assembly für ein Gadget schreiben, würde ich Ihnen raten, dass diese eine Erweiterung der Grundfunktionen Ihres Gadgets darstellt und Sie sicherstellen, dass das Gadget über verfügbare Funktionen verfügt, falls der Benutzer die Assembly nicht verwenden kann.

Mein Unternehmen verfügt über eine bisher unveröffentlichte Lösung für die oben genannten Probleme, die wir in naher Zukunft (dh nach weiteren Tests) allen Windows-Desktop-Gadget-Entwicklern zur Verfügung stellen möchten.

Die von Ihnen angegebenen erweiterten Funktionen können alle mithilfe einiger integrierter Windows COM-Objekte ausgeführt werden, die bereits registriert sind und nicht mit Ihrem Gadget verteilt werden, sodass sie nicht unter den oben genannten Problemen leiden.Als Antwort auf Ihre spezifischen Anforderungen sind Beispiele hierfür:

FileSystemObject
Das Schreiben/Lesen von Dateien kann mit erfolgen FileSystemObject.Ein einfaches Beispiel für FileSystemObject zum Lesen von Dateien ist:

var ForReading = 1, ForWriting = 2, ForAppending = 8;
var oFSO  = new ActiveXObject("Scripting.FileSystemObject");
var oFile = oFSO.OpenTextFile(System.Gadget.path+"\\test.txt", ForReading, true);
var sText = oFile.ReadAll();
window.prompt("", sText);

Windows-Verwaltungsinstrumentation (WMI)
WMI hat eine enorme Bandbreite an Zwecken.Für bestimmte Teile sind jedoch Administratorrechte erforderlich (die auf sidebar.exe angewendet werden müssen).Eine der Klassen in WMI ist Win32_Prozess mit dem laufende Prozesse iteriert werden können.Beachten Sie, dass die Verwendung von WMI in JScript viel schwieriger ist als in VBScript und dass die meisten Beispiele, die Sie im Internet finden, für VBScript gelten (was die Portierung des Codes mühsam macht).

Windows-Skript-Host-ShellDer WshShell-Objekt bietet eine weitere großartige Erweiterung der Einschränkungen von Windows-Desktop-Gadgets, einschließlich der SendKeys Methode.Obwohl die Methode nicht zum spezifischen Senden eines Schlüssels an eine Anwendung verwendet werden kann, ist es möglich, die Anwendung mit zu aktivieren AppActivate -Methode und verwenden Sie dann SendKeys, um Tastenanschläge in der aktivierten Anwendung zu emulieren.

Ich hoffe das hilft :-)

Lizenziert unter: CC-BY-SA mit Zuschreibung
Nicht verbunden mit StackOverflow
scroll top