Laden...

Forenbeiträge von R3dNeXX Ingesamt 44 Beiträge

01.04.2010 - 11:19 Uhr

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 ??

01.04.2010 - 09:28 Uhr

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"... 😉

01.04.2010 - 08:41 Uhr

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...

22.09.2009 - 17:06 Uhr

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.

22.09.2009 - 16:55 Uhr

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.

18.09.2009 - 13:52 Uhr

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.

18.09.2009 - 09:40 Uhr

Guten Morgen,

wie kann man denn den Filedownload im Webbrowser-Control verbieten ?
Geht das überhaupt ?

Hab echt keine Ahnung, wie ich da vorgehen kann !

18.09.2009 - 09:27 Uhr

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.

17.09.2009 - 14:31 Uhr

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 !! 👍

17.09.2009 - 12:08 Uhr

Ä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.

17.09.2009 - 11:39 Uhr

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:

  • setzen des Fullscreen-Modus (per IVideoWindow FullScreenMode auf -1) und das an verschiedenen Stellen (also vor dem Setzen des Owner, nach Run...)
  • setzen des WindowStates auf maximiert

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 ??

07.09.2009 - 16:53 Uhr

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 !! 👍

04.09.2009 - 13:26 Uhr

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 ! 👍

04.09.2009 - 13:12 Uhr

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.

04.09.2009 - 11:52 Uhr

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 !!??

02.09.2009 - 14:20 Uhr

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 !! 👍

02.09.2009 - 11:53 Uhr

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 ?

01.09.2009 - 17:00 Uhr

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 ?

01.09.2009 - 12:31 Uhr

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.

31.08.2009 - 15:53 Uhr

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. 👍

31.08.2009 - 11:30 Uhr

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 !)

30.08.2009 - 16:12 Uhr

Hat keiner ne Idee an was es liegt ?

Ich muss doch irgendwie meinem Browser-Control aus meiner 2. Form Tastatureingaben schicken können !

28.08.2009 - 18:04 Uhr

Hm ich meinte auch eher topmost, das modal war Quatsch.

Und dadurch kommt doch die Message in der Queue meiner Mainform an !

28.08.2009 - 15:20 Uhr

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(

28.08.2009 - 14:59 Uhr

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. 😁

28.08.2009 - 14:32 Uhr

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.

28.08.2009 - 14:22 Uhr

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:

  • SendKeys, da wird aber nix gesendet, auch mit Activate() der Mainform
  • Send- bzw. Postmessage mit WM_KEYDOWN, geht aber auch nicht, es kommt auch nix an

Ne Möglichkeit wäre noch Sendinput bzw. keyb_event.
Würde aber erstmal wissen, wieso das nicht mit SendKeys geht !!??

28.08.2009 - 10:21 Uhr

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.

28.08.2009 - 09:45 Uhr

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(

26.08.2009 - 12:04 Uhr

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.

26.08.2009 - 11:21 Uhr

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.

17.08.2009 - 11:30 Uhr

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.

17.08.2009 - 11:18 Uhr

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 !?

17.08.2009 - 10:04 Uhr

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)

11.08.2009 - 16:57 Uhr

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.

10.08.2009 - 10:22 Uhr

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.

03.08.2009 - 19:30 Uhr

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.

03.08.2009 - 16:10 Uhr

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 ??

03.08.2009 - 10:49 Uhr

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 ! 👍

02.08.2009 - 13:37 Uhr

Hat da niemand einen Plan ??

Komme da einfach nicht weter...

31.07.2009 - 14:15 Uhr

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 ?

30.07.2009 - 14:33 Uhr

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... ?(

30.07.2009 - 12:08 Uhr

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 ?

30.07.2009 - 11:24 Uhr

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 👍