emeriks
Goto Top

Taste senden an Control in Web-Site

Hi,
ich habe eine HTML-Datei, welche mit PERFMON von Windows erstellt wurde. ("Einstellungen speichern unter ...")
In dieser HTML-Datei werden dann die im PERFMON konfigurierten Performance Counter dargestellt. Man kann das Control sogar starten, sodass es dann im Browser läuft und aktuelle Daten anzeigt.

Auszug:
<HTML>
<HEAD>
<META HTTP-EQUIV="Content-Type" CONTENT="text/html;" />  
<META NAME="GENERATOR" Content="Microsoft System Monitor" />  
</HEAD>
<BODY>
<OBJECT ID="DISystemMonitor1" WIDTH="100%" HEIGHT="100%"  
CLASSID="CLSID:C4D2D8E0-D1DD-11CE-940F-008029004347">  
	<PARAM NAME="_Version" VALUE="458755"/>  
	<PARAM NAME="_ExtentX" VALUE="45429"/>  
	<PARAM NAME="_ExtentY" VALUE="22172"/>  
......

Wenn man diese Datei mit dem IE11 startet, dann wird man gefragt, ob man geblockte Inhalte zulassen will. Und wann man das erlaubt, dann kann man in der Seite das Control bedienen, also auch die Sammlung starten.

Meine Frage:
Kennt jemand eine Methode des ActiveX-Controls, mit welcher man die Datensammlung z.B. via VBscript starten kann?
Ich würde also die Datei um eine Script-Block erweitern wollen, kenne bloß keine Methode des ActiveX-Controls, welche ich da aufrufen müsste. Bei MS auf den Seiten finde ich keine dafür.

Alternativ:
Man kann mit [Strg]+[F] die Sammlung starten und stoppen, wenn das Control den Focus hat.
Wie kann man Tastenanschläge gezielt an ein Control innerhalb eines HTML-Dokuments senden?

E.

Content-Key: 349496

Url: https://administrator.de/contentid/349496

Ausgedruckt am: 19.03.2024 um 09:03 Uhr

Mitglied: eisbein
eisbein 19.09.2017 um 15:52:36 Uhr
Goto Top
Hallo!

Ich habe auf die Schnelle diesen Link (is-it-possible-to-simulate-key-press-events-programmatically) gefunden.

Ohne JavaScript wird es aber nicht funktionieren.

Gruß
eisbein
Mitglied: emeriks
emeriks 19.09.2017 um 16:01:26 Uhr
Goto Top
Danke, aber da gehts um was anderes. Ich will nicht auf Tastenanschläge reagieren, sondern welche erzeugen. Gezielt für ein Control.
Mitglied: eisbein
eisbein 19.09.2017 um 16:06:28 Uhr
Goto Top
Hallo!

function simulateKeyPress(character) {
  jQuery.event.trigger({ type : 'keypress', which : character.charCodeAt(0) });  
}

$(function() {
  $('body').keypress(function(e) {  
    alert(e.which);
  });

  simulateKeyPress("e");  
});

Das wird doch hier mit der Funktion simulateKeyPress gemacht.

Gruß
eisbein
Mitglied: emeriks
emeriks 19.09.2017 um 16:10:38 Uhr
Goto Top
Ja, ok. Aber dieses jQuery sprengt jetzt den Rahmen. So aufwendig soll das nicht werden.
Mitglied: eisbein
eisbein 19.09.2017 um 16:13:30 Uhr
Goto Top
Hallo!

So aufwendig soll das nicht werden

Microsoft wünscht viel Glück face-wink

Gruß
eisbein
Mitglied: 133883
133883 19.09.2017 aktualisiert um 16:17:22 Uhr
Goto Top
Das wäre ja Sicherheitstechnisch ein GAU wenn das die Seite selbst anstoßen könnte.
Warum machst du die Datensammlung nicht direkt mit Powershell?
https://blogs.technet.microsoft.com/brad_rutkowski/2009/02/18/interactin ...

Gruß
Mitglied: 133883
133883 19.09.2017 aktualisiert um 16:40:01 Uhr
Goto Top
Als Beispiel HTA-File, getestet startet automatisch:
<html>
<head>
<title>Perfmon</title>
<HTA:APPLICATION
  APPLICATIONNAME="My Perfmon couter"  
  ID="MyPerfmonCounter"  
  VERSION="1.0"/>  
</head>

<script language="VBScript">  

Sub Window_OnLoad
 	Set objShell = CreateObject("Wscript.Shell")  
 	objShell.SendKeys "^F{ENTER}"  
End Sub

</script>

<body bgcolor="white">  

