Hi,
also ich habe mir mit dem 2008er VS ein MSI-Package erstellt, dass hier und da einige Files kopiert und danach dann meine C#-App startet, die dann u.a. den SQL Server 2008 per Commandline installiert.
Nur treten im Laufe der SQL Server Installation immer Zugriff verweigert-Fehler auf (beim Schreiben in die Registry), die ich aber nicht habe, wenn ich die cmd per "Run as administrator" starte und von da aus das SQL Server Setup mit den Parametern aufrufe.
Es hat auch schon funktioniert, als ich nur meine C#-App gestartet habe (also ohne das ganze MSI-Package).
Es muss da anscheinend irgendein Problem mit nicht ausreichenden Rechten oder sowas vorliegen...
Kann mir da jemand weiterhelfen ??
Hi,
danke für die superschnelle Antwort ! 🙂
Ok, also es muss dann wohl /C noch mit zu den Argumenten, war mir nicht wirklich klar, ob ich das gebrauchen kann.
Das Problem war, dass ein Pfad nicht ganz gepasst hatte auf meiner Maschine und der Exitcode von 1 hat mich immer glauben lassen, dass etwas an meinen Parametern falsch ist.
Sorry für den "fast schon Spam"... 😉
Hallo,
also ich will nur etwas testen, natürlich könnte ich gleich setup.exe direkt als Prozess starten.
Ich habe folgendes:
string exe = "C:\\install\\data\\setup.exe";
string params = "/action=install /configurationfile=\"C:\\Program Files\\SetupComponents\\ConfigurationFile.ini\"";
Process proc = new Process();
string cmdPath = System.IO.Path.Combine(Environment.SystemDirectory, "cmd.exe");
proc.StartInfo.FileName = cmdPath;
proc.StartInfo.Arguments = exe + params;
proc.Start();
...
proc.Close();
Nur ist der Exitcode immer wieder 1, auch wenn ich "/C" zu den Argumenten hinzufüge. Ist vielleicht ein Problem, dass die Parameter in 'params' wirklich nur die Parameter zu 'exe' sind ??
Wer kann mir da bitte mal schnell helfen ?
Ist wie gesagt nur zu Testzwecken...
Ja, das mache ich auch schon die ganze Zeit.
Hab mir aber vorgestellt, auch pro Tag einmal einen etwas umfangreicheren Report (oder sowas) zu erstellen und den dann zu verschicken.
Am Ende dürfte im Report tatsächlich nicht viel anderes als im Log stehen.
Hab aber gedacht, es gibt irgendne Möglichkeit, da etwas optisch ansprecherendes zu erstellen.
Wollte den Report und das Logfile getrennt voneinander behandeln.
Hi,
also bei mir liegt ein reines Ideenproblem vor. Habe echt keinen Plan, wie (bzw. mit was) ich folgendes realisieren soll:
Ich will in meiner Applikation eine Art Bericht (Statistik) über meine Anwendung selber erstellen. Die Anwendung soll diesen Bericht 1mal pro Tag an eine angegebene Mailadresse schicken.
Es soll also ein Bericht (Statistik, wie auch immer) werden, dem ich z.B. einige Exceptions (auch detailliert), Startup-Pfad usw. hinzufüge und dann per Mail verschicke.
Das sind bis jetzt meine Ideen.
Nur mit was kann man sowas realisieren ?? ?(
Wer kann mir helfen ??
Mir ein paar Ideen geben ??
PS: Es liegen keine Daten in einer Datenbank vor.
Hey, also das sieht sehr gut aus.
Habe das mit dem Webrequest und -response (Checken des Content-Types) so umgesetzt:
// um das andauernde Schmeißen von Exceptions zu verhindern...
if (e.Url.HostNameType != UriHostNameType.Unknown)
{
request = WebRequest.Create(e.Url);
request.Method = "HEAD";
response = request.GetResponse();
response.Close();
if (!response.ContentType.StartsWith("text/"))
{
e.Cancel = true;
...
}
}
So funzts auch !
Was mich aber daran stört: Dieses andauernde Create, GetResponse usw. geschieht ja bei jedem Aufruf des Navigating-Events.
Aber sonst passts.
Guten Morgen,
wie kann man denn den Filedownload im Webbrowser-Control verbieten ?
Geht das überhaupt ?
Hab echt keine Ahnung, wie ich da vorgehen kann !
Ich würde dir empfehlen, mal das PInovke Signature Toolkit anzuschauen:
http://www.codeplex.com/clrinterop/Release/ProjectReleases.aspx?ReleaseId=14120
Trage dort einfach deine C++ struct ein und erhältst als Output die struct in C#.
Probiers mal aus.
Vielleicht hilft es dir.
Die ganze Geschichte läuft über Interfaces.
Ein Device anlegen muss man nicht.
Aber habe es anders gelöst bekommen:
Im SizeChanged-Event der Form setze ich erst die Größe des Videofensters.
Also per SetWindowPosition des IVideoWindow-Interfaces.
Und da meine Form immer maximiert sein soll, passt das so.
Aber trotzdem danke für die Hilfsbereitschaft !! 👍
Ähm das hör ich zum ersten Mal.
Das ist noch nicht Teil von DirectShow !?
Ich versuche ganz simpel per DirectShow (QuartzTypeLib) ein wmv-File wiederzugeben, was bis auf den Fullscreen ja funktioniert.
Hi,
also ich probiere jetzt schon lange, per DirectShow mein Video im Fullscreen abspielen zu lassen.
Entweder wird das Video trotzdem "klein" abgespielt oder es wird mal ganz kurz in den Fullscreen-Mode gewechselt und dann aber auch gleich wieder zurück in den "normalen" Modus.
Habe bis jetzt versucht:
Hat aber alles nix gebracht.
Über Google, Codeproject usw. findet man meistens nur FullscreenMode auf true setzen und dann geht das...
Wie funktioniert es denn nun ??
Hey,
also habe es gelöst, in dem ich mir beim Parsen die jeweilige Node merke und im späteren Verlauf dann auswerte.
So funktioniert es bestens.
Vielen Dank für eure Hilfe !! 👍
Das da war nur ein Versuch. Hatte keinen Plan, wie ich das am besten lösen kann.
Die Sache mit dem Merken wird das Beste sein, da ich ja per Reader das File parse.
Schreiben will ich in das XML-File nicht, nur lesen.
Ok, ich werde mal deine Vorschläge durchprobieren und werd mich wieder melden.
Vielen Dank erstmal für die Hilfe ! 👍
Das ist ja vielleicht ..., das ja im Prinzip keine Referenzen kopiert werden.
Ok und wie kann ich das dann lösen ?
Muss ja irgendwie gehn.
Hi,
also ich hab ein XML-File, das so aussieht (Ausschnitt):
<nonshiftkeys>
<key type="scrollup" vkey="0">
<region>
<point x="228" y="6"/>
<point x="355" y="6"/>
<point x="355" y="53"/>
<point x="228" y="53"/>
<point x="228" y="6"/>
</region>
</key>
...
Ich will nun den Namen der Parentnode, wenn der Reader auf dem key-Tag steht.
Also dass ich dann wie hier z.B. nonshiftkeys erhalte.
Wie mache ich das ??
Habe es z.B. schonmal so versucht:
if (reader.Name == "key" && reader.HasAttributes)
{
XmlDocument xmlDoc = new XmlDocument();
XmlNode currentNode = xmlDoc.ReadNode(reader);
XmlNode parent = currentNode.ParentNode;
...
Nur kapier ich nicht, wieso die Property Parentnode immer null ist.
Der key-Tag hat doch eine direkte Parentnode !!??
Ja genau, das war DIE Idee !
Prüfe den Typ des Keys auf Enter und wenn es zutrifft, dann zeichne ich erst das "obere" Rechteck und dann das "Untere".
So funktionierts prima !
Besten Dank für die Hilfe !! 👍
Hi,
erstmal vielen Dank für deine Antwort.
Die Sache mit DrawImage war eine sehr gute Idee.
So siehts aus:
private void ShowPressedKey(ref Keyboard.Key key)
{
img = Image.FromFile(KeyBoardDir + this.Keyboard_Lang + ".PictP.bmp");
graph = this.picBox.CreateGraphics();
graph.DrawImage(img, new Rectangle(key.position[0].X, key.position[0].Y, key.position[1].X - key.position[0].X, key.position[2].Y - key.position[1].Y), new Rectangle(key.position[0].X, key.position[0].Y, key.position[1].X - key.position[0].X, key.position[2].Y - key.position[1].Y), GraphicsUnit.Pixel);
}
Und in picBox_MouseUp dann wieder:
private void picBox_MouseUp(object sender, MouseEventArgs e)
{
this.picBox.Invalidate();
if (img != null)
{
img.Dispose();
img = null;
}
if (graph != null)
{
graph.Dispose();
graph = null;
}
}
Ich habe nur noch ein Problem: in der struct Keyboard.Key beschreibe ich den Typ des Keys, den Keycode, den Charvalue (wenn vorhanden) und die Position.
Die Position ist ein Array aus 5 Punkten, nur beim Enterkey besteht das Array aus 9 Punkten.
DrawImage bräuchte noch eine Überladung, in der man ein Array aus Points für das Ziel- und Quellimage angeben kann.
Es existiert in dieser Form nur, dass man für das Zielimage ein Point-Array übergibt und für das Quellimage ein Rectangle oder sowas.
Wenn ich es so lasse, wie es jetzt ist, dann sieht der Klick auf Enter aber ... aus, weil ich ja ein größeren Bereich für den Key angebe als der Key selber eig. ist (Enter ist ja kein Rechteck).
Wie kann ich jetzt am einfachsten diese Sache lösen ?
Hi,
ich habe vor, bei meiner Touchscreen-Tastatur eine "Interaktion" anzuzeigen, wenn man eine Taste drückt.
Also an der Stelle der Taste, die gedrückt wird, ein anderes Bitmap einblenden (habe das selbe Bitmap meiner Tastatur, wo alle Tasten gedrückt sind).
Ich müsste also an genau der Stelle der gedrückten Taste das andere Bitmap drüberblenden, damit eben erkennbar ist, dass eine Taste gedrückt wurde und auch welche es war.
Wie könnte ich das am einfachsten machen ?
Wer hat da Ideen dazu ?
Läuft auch der entsprechende Service ?
Schau mal unter Dienste -> WMI-Leistungsadapter was da steht.
Welche Möglichkeiten hast du sonst noch probiert ?
Welche .NET-Version benutzt du ? Bei 1.1 muss das aktuelle Service Pack installiert sein.
Abhängige Services hat er nicht, daran kanns nicht liegen.
Ok alles ist gut.
Es fehlte dann doch noch ein Browser.Document.Focus() !!
Darauf muss man erstmal kommen.
Jetzt funktionierts mit keyb_event, SendKeys.Send ... .
Vielen vielen Dank für eure Hilfe !
Noch nen schönen Tag. 👍
Also das mit dem Event war eine gute Idee, ich hätte auch mal eher darauf reagieren können !
Also ich registriere das Event in der Mainform und setze dort dann den Focus auf den Browser und sende per keyb_event die entsprechende Taste.
Nur funktioniert bsi jetzt z.B. nur Backspace. Die anderen Tasten werden gesendet, aber nicht ausgegeben.
Ich schätze, dass das irgendwas mit dem Hexwert zu tun, den ich sende, obwohl er stimmt:
private void SendKey(object sender, KeyEventArgs e)
{
try
{
byte code = Convert.ToByte(e.KeyValue.ToString("X"), 16);
if (!Browser.Focus())
...
keybd_event(code, 0, 0, UIntPtr.Zero);
keybd_event(code, 0, 2, UIntPtr.Zero);
}
catch (Exception Ex)
{
...
}
}
Mal ein Versuch, das Hin und Her mit der byte-Variable ist eig. nur zum Test, weil ich sehen wollte, ob der Wert stimmt, den ich schicke.
Habt ihr da noch Ideen zum Problem ??
(Ja ich weiß, ich nerve, will aber das Problem komplett beseitigen !)
Hat keiner ne Idee an was es liegt ?
Ich muss doch irgendwie meinem Browser-Control aus meiner 2. Form Tastatureingaben schicken können !
Hm ich meinte auch eher topmost, das modal war Quatsch.
Und dadurch kommt doch die Message in der Queue meiner Mainform an !
Also ich hab es mal so probiert und es funzt trotzdem nicht:
[DllImport("user32.dll")]
private static extern void keybd_event(byte key, byte bScan, int dwFlags, UIntPtr dwExtraInfo);
public static void Send()
{
main.Browser.Focus();
keybd_event((byte)0x41, 0, 0, UIntPtr.Zero);
keybd_event((byte)0x41, 0, 2, UIntPtr.Zero);
}
Ich würde tatsächlich darauf tippen, dass das irgendwas mit dem Focus zu tun hat.
Nur wie löse ich sowas ?
Meine 2. Form (Keyboard) muss ja logischerweise modal sein, irgendwie muss ja was eingegeben werden.
Hab echt kein Plan ! X(
Hi,
ok werde mir die Geschichte mit keyb_event mal genauer anschauen.
Zum Thema Fokus: habe auch schon in die Richtung gedacht.
Habe zum Probieren mal in der Mainform ne static-Methode erstellt, in der zuerst über Browser.Focus() der Fokus auf das Control gesetzt wird und danach über SendKeys die Taste gesendet.
Die Methode rufe ich dann per BeginInvoke aus der anderen Form auf.
Klingt für mich zwar logisch, funktioniert aber trotzdem nicht. X(
Ok, werde mich mal an keyb_event setzen.
Bin für weitere Vorschläge weiterhin offen. 😁
Nein passt schon so.
Hab vergessen es zu erwähnen: auf der 2. modalen Form ist ein Bitmap. Diese Form stellt mein Touchscreen-Keyboard dar.
Ich will (logischerweise) bei Klick auf das Bitmap (die Tastatur) die jeweilige Taste an mein Browser-Control senden, um halt dem User zu gestatten, auf manchen Seiten etwas einzugeben.
Hi,
also bevor ich hier wieder ewig probiere:
Ich will aus ner zweiten modalen Form ein Tastendruck an meine Mainform bzw. an das Browser-Control darauf versenden.
Wie mache ich das ?
Habe es schon probiert mit:
Ne Möglichkeit wäre noch Sendinput bzw. keyb_event.
Würde aber erstmal wissen, wieso das nicht mit SendKeys geht !!??
Gut, es hat sich eigentlich schon geklärt.
War eher ein spezifisches Problem in meiner Anwendung.
Hier und da mal ein static und konnte dann so über BeginInvoke die static-Methoden aus der Mainform aufrufen.
Hi,
also hab ich eine Anwendung, in der ich das Browser-Control nutze.
Man kann meine Applikation teilweise über einen Socket steuern.
Ich kann eine Message schicken, und daraufhin wird z.B. ein Touchscreen-Keyboard (Bitmap auf modaler Form) angezeigt.
Mit der Tastatur kann man im Browser eine Seite vor, zurück usw. gehen.
Meine Frage: Wie kann ich das Browser-Control außerhalb der Mainform steuern ?
Eine neues Objekt von Main kommt nicht in Frage, da zwar dann der Aufruf über Invoke... funktioniert, nur dass ich eben nicht die "gewollte" Form steuer', da der Browser nicht reagiert.
Will also ohne ein neues Objekt zu erzeugen, einfach das Control steuern.
Hab irgendwie keine Ideen dazu ! X(
Hi, danke werde mir das mal anschauen.
Mit dem Klick-Event der Buttons wird ja nix, da das Keyboard ja nur ein Bitmap ist.
Aber so passt es auch, werde mich nochmal melden.
Hi,
also mir fehlt es gerade an Ideen.
Ich hab ein Touchscreen-Keyboard (also ein Bitmap auf ner modalen Form), bei dem ich herausfinden will, wohin der User geklickt und welche Aktion ich dann durchführen muss.
Ich krieg über die MouseEventArgs ja den Punkt mit x und y, an die geklickt wurde.
Nun hab ich eine Struktur, in der mit 5 Punkten definiert wird, an welcher Stelle welche Taste liegt.
Die Struktur sieht so aus:
private struct Key
{
public Point[] position; // Position des Keys auf dem Keyboard (5 Punkte)
public Keys code; // Funktion des Keys
public string charValue; // char-Wert des Keys
public KeyType type; // Typ des Keys
}
Wie kann ich am besten herausfinden, an welcher Stelle der Punkt aus MouseEventArgs auf meiner Tastatur liegt ?
Wer hat da ne Idee ?
Ich hoffe, man konnte mich verstehen.
Ah verdammt !!
Ja klar, ist doch das Einfachste !
Is heut echt nicht mein Tag.
Ich danke dir vielmals. 👍 👍
Hätte heute bestimmt noch lange gebraucht, um das so zu sehen und so umzusetzen.
So passts aber jetzt.
Wünsch dir noch nen schönen Tag.
Hi,
erstmal danke für die fixe Antwort.
Hast wohl Recht, hab da was falsch gemacht. 😁
Also das Problem liegt eher beim Erzeugen eines Objektes der Form in Zusammenhang mit CreateHandle.
Der ganze Spaß mit Invoke, BeginInvoke passt schon so.
Ich muss irgendwie (!) bei jedem Schleifendurchlauf entweder ein neues Objekt der Form erzeugen oder jedesmal neu CreateHandle aufrufen.
Das aber außerhalb des Threads !
Hab bloß noch kein Plan wie !?
Hi,
also bevor ich jetzt verzweifel'.
Ich hab eine Klasse, in der ein Thread läuft und entsprechende Funktionen ausführt, je nachdem was mir über meinen UDP-Socket geschickt wird.
In dem Thread will ich dann u.a. eine Form anzeigen bzw. auch wieder schließen.
Wie bewerkstellige ich das ??
Was wäre die günstigste Lösung ??
Habe schon die Geschichte abgehandelt mit CreateHandle und dann Invoke oder BeginInvoke, nur zeigt es mir dann meine Form an, aber auch "Keine Rückmeldung" und einen schwarzen Hintergrund der Form.
Vielleicht hat das auch damit zu tun, dass ich auf der Form eine Bitmap anzeige !? (Mehr aber auch nicht)
Hi,
du hast Recht, habe es so gemacht.
Der Socket wird in Dispose geschlossen.
So kann ich mir sicher sein, dass er auch wirklich geschlossen wird.
Danke dir, habe vorher gar nicht in die Richtung gedacht.
Hi,
ich bin mir nicht ganz sicher, ob das so ok ist oder ob es da vielleicht doch Probleme geben kann oder Leaks auftreten oder ...:
Beim Prog.start öffne ich einen UDP-Socket und hole mir aus dem Pool einen Thread, in dem ich mit ReceiveFrom auf Messages warte.
Erst im Destruktor schließe ich den Socket.
Zur Vorstellung der Code.
public ManageData()
{
OpenUDPSocket();
}
~ManageData()
{
running = false; // weiß gar nicht, ob das überhaupt sinnvoll ist...
UDPSock.Close();
}
private void OpenUDPSocket()
{
IPEnd = new IPEndPoint(IPAddress.Parse(GetOwnIP()), Port);
UDPSock = new Socket(AddressFamily.InterNetwork, SocketType.Dgram, ProtocolType.Udp);
UDPSock.Bind(IPEnd);
ThreadPool.QueueUserWorkItem(new WaitCallback(ListenOnPort));
}
private void ListenOnPort(object obj)
{
try
{
string msg = String.Empty;
while (running)
{
byte[] data = new byte[256];
EndPoint remoteEP = (IPEnd);
int bytesreceived = UDPSock.ReceiveFrom(data, ref remoteEP);
msg = Encoding.ASCII.GetString(data, 0, bytesreceived);
MessageBox.Show(msg);
switch (msg)
{
case "check":
...
break;
default:
break;
}
}
}
catch (SocketException)
{ }
catch (Exception)
{ }
}
Ist das so ok oder wie verhält sich das Warten auf "Socket-Messages" in einem Thread aus dem Pool ??
Ich will ja natürlich, dass der Socket bei Prog.ende geschlossen wird und eben auch der Thread ordnungsgemäß beendet wird.
Ahja ok.
Wusste das noch gar nicht.
Gut, dann werde ich per foreach (GetFiles und GetDirectories) da drüber iterieren.
Muss dann eben noch sehen, wie ich Files übergehen kann, die da zurzeit geöffnet sind.
Ok, melde mich wieder !
Erstmal vielen Dank dafür.
Hi,
also ich will den Cache des IE löschen.
Per Google finden sich einige Snippets, aber irgendwie funktioniert es bei mir nicht.
Wenn ich bei mir durchdebugge, dann sehe ich, dass files nur aus einer Dimension besteht (also nur ein File, desktop.ini), obwohl genug Files in dem Ordner liegen.
Eine von den vielen Varianten:
DirectoryInfo folder = new DirectoryInfo(Environment.GetFolderPath(Environment.SpecialFolder.InternetCache));
FileInfo[] files = folder.GetFiles();
for (int i = 0; i < folder.GetFiles().Length; i++)
File.Delete(files[i].FullName);
Eine Exception kriege ich keine geworfen.
Davon abgesehen kann ich keine desktop.ini in dem Ordner erkennen.
Und es werden mir auch keine Files auf dem Ordner gelöscht.
Der Pfad (C:\Users_name_\AppData\Local\Microsoft\Windows\Temporary Internet Files) passt ja auch.
Was übersehe ich hier ??
Also, falls es jemanden interessiert:
Wenn ich in meinem Navigating-Event die URL (bzw. ja den String) prüfe, ob er mit "mailto" beginnt oder das enthält, dann wird mir trotzdem der Mail-Client gestartet, selbst wenn ich Cancel des Events auf true setze.
Wenn ich aber das Scheme der URL auf "mailto" prüfe, dann funktioniert es, es wird bei Setzen von Cancel das Event abgebrochen und kein Mail-Client geöffnet:
private void Browser_Navigating(object sender, WebBrowserNavigatingEventArgs e)
{
if (e.Url.Scheme == "mailto") // oder per Contains oder StartsWith oder ...
e.Cancel = true;
}
Wieso auch immer ! ?(
Ich seh da keinen Unterschied...
Fakt ist: Es funktioniert ! 👍
Hat da niemand einen Plan ??
Komme da einfach nicht weter...
Hi,
ist es irgendwie möglich, in dem Webbrowser-Control "mailto" zu verbieten ?
Mich nervt es, wenn beim Klick auf eine Mail-Adresse der Email-Client geöffnet wird.
Oder ist es eine Sache von Windows ?
Hab auch schon eine Prüfung per Regex in Navigating (also bevor zu einer URL navigiert wird) eingebaut auf "mailto", aber trotzdem wird der Mail-Client gestartet, selbst bei setzen von Cancel = true:
private void Browser_Navigating(object sender, WebBrowserNavigatingEventArgs e)
{
if (Regex.IsMatch(e.Url.AbsoluteUri, "mailto:"))
{
e.Cancel = true;
StartPopup("Unerlaubter Funktionsaufruf", "Aufruf einer nicht erlaubten URL !");
}
...
}
Welche Möglichkeiten gibt es noch ?
Gibt es überhaupt welche ?
Nunja ich hab ja nur eine Form.
Auf der spiele ich mein Video ab mit DirectX.AudioVideoPlayback und gebe meinem "Video-Objekt" als Owner meine Form an, es soll also auf der Form abgespielt werden.
...
using Microsoft.DirectX.AudioVideoPlayback;
namespace Prog
{
/// <summary>
/// Form, die den Screensaver darstellt.
/// </summary>
public partial class frm_Screensaver : Form
{
private Video video;
public frm_Screensaver()
{
InitializeComponent();
video = new Video("D:\\Screensaver.wmv");
video.Owner = this;
video.Ending += new EventHandler(video_Ending);
}
~frm_Screensaver()
{
if (video != null)
video.Dispose();
}
void video_Ending(object sender, EventArgs e)
{
video.SeekCurrentPosition(0.5, SeekPositionFlags.AbsolutePositioning);
video.Play();
}
private void frm_Screensaver_Load(object sender, EventArgs e)
{
this.BringToFront();
video.Play();
}
private void frm_Screensaver_MouseUp(object sender, MouseEventArgs e)
{
video.Stop();
Frm_Main.IsSaverRunning = false;
this.Close();
}
}
Und logischerweise war das Event das der Form.
Ich versteh das nicht... ?(
Hi,
ja stimmt, hatte es gerade mitgekriegt.
Auf MouseClick springt er nicht an, aber auf z.B. MouseUp.
Ich reagiere jetzt halt auf MouseUp.
So passt es auch, nur frage ich mich, wieso ich das MouseClick aber nicht erhalten habe.
Hat das vielleicht damit zu tun, dass ich das Video abspiele und dass irgendwie darüber liegt oder so ?
Hi,
also ich hab eine Form, auf der ich per AudioVideoPlayback ein Video abspiele.
Owner ist auch auf this (Form) gesetzt.
Wie kann ich jetzt auf Maus-Events reagieren ?
Ich kriege diese Events nicht ausgelöst !
KeyPress usw. aber schon.
Ich will das Video beenden, wenn mit der Maus geklickt wurde.
Bitte helft mir !
Schonmal Thx 👍