<OBJECT ID="sysmon" WIDTH="100%" HEIGHT="100%"  
CLASSID="CLSID:C4D2D8E0-D1DD-11CE-940F-008029004347">  
	<PARAM NAME="_Version" VALUE="458755"/>  
	<PARAM NAME="_ExtentX" VALUE="21087"/>  
	<PARAM NAME="_ExtentY" VALUE="16087"/>  
	<PARAM NAME="DisplayType" VALUE="1"/>  
	<PARAM NAME="ReportValueType" VALUE="0"/>  
	<PARAM NAME="MaximumScale" VALUE="100"/>  
	<PARAM NAME="MinimumScale" VALUE="0"/>  
	<PARAM NAME="ShowLegend" VALUE="1"/>  
	<PARAM NAME="ShowToolbar" VALUE="1"/>  
	<PARAM NAME="ShowScaleLabels" VALUE="1"/>  
	<PARAM NAME="ShowHorizontalGrid" VALUE="0"/>  
	<PARAM NAME="ShowVerticalGrid" VALUE="0"/>  
	<PARAM NAME="ShowValueBar" VALUE="1"/>  
	<PARAM NAME="ManualUpdate" VALUE="0"/>  
	<PARAM NAME="Highlight" VALUE="0"/>  
	<PARAM NAME="ReadOnly" VALUE="0"/>  
	<PARAM NAME="MonitorDuplicateInstances" VALUE="1"/>  
	<PARAM NAME="UpdateInterval" VALUE="1"/>  
	<PARAM NAME="DisplayFilter" VALUE="1"/>  
	<PARAM NAME="BackColorCtl" VALUE="-2147483633"/>  
	<PARAM NAME="ForeColor" VALUE="-1"/>  
	<PARAM NAME="BackColor" VALUE="-1"/>  
	<PARAM NAME="GridColor" VALUE="8421504"/>  
	<PARAM NAME="TimeBarColor" VALUE="255"/>  
	<PARAM NAME="BorderStyle" VALUE="0"/>  
	<PARAM NAME="TimeAxisLabels" VALUE="1"/>  
	<PARAM NAME="Tooltip" VALUE="1"/>  
	<PARAM NAME="NextCounterColor" VALUE="0"/>  
	<PARAM NAME="NextCounterWidth" VALUE="0"/>  
	<PARAM NAME="NextCounterLineStyle" VALUE="0"/>  
	<PARAM NAME="MaximumSamples" VALUE="100"/>  
	<PARAM NAME="GraphTitle" VALUE=""/>  
	<PARAM NAME="YAxisLabel" VALUE=""/>  
	<PARAM NAME="DigitGrouping" VALUE="1"/>  
	<PARAM NAME="WrapTimeLine" VALUE="1"/>  
	<PARAM NAME="DataSourceType" VALUE="1"/>  
	<PARAM NAME="SqlDsnName" VALUE=""/>  
	<PARAM NAME="SqlLogSetName" VALUE=""/>  
	<PARAM NAME="LogFileCount" VALUE="0"/>  
	<PARAM NAME="AmbientFont" VALUE="1"/>  
	<PARAM NAME="LegendColumnWidths" VALUE="	8.02069857697283E-02	8.02069857697283E-02	0.200517464424321	9.96119016817594E-02	9.96119016817594E-02	0.200517464424321	0.160413971539457"/>  
	<PARAM NAME="LegendSortDirection" VALUE="-2"/>  
	<PARAM NAME="LegendSortColumn" VALUE="0"/>  
	<PARAM NAME="CounterCount" VALUE="1"/>  
	<PARAM NAME="MaximumSamples" VALUE="100"/>  
	<PARAM NAME="SampleCount" VALUE="100"/>  
	<PARAM NAME="SamplesSoFar" VALUE="112"/>  
	<PARAM NAME="SampleIndex" VALUE="12"/>  
	<PARAM NAME="StepNumber" VALUE="11"/>  
	<PARAM NAME="Counter00001.Path" VALUE="\Processor Information(_Total)\% Processor Time"/>  
	<PARAM NAME="Counter00001.Color" VALUE="255"/>  
	<PARAM NAME="Counter00001.Width" VALUE="1"/>  
	<PARAM NAME="Counter00001.LineStyle" VALUE="0"/>  
	<PARAM NAME="Counter00001.ScaleFactor" VALUE="0"/>  
	<PARAM NAME="Counter00001.Show" VALUE="1"/>  
	<PARAM NAME="Counter00001.Selected" VALUE="1"/>  
	<PARAM NAME="Counter00001.Minimum" VALUE="0"/>  
	<PARAM NAME="Counter00001.Maximum" VALUE="9.52460519258298"/>  
	<PARAM NAME="Counter00001.Average" VALUE="2.66685714673445"/>  
	<PARAM NAME="Counter00001.StatisticStatus" VALUE="0"/>  
	<PARAM NAME="Selected: %s" VALUE="\Processor Information(_Total)\% Processor Time"/>  
</OBJECT>
</body>
</html>
Mitglied: emeriks
emeriks 19.09.2017 um 17:12:45 Uhr
Goto Top
Das wäre ja Sicherheitstechnisch ein GAU wenn das die Seite selbst anstoßen könnte.
Von selbst starten war keine Rede. Ich würde einen Button einfügen und dort das Script dranhängen.
Warum machst du die Datensammlung nicht direkt mit Powershell?
Ja, ich weiß. Oder mit VB oder C#. Darum gehts nicht. Ich will die Daten ja nicht irgendwo hinschreiben sondern in "Echtzeit" im Graph anzeigen.
OK, auch den Graph kann ich alleine zeichnen (programmieren). Aber warum die Mühe, wenn ich dass einfach über dieses Control erschlagen könnte.

Ich will mir bloß eine primitive Seite erstellen, in welcher gleich mehrere solcher Controls drin sind. 20+
Egal wie, ob manuell erstellt oder mittels eines Powershell- oder VBscripts oder sonstwie.
Ich müsste aber all diese Controls einzeln anklicken, um die Sammlungen zu starten.
Also ein Button mit Script dran, welches all diese Controls startet.
Mitglied: 133883
133883 19.09.2017 aktualisiert um 18:04:47 Uhr
Goto Top
Also wenn ich mal per c# das OCX einbinde und die Counter manuell per Methode hinzufüge wird das Live-Tracking automatisch im Control angetriggert:
Wenn du dir also deine Performance-Counter-Strings zusammen sammelst und dir ein DropDown mit Gruppen von Werten machst kannst du dir das so zusammenbauen.
 SystemMonitor.ICounterItem itm;
 sysmoncontrol.AddCounter(@"\Prozessorinformationen(_Total)\Prozessorzeit (%)",out itm);