Laden...

Forenbeiträge von garv3 Ingesamt 70 Beiträge

06.10.2016 - 13:23 Uhr

Hallo zusammen!

Ich muss eine Anwendung entwickeln, die auf allen im Titel angegebenen Systemen laufen soll.

Für Windows 10 und mobile könnte man eine UWP nehmen und diese dann mit Xamarin auf Android und iOS portieren. Aber wie bekomme ich es hin, dass die Anwendung auch auf Windows 7 läuft?
Hat da jemand einen eleganten Ansatz - ohne dass die Anwendung mehrfach entwickelt werden muss?

Vielen Dank im Voraus!

garv3

27.08.2014 - 09:03 Uhr

Hallo MartinH,

danke für die Antwort!
Mir ist schon klar, dass es sich um eine NullReferenceException handelt. Die Frage, die sich mir stellt ist lediglich, ob dies ein Bug in der YouTube API ist, oder vielleicht irgendetwas mit der Einbindung zu tun hat.
So wie ich die Ausgabe verstehe, scheint der Fehler tatsächlich in der API aufzutreten. Ich habe diese per NuGet eingebunden und soweit ich weiß, ist die Quelle nicht öffentlich. Kann ich irgendwas tun?

Gruß
garv3

27.08.2014 - 08:47 Uhr

Hallo zusammen,

ich versuche derzeit, das Vorschaubild eines Videos mit Hilfe der YouTube Data Api v3 zu setzen.
Hier der den Fehler betreffende Code:


        Stream thumbnailStream;
        private void setzeThumbnail()
        {
            Debug.Write("Versuche Thumbnail zu setzen...");
            thumbnailStream = new MemoryStream();
            uploadList[aktuelleUploadPosition].Vorschaubild.Save(thumbnailStream, ImageFormat.Png);
            thumbnailStream.Position = 0;
            YouTubeService service = GetYouTubeService();
            ThumbnailsResource tr = new ThumbnailsResource(service);
            ThumbnailsResource.SetMediaUpload mediaUploadThumbnail = tr.Set(uploadList[aktuelleUploadPosition].VideoId, thumbnailStream, "image/png");

            mediaUploadThumbnail.ChunkSize = 256 * 1024;
            mediaUploadThumbnail.ProgressChanged += mediaUploadThumbnail_ProgressChanged;
            mediaUploadThumbnail.ResponseReceived += mediaUploadThumbnail_ResponseReceived;
            Debug.Write("... Starte asynchronen Upload.");
            mediaUploadThumbnail.UploadAsync();
        }

        void mediaUploadThumbnail_ProgressChanged(IUploadProgress obj)
        {
            Debug.Write("... Progress changed");
            if (obj == null)
                Debug.Write("... Objekt verloren");
            Debug.Print("... " + obj.Status.ToString() + ": " + obj.BytesSent + " bytes übtertragen");
            if (obj.Exception != null)
            {
                Debug.Write("... Exception:" + obj.Exception.ToString());
                thumbnailStream.Close();
                uploadList[aktuelleUploadPosition].Status = UploadVideoStatus.ThumbnailFehler;
                objectListViewUploads.RefreshObjects(uploadList);
                Starte_Uploads();
            }
        }

        void mediaUploadThumbnail_ResponseReceived(ThumbnailSetResponse obj)
        {
            Debug.Write("... Fertig:" + obj.Items[0].Standard.Url);
            thumbnailStream.Close();
            uploadList[aktuelleUploadPosition].Status = UploadVideoStatus.Fertig;
            objectListViewUploads.RefreshObjects(uploadList);
            Starte_Uploads();
        }

Ich bekomme folgenden Output im Debig Log:> Fehlermeldung:

Versuche Thumbnail zu setzen...... Starte asynchronen Upload.... Progress changed... Starting: 0 bytes übtertragen
... Progress changed... Uploading: 262144 bytes übtertragen
... Progress changed... Uploading: 524288 bytes übtertragen
Eine Ausnahme (erste Chance) des Typs "System.NullReferenceException" ist in YouTube Premium Uploader Advanced.exe aufgetreten.
Eine Ausnahme (erste Chance) des Typs "System.NullReferenceException" ist in Microsoft.Threading.Tasks.dll aufgetreten.
Eine Ausnahme (erste Chance) des Typs "System.NullReferenceException" ist in Microsoft.Threading.Tasks.dll aufgetreten.
... Progress changed... Failed: 524288 bytes übtertragen
... Exception:System.NullReferenceException: Der Objektverweis wurde nicht auf eine Objektinstanz festgelegt.
bei Microsoft.Runtime.CompilerServices.TaskAwaiter.ThrowForNonSuccess(Task task)
bei Microsoft.Runtime.CompilerServices.TaskAwaiter.HandleNonSuccess(Task task)
bei Microsoft.Runtime.CompilerServices.TaskAwaiter.ValidateEnd(Task task)
bei Microsoft.Runtime.CompilerServices.ConfiguredTaskAwaitable1.ConfiguredTaskAwaiter.GetResult() bei Google.Apis.Upload.ResumableUpload1.<UploadCoreAsync>d__e.MoveNext() in c:\code\google.com\google-api-dotnet-client\default\Tools\Google.Apis.Release\bin\Debug\output\default\Src\GoogleApis\Apis[Media]\Upload\ResumableUpload.cs:Zeile 459.Eine Ausnahme (erste Chance) des Typs "System.Threading.ThreadStateException" ist in System.Windows.Forms.dll aufgetreten.
Eine Ausnahme (erste Chance) des Typs "System.Threading.ThreadStateException" ist in Microsoft.Threading.Tasks.dll aufgetreten.
Der Thread 0x129c hat mit Code 259 (0x103) geendet.
Der Thread 0x1d7c hat mit Code 259 (0x103) geendet.

Kann mir jemand sagen, was diesen Fehler verursacht bzw. wie ich ihn beheben kann?

Dank und Gruß
garv3

13.07.2014 - 16:11 Uhr

Danke für die Antwort!

Wollte bei mir aber leider irgendwie nicht so richtig. Habe es nun vorläufig mit einem Button gelöst.

11.07.2014 - 18:11 Uhr

Hallo zusammen,

ich schreibe gerade eine App für Windows Phone 8 bzw. 8.1
In dieser App habe ich eine Listbox, in welche dynamisch Daten geladen werden. Es sollen aber nicht unnötig viele Daten geladen werden. Deshalb möchte ich, dass dynamisch Daten nachgeladen werden, wenn der Benutzer an das untere Ende der ListBox scrollt.
Leider kann ich keinen entsprechenden Eventhandler finden. Hat jemand eine Idee?

Dank und Gruß
derGarv

09.02.2014 - 12:36 Uhr

Vielen Dank für die Antwort!
Ich hab das Problem aber inzwischen selbst gelöst. Unglaublich aber wahr, es war die einfachste vorstellbare Lösung: Systemsteuerung -> Programme und Features -> Microsoft Visual Studio Express 13 -> Ändern -> Reparieren -> Datenquellen Downloaden -> System Neustarten
Jetzt werden die Frameworks wieder in den Programmen angezeigt und auch Visual Studio meldet kein Problem mehr. Wahnsinn!

09.02.2014 - 12:19 Uhr

Hallo zusammen,

ich hab gerade ein schwerwiegendes Problem mit meiner Installation.

Was ist der Fehler?

  1. Projektmappen können nicht geöffnet werden
    Wenn ich eine vorhanden Projektmappe öffne, erscheint eine Fehlermeldung angezeigt (siehe Anhang "Meldung 1").
  2. .Net Framework wird in Assemblys nicht gefunden
    Wenn ich einen neuen Verweis zum Framework erstellen will, bekomme ich kein Framework angezeigt (siehe Anhang "Meldung 2").

Informationen zum System
OS: Windows 8.1 Pro
VS-Version: Visual Stduio Express 2013

Vorgeschichte und aktueller Stand der Fehlerbehebung
Ich hatte gestern plötzlich nach einem Absturz des Grafiktreibers extreme Probleme mit meinem System. Visual Studio und viele andere Programme starteten nicht mehr. Es wurden häufig Fehlermeldungen zu vielen nicht registrierten Klassen u.ä. angezeigt.
Ich habe dann lange nach einer Lösung gesucht und bin zu dem Schluss gekommen, dass anscheinend meine Registry zerschossen wurde. Also habe ich Windows 8.1 neu über die aktuelle Installation aufgespielt. Hat auch soweit geholfen, nur Visual Studio meckert plötzlich rum.
Ich habe mich dann dazu entschlossen, die vorhandenen .Net Frameworks (4.5 und 4.5.1) zu deinstallieren. Danach habe ich noch einen .Net-Cleaner drüberlaufen lassen. Das Problem ist nun, dass ich die Frameworks nicht erneut installieren kann. Ich erhalte beim Installationsversuch von .Net 4.5.1 die Meldung ".NET Framework 4.5 und dieses Update sind bereits auf dem Computer installiert." In den Windows Features hab ich das .Net-Framework auch deaktiviert, um dem Installer zu zeigen, dass es nicht da ist. Hat 'natürlich' auch nichts gebracht.

So, jetzt stellt sich mir die Frage, was ich tun soll.
Bekomme ich .Net irgendwie komplett vom System, um es neu installieren zu können?
Wer hat eine Idee?

Dank und Gruß
garv3

13.08.2013 - 17:42 Uhr

Fehlermeldung bei klick auf "Drucker hinzufügen"

13.08.2013 - 17:41 Uhr

Hallo zusammen,

ich habe derzeit ein Problem mit meiner Windows Forms Anwendung.
Ich habe an einer Stelle einen printDialog eingebunden. Wenn ich diesen aufrufe, so zeigt er mir im Debug-Run oder auch im Release-Run aus dem Visual Studio heraus alle Drucker inkl. "Print to File" Druckern und Netzwerkdruckern an. Der Druck funktioniert auch problemlos. Wenn ich das Projekt aber nun erstelle und die .exe im "Release" Verzeichnis direkt starte, so zeigt er mir keine Drucker mehr an. Stattdessen sehe ich einen Fehlerdialog (siehe Anhang).
Im PrintDialog selbst wird mir nur "Drucker hinzufügen" angeboten, welches zu der Fehlermeldung im Antwortpost führt.
Über den "Starten" Button aus dem Visual Studio funktioniert es aber wie gesagt immer. Egal ob Debug oder Release. Ich vermute, dass es irgendwas mit Rechten zu tun hat, hab aber leider keine Ahnung, was ich tun soll.
System ist übrigens: Windows 8 Pro x64

Ich bin für jede Hilfe sehr Dankbar!
MfG
derGarv

12.03.2013 - 13:27 Uhr

Wieso öffnet der WebBrowser denn überhaupt einen Download-Dialog?

Edit:
Hier mal die Header-Informationen der Antwort des Servers:

Cache-Control	no-cache
Content-Disposition	attachment
Content-Length	34
Content-Type	application/json; charset=UTF-8
Date	Tue, 12 Mar 2013 12:28:14 GMT
Expires	Tue, 27 Apr 1971 19:44:06 EST
Server	Apache
X-Content-Type-Options	nosniff
X-Firefox-Spdy	3
x-frame-options	SAMEORIGIN

Dabei öffnet der WebBrowser automatisch den Download-Dialog!

12.03.2013 - 12:48 Uhr

Erstmal danke für die Antwort!
Leider ist es so zwar wohl möglich, den Dateidownload zu verhindern, sodass der Downloaddialog nicht angezeigt wird aber ich möchte die Datei ja im Hintergrund öffnen und den inhalt auswerten können...
Dazu noch ne Idee?

P.S. Leider funktioniert es über die URL auch nicht, da der Dateiname nicht in der URL auftaucht. Die Json-Infos werden per ajax als attachment übergeben...

12.03.2013 - 08:52 Uhr

Hallo zusammen,

ich habe ein Problem mit einem WebBrowser. Auf einer bestimmten Seite wird ein Json-Objekt (eine .json Datei) zurückgegeben. Das WebBrowser Control zeigt mir dann immer einen Downloaddialog an. Ich soll also wählen, ob ich die Datei in irgendeiner Anwendung öffnen oder speichern will.
Ich möchte allerdings, dass dieser Dialog nicht angezeigt wird und die Datei stattdessen direkt in meiner Anwendung öffnen und analysieren.

Hat jemand eine Idee, wie ich das realisieren kann?

Dank und Gruß
garv3

21.01.2013 - 02:51 Uhr

Hallo zusammen,

ich starte aus meiner Form heraus einen Prozess:

Process process = new Process();
process.StartInfo.FileName = @".\\Resources\\anwendung.exe";
process.StartInfo.Arguments = "parameter";
process.StartInfo.RedirectStandardOutput = true;
process.StartInfo.RedirectStandardError = true;
process.StartInfo.RedirectStandardInput = true;
process.ErrorDataReceived += new DataReceivedEventHandler(cmd_Error);
process.OutputDataReceived += new DataReceivedEventHandler(cmd_DataReceived);
process.StartInfo.UseShellExecute = false;
process.StartInfo.CreateNoWindow = true;
process.Start();
process.BeginOutputReadLine();
process.BeginErrorReadLine();

Mein Problem nun:
Die Anwendung gibt Statusmeldungen aus, während sie läuft. Diese möchte ich nun abfangen und in der Form anzeigen. Das Problem ist, dass ich aus "cmd_DataReceived" heraus nicht auf meine Form zugreifen kann... Ich möchte die Ausgabe aber immer wieder aktualisieren, während der Prozess läuft und nicht am Ende ausgeben.
Kann mir jemand nen Tipp geben, wie ich das realisieren kann?

Dank und Gruß
Garv

21.01.2013 - 02:47 Uhr

Für alle, die es interessiert: MP4Box ist dafür ideal!

20.01.2013 - 22:26 Uhr

Hallo,

ich suche gerade nach einer Möglichkeit, mehrere mp4-Dateien (H264) zusammenzuführen ohne sie neu zu codieren.
Dafür möchte ich mir ein Tool schreiben, da ich viele Dateien in einem Rutsch abarbeiten möchte. Dabei werden immer drei Dateien zusammengeführt: Intro - Video - Outro. Intro und Outro sind immer gleich. Es wär also praktisch, wenn ich etliche Videos auswählen und dann automatisch nach und nach das Intro und Outro zu diesen hinzufügen könnte.
Hat da jemand ne Idee?

Dank und Gruß
Garv

19.01.2013 - 20:17 Uhr

Der Source Code von Paint.Net ist nicht öffentlich
Hmm... Außerdem würd ich das eh nicht blicken 😄

19.01.2013 - 18:54 Uhr

Hallo zusammen,

ich versuche grad, einen Upload per WebRequest zu realisieren. Dabei muss ich u.a. ein JPEG Bild hochladen. Wenn ich es einfach per File.ReadAllBytes auslese und in den stream einbaue (Content-Type: image/jpeg), dann wird es als "Media Type" gesendet. Der Server verlangt die Daten aber im JFIF (JPEG File Interchange Format). Jemand eine Ahnung, wie ich das JPEG in JFIF umwandeln und entsprechend per Webrequest (POST, multipart/form-data) übertragen kann?

Dank und Gruß
garv3

08.01.2013 - 08:31 Uhr

Danke für die Anregungen. Die Variante mit der TextBox gefällt mir ziemlich gut. Leider gibt es da natürlich keine AutoEllipsis. Daher wird der Text links ziemlich abrupt abgeschnitten, wenn man den Rahmen der TextBox entfernt. Sieht gewöhnungsbedürftig aus, scheint aber wohl die beste Lösung zu sein.
Danke!

07.01.2013 - 17:31 Uhr

Komplizierter Titel, einfacher Sachverhalt:

Ich Suche nach einer Möglichkeit, einen Text in einem Label, das eine feste Breite hat, so darzustellen, dass er immer rechtsbündig dargestellt wird. Auch dann, wenn er über das Label hinausragt. Der Text ist ein Dateipfad und ich möchte, dass man immer den Dateinamen sieht.

Beispiel:
Text: "c:\mein Ordner\mein Unterordner\meine Datei.txt"
aktuelle Ausgabe [c:\mein Ordner\mein Unterordn...]
gewünschte Ausgabe [...ein Unterordner\meine Datei.txt]

Bereits probiert habe ich:
TextAlign -> TopRight
AutoEllipsis -> true
LeftToRight -> true.
Funktioniert leider trotzdem nicht.

Hat jemand eine Idee?

Dank und Gruß
garv3

25.09.2012 - 22:12 Uhr

Ich habe es nun per Javascript mit XMLHttpRequest / ActiveXObject("Microsoft.XMLHTTP") probiert.
Dabei tritt allerdings ein Problem auf: Dieses Request funktioniert nicht für Cross-Domain-Anfragen. Ich kann damit also kein Request an eine andere Domain schicken. Das ist in diesem Fall jedoch nötig.

XDomainRequest() unstertützt Cross-Domain. Allerdings gibt es einem nicht die Möglichkeit, die Cookies des Browsers oder Credentials in irgend einer Form zu senden. Daher schlägt die Authentifizierung fehl.

Was nun?

25.09.2012 - 14:31 Uhr

Das Script ist zu finden auf:
http://tgn.tv/handbooks/#youtube-annotations

Es geht spziell um folgende Funktionen:
open_annotations()
update_annotations()
Wobei open_annotations kein Problem ist. Die kann ich einfach per httpwebrequest lösen. update_annotations() hingegen kann ich ja leider nicht abbilden. Hier wird der xml-request abgesetzt...

25.09.2012 - 09:59 Uhr

Ich habe gerade mal die Daten per Wireshark ausgelesen und verglichen. Habe nun alles so angepasst, dass zumindest alles im Block "Hypertext Transfer Protocol" und "Line-based text data: text/plain" übereinstimmt. Jetzt bekomme ich den "403: Unzulässig" wieder.
Einziger Unterschied in Wireshark ist, dass im Original "2 Reassembled TCP Segments (3308 bytes): #2091(2860), #2093(448)" mit übergeben werden, welche in meinem Request nicht enthalten sind. Kann der 403 daran liegen?

25.09.2012 - 07:58 Uhr

Unterstützt der HttpWebRequest überhaupt JavaScript? Ich glaube es nämlich nicht. Nein, eben nicht. Deshalb wollte ich die Funktionen des JS auch anders abbilden.

guck doch mal mit Wireshark Werd ich nachher auf jeden Fall mal tun!

Versuch doch das Script so zu schreiben, dass es im IE funktioniert. So kompliziert wird das wahrscheinlich nicht sein. Leider doch! Hab diese Lösung natürlich als erste probiert. Leider ohne Erfolg. Falls jemand Lust hat, sich damit mal zu beschäftigen, kann ich gern mal nen Link zu der Seite schicken, auf der es eingesetzt wird.

24.09.2012 - 13:47 Uhr

Hallo zusammen,

ich hab hier ein Javascript, das im Firefox super funktioniert. Ich habe nun versucht, dies per C# nachzuahmen. Im grunde macht das Script nichts weiter, als ein zuvor per Browser ausgelesenes Authentifizierungs-Token in ein XML-Dokument einzubauen und dieses dann per POST an eine URL zu senden. Hier mal der wichtigste Teil des JS:

        var xml = new XML(data);
        [...]
        xml.authenticationHeader.@auth_token = auth_token;

        var xhr = new XMLHttpRequest();
        xhr.withCredentials = true;
        xhr.open("POST", "http://www.xxx.com/yyy", true);

        xhr.send(xml.toXMLString().replace(re, video_id)); // fix Skip Annotations to link to new video_id

auth_token wurde wie gesagt zuvor in der selben Browsersession, in der auch das Script ausgeführt wird, ausgelesen. Das funktioniert alles wunderbar.

Doch nun zum Problem.
Ich habe nun das Problem, dass das JS im Internetexplorer einfach nicht läuft. Abdernfalls hätte ich mir mit dem WebBrowser ja etwas zurechtbasteln können. Doch ich muss es nun anscheinend komplett nachahmen. Aber es scheint so, als würde das auth_token nur für eine ganz bestimmte Browsersession bereitgestellt. Bisher habe ich es nämlich so probiert:
Mit dem WebBrowser-Control hab ich mir sowohl XML als auch das Authentifizierungtoken geholt. Das funktioniert auch einwandfrei. Nun füge ich das auth_token entsprechend in den authenticationheader des XML-Dokuments ein und muss es also nur noch zum Server schicken. Das versuche ich natürlich per HttpWebRequest bzw. WebRequest. Hier mal ein ausführlich kommentierter Auszug:

                
                // Request erstellen und URL setzen
                HttpWebRequest request = (HttpWebRequest)WebRequest.Create("http://www.xxx.com/yyy");
                // Cookies des WebBrowsers laden
                request.CookieContainer = GetCookieContainer();
                request.Method = WebRequestMethods.Http.Post;
                // Credentials übergeben - Macht das überhaupt Sinn?
                request.UseDefaultCredentials = true;
                // Accept == Accept-Charset?
                request.Accept = "application/xml";
                request.ContentType = "application/xml";
                // User-Agent des WebBrowsers nachahmen
                request.UserAgent = "Mozilla/4.0 (compatible; MSIE 7.0; Windows NT 6.1; WOW64; Trident/5.0; SLCC2; .NET CLR 2.0.50727; .NET CLR 3.5.30729; .NET CLR 3.0.30729; Media Center PC 6.0; .NET4.0C; .NET4.0E; Zune 4.7)";
                request.AllowAutoRedirect = true;
                request.KeepAlive = true;
                // XML einlesen
                byte[] bytes = System.Text.Encoding.ASCII.GetBytes(xdoc.InnerXml);
                request.ContentLength = bytes.Length;
                Stream stream = request.GetRequestStream();
                stream.Write(bytes, 0, bytes.Length);
                stream.Flush();
                stream.Close();
                // XML zur Kontrolle ausgeben
                textBox2.Text = System.Text.Encoding.ASCII.GetString(bytes.ToArray());
                try
                {
                    // Request absetzen - Hier wird der 403 "Forbidden" geschmissen
                    HttpWebResponse response = (HttpWebResponse)request.GetResponse();
                    Stream responseStream = response.GetResponseStream();
                    StreamReader reader = new StreamReader(responseStream);
                    string responseString = reader.ReadToEnd();
                    reader.Close();
                    // Hier wird der 500 "Unknown Error" geschmissen
                    MessageBox.Show(responseString);
                    response.Close();
                }
                catch (HttpException ex)
                {
                    MessageBox.Show(ex.ToString());
                }

Hierbei gibt es folgende mögliche Resultate:

  1. So wie jetzt hier konfiguriert, springt der Code in den catch-Block und gibt mir nen 500er Fehler "Unknown Error" -> Die unnützeste Fehlermeldung überhaupt 😉
  2. Wenn ich am HttpWebRequest testweise ein paar Konfigurationen verändere, bekomme ich ab und an auch einen 403 "Forbidden".

Ich vermute, dass der Server irgendwie erkennt, dass das HttpWebRequest nicht der WebBrowser ist und dass daher das Authentifizierungtoken nicht passt. Das ist aber auch nur eine Vermutung!

Hat sonst vielleicht jemand eine Ahnung?
Ich steh total auf dem Schlauch! Vielleicht mach ich auch nur irgendwas falsch!?

Tausend Dank schonmal im Voraus!

Grüße aus Kölle
derGarv

Edith sagt: Der 500er Fehler wird doch nicht im Catch geschmissen, sondern bereits im try-Block in der MessageBox ausgegeben. Hab die Stelle im Code entsprechend markiert!

06.07.2012 - 00:47 Uhr

Wunderbar! Du hast Recht!

Vielen Dank!

Gruß
garv3

05.07.2012 - 22:39 Uhr

Hallo zusammen,

ich habe eine Klasse:

 class Projekt
{
        public int Id;
        public string Name;
        public string Kategorie;
[...]

Von diesen Objekten habe ich nun einige in einer Liste:

List<Projekt> projektListe;

Nun hänge ich diese an eine Listbox an und versuche, ValueMember und DisplayMember zu setzen:

bindingSource = new BindingSource();
bindingSource.DataSource = projektListe;
listBoxProjekte.DataSource = bindingSource;
listBoxProjekte.DisplayMember = "Name";
listBoxProjekte.ValueMember = "Id";

Leider wird nun aber in jeder Zeile der Listbox nur der Klassenname angezeigt und die Values scheinen auch nicht zu stimmen.

Jemand eine Idee, wie ich das lösen kann?

Dank und Gruß
garv3

07.05.2012 - 22:22 Uhr

Die InstallUtil.exe will mir da irgendwie nicht helfen. Es öffnet sich zwar kurz eine Eingabeaufforderung, schließt sich aber blitzschnell wieder, so dass ich nicht sehen kann, ob ein Fehler ausgegeben wird. Die anderen Beiträge zur Installation eines Services hinter deinem Link helfen auch nicht wirklich. Jedenfalls startet der Dienst nicht.
Außerdem möchte ich den Dienst im Hintergrund installieren. Eine aufpoppende Eingabeaufforderung kann ja nicht das Wahre sein...

07.05.2012 - 16:38 Uhr

Nein, es wird im Hauptform erzeugt. Der ReadyState bleibt halt auf 'Interactive'. Somit konnte ich jetzt einfach die Abfrage des ReadyStates erweitern und es funktioniert.

07.05.2012 - 16:36 Uhr

Hallo zusammen,

ich möchte folgendes realisieren:
Wenn meine Windows Forms Anwendung gestartet wird, soll überprüft werden, ob ein bestimmter Dienst läuft. Ist dies nicht der Fall, soll er ggf. registriert, auf Autostart gesetzt und gestartet werden.
Doch wie mache ich das. Die .exe, welche den Dienst darstellt, ist im Projekt eingebunden. Aber wie gleife ich nun auf die Dienste des Systems zu?
Vermutlich benötige ich ja sogar Admin-Rechte!? Falls ja: Gibt es eine möglichkeit, die Abfrage der Berechtigung beim Start der Anwendung automatisch auszuführen, so dass dies nicht vom Benutzer manuell (per rechte Maustaste o.ä.) getan werden muss?

Wäre wirklich super, wenn mir jemand bezüglich der Dienste auf die Sprünge helfen kann.

Gruß
garv3

06.05.2012 - 01:19 Uhr

Der ReadyState wechselte immer erst bei einer Mausbewegung über dem Control auf Complete. Vorher stand er auf Iteractive!

05.05.2012 - 23:24 Uhr

Hmm, der Code ist ziemlich komplex. Ihn hier zu posten ist wohl nicht möglich.
Ich hab leider keine Ahnung, woher der Fehler kommen soll...

Ich nutze den Webbrowser, da ich u.a. auch Formulare ausfüllen, Invokes nutzen und Javascript-Events auslösen können muss. Das ganze ist nicht ganz trivial. Leider verstehe ich einfach nicht, wieso der WebBrowser plötzlich nur noch reagiert, wenn sich die Maus darüber befindet...

EDIT: Ich hab grad mal etwas rumprobiert und festgestellt, dass die Events auch nicht ausgelöst werden, wenn sich der Mauszeiger über dem Webbrowser befindet, sich aber nicht bewegt. Das heißt: Ich muss die Maus über dem Control bewegen, damit die Seite komplett geladen wird...

05.05.2012 - 20:17 Uhr

Hallo zusammen,

ich habe ein Problem mit einem Webbrowser Control.
Ich möchte den Webbrowser unsichtbar in ein Form einfügen und dann, je nach Aktion im Programm, in diesem versteckten Webbrowser bestimmte Seiten öffnen und diese dann z.B. nach bestimmten Informationen durchsuchen.
Das funktioniert allerdings nur bedingt. Der Webbrowser öffnet sich und lädt auch die Seite. documentCompleted wird korrekt aufgerufen. Wenn ich nun aber eine andere Seite laden will, so muss dafür die Maus innerhalb des Webbrowser-Bereichs liegen. Das ist bei einem versteckten Webbrowser natürlich nicht möglich. Wenn ich den Webbrowser anzeige und die Maus dann in ein anderes Fesnter bewege oder eine andere Anwendung fokussiere, wird so lange kein navigate() mehr ausgeführt, bis ich den Mauszeiger in den Bereich des Webbrowsers bewege.

Hat jemand eine Ahnung, woran das liegen könnte?

Dank und Gruß
garv3

EDIT: Ich hab es jetzt nochmal nachgeprüft:
documentCompleted wird NICHT aufgerufen, wenn sich der Mauszeiger außerhalb des Webbrowser Controls befindet! Erst, wenn ich den Mauszeiger darüber bewege, wird das Event ausgelöst...

21.03.2012 - 19:43 Uhr

Hallo zusammen,

ich rufe per webbrowser in meiner C# Forms Anwendung eine Seite auf, fülle ein Form aus und möchte es dann abschicken. Dies geschieht per invoke des Click-Events auf dem Submitbutton.
Hier mal der Code des Formulars:

<form class="add-comment-form" method="post" action="/channel_ajax/?action_add_comment=1">
...
<button class="post-comment yt-uix-button yt-uix-button-default" role="button" onclick=";return true;" type="submit">
...
</form>

Irgendwie scheint die Response des ajax nicht vom Browser verarbeitet zu werden und stattdessen erscheint ein Popup und ich werde gefragt, ob ich die Datei speichern will... Kann ich das irgendwie umgehen?

Dank und Gruß
garv3

08.03.2012 - 16:04 Uhr

Also ich hab's nun mal so probiert:

string resumableURL = "http://uploads.gdata.youtube.com/resumable/feeds/api/users/default/uploads";

                HttpWebRequest req = (HttpWebRequest)WebRequest.Create(resumableURL);


                //Set values for the request
                req.Method = "POST";
                req.ContentType = "application/x-www-form-urlencoded";
                req.Host = "uploads.gdata.youtube.com";
                req.Headers.Add("Authorization: ClientLogin token="+authToken);
                req.Headers.Add("GData-Version: 2");
                req.Headers.Add("X-GData-Key: key=meinDeveloperKey");
                req.Headers.Add("Slug: " + filename.Substring(filename.LastIndexOf("\\")+1, filename.Length-(filename.LastIndexOf("\\")+1)));
                byte[] strRequest = System.Text.Encoding.UTF8.GetBytes(
                    "<?xml version=\"1.0\"?>" +
                    "<entry xmlns=\"http://www.w3.org/2005/Atom\" xmlns:media=\"http://search.yahoo.com/mrss/\" xmlns:yt=\"http://gdata.youtube.com/schemas/2007\">" +
                        "<media:group>" +
                            "<media:title type=\"plain\">" + titel + "</media:title>" +
                            "<media:description type=\"plain\">" + description + "</media:description>" +
                            "<media:category scheme=\"http://gdata.youtube.com/schemas/2007/categories.cat\">" + kategorie + "</media:category>" +
                            "<media:keywords>" + keywords + "</media:keywords>" +
                        "</media:group>" +
                    "</entry>"
                );
                //req.ContentLength = strRequest.Length;

                //Send the request to YouTube and get the response 
                StreamWriter streamOut = new StreamWriter(req.GetRequestStream(), System.Text.Encoding.UTF8);
                string strResponse = "leer";
                try
                {
                    streamOut.Write(strRequest);
                    streamOut.Close();
                }
                catch (WebException ex)
                {
                    MessageBox.Show(ex.ToString());
                }
                StreamReader streamIn = new StreamReader(req.GetResponse().GetResponseStream());
                try
                {
                    strResponse = streamIn.ReadToEnd();
                    streamIn.Close();
                }
                catch (WebException ex)
                {
                    MessageBox.Show(ex.ToString());
                }
                MessageBox.Show(strResponse);

Dabei habe ich zwei Probleme:

  1. Wenn ich "req.ContentLength = strRequest.Length;" nicht auskommentiere, bekomme ich immer eine Fehlermeldung, dass der Stream nicht geschlossen werden kann, bevor alle Daten gesendet wurden. Anscheinend gibt strRequest.Length eine falsche Länge zurück. Wieso?
  2. Wenn ich die Zeile auskommentiere (wie oben im Code), wird der Stream zwar komplett gesendet und ich erhalte auch keine Fehlermeldung, strResponse ist aber leer! Anscheinend schein YouTube den Request nicht zu akzeptieren. Vielleicht, weil die Content-Length nicht angegeben wurde? Kann ich mir aber eigentlich nicht denken...

Jemand eine Idee dazu?

Dank und Gruß
garv3

28.02.2012 - 03:12 Uhr

Ok aber wie sende ich denn z.B. einen POST Request mit folgenden Daten an ht****tp://uploads.gdata.youtube.com/resumable/feeds/api/users/default/uploads

POST /resumable/feeds/api/users/default/uploads HTTP/1.1
Host: uploads.gdata.youtube.com
Authorization: AuthSub token="DXAA...sdb8"
GData-Version: 2
X-GData-Key: key=adf15ee97731bca89da876c...a8dc
Content-Length: 1941255
Slug: my_file.mp4
Content-Type: application/atom+xml; charset=UTF-8

<?xml version="1.0"?>
<entry xmlns="http://www.w3.org/2005/Atom"
  xmlns:media="http://search.yahoo.com/mrss/"
  xmlns:yt="http://gdata.youtube.com/schemas/2007">
  <media:group>
    <media:title type="plain">Bad Wedding Toast</media:title>
    <media:description type="plain">
      I gave a bad toast at my friend's wedding.
    </media:description>
    <media:category
      scheme="http://gdata.youtube.com/schemas/2007/categories.cat">People
    </media:category>
    <media:keywords>toast, wedding</media:keywords>
  </media:group>
</entry>

Ich blick irgendwie nicht, wie ich das mit httpWebRequest machen soll...

Danke im Voraus!

Gruß
derGarv

19.01.2012 - 14:41 Uhr

Hallo zusammen,

ich habe ein Tool erstellt, dass einige erweiterte Funktionalitäten für den Upload von Videos auf YouTube bereitstellt.
Derzeit lade ich die Videos mit der InsertAsync-Methode hoch. Ein Nachteil: Wenn der Upload abbricht, muss man ihn komplett neu starten.
Es gibt laut YouTube API wohl auch eine Möglichkeit, weideraufnehmbare Uploads zu realisieren. Doch leider verstehe ich es nicht so ganz. Man braucht dazu wohl eine XML-Datei mit Informationen zu dem Video, falls ich das richtig verstanden habe. Doch wie soll man die erstellen?

Ich wäre super dankbar, wenn sich das mal jemand ansehen und mir ein paar Tipps geben könnte, wie ich das machen kann.

Hier der Link zur YouTube API für resumable Uploads:
Developer's Guide: Data API Protocol

Vielen Dank im Voraus!
garv3

06.01.2012 - 22:08 Uhr

Hallo zusammen,

ich benutze derzeit die Google YouTube API um per C# Win Forms Anwendung Video mit der API-Methode insertAsync hochzuladen.
Dabei erhalte ich ab und an nach einiger Zeit die Meldung (siehe Anhang)
Dies scheint immer dann zu passieren, wenn der Rechner den Monitor ausschaltet um Energie zu sparen.
Ich hab mal in den Energieoptionen nachgesehen und dort wird definitv nur der Monitor ausgeschaltet. Die Drahtlosnetzwerkverbindung steht auf Höchstleistung. Sonst sind keine Energiesparoptionen aktiv. Ich bin mir allerdings auch noch nicht sicher, ob es mit dem Standby des Monitors zu tun hat.

Kennt jemand das Problem?

Dank und Gruß
garv3

23.12.2011 - 17:38 Uhr

Zunächst einmal vielen Dank für die zahlreichen Antworten.

Ich werd mir noch mal Gedanken zu dem Ganzen machen. Inzwischen hab ich auch überlegt, eine kostenpflichtige Premium-Version anzubierten. Dann wird das alles noch wesentlich komplizierter...
Mal sehen, wie ich es realisiere.

Jedenfalls noch mal vielen Dank für die Infos und Anregungen!

Gruß
garv3

22.12.2011 - 19:22 Uhr

Hallo,

ich möchte die Nutzungs-/Weitergaberechte für ein kleines Tool, das ich zur Zeit programmiere sowie den Haftungsausschluss definieren und den Benutzer zustimmen lassen.

Ich möchte das Tool kostenlos anbieten!

Mir schwebt folgendes vor:

Nutzungs-/Weitergaberechte
Der Anwender darf das Programm auf seinem Rechner installieren und nutzen. Es ist ihm jedoch nicht gestattet, es an Dritte weiterzugeben. Es darf nur vom offiziellen Downloadserver heruntergeladen werden.

Haftungsausschluss
Ich denke zwar nicht, dass mein Tool irgendwelche Fehler auf dem System des Anwenders verursachen kann, dennoch möchte ich jede Haftung für entstandene Schäden ausschließen.

Gibt es irgendwo Vorloagen für sowas? Google hat mir nicht helfen können.
Wo soll ich die entsprechenden Infos anzeigen bzw. annehem lassen? Ich denke, die Nutzungs-/Weitergaberechte vor dem Download und den Haftungsausschluss bei der Installation, oder?

Dank und Gruß
garv3

22.12.2011 - 14:00 Uhr

Hallo zusammen,

ich hab hier ein kleines Problem bei einer eigentlich wirklich simplen Sache. Ich möchte die Breite des Forms per Klick auf einen Button verändern. Also quasi ein Expander nach rechts.
Hier mal der Code:

        private void expandButton_Click(object sender, EventArgs e)
        {
            this.Visible = false;
            shrinkButton.Visible = true;
            this.FindForm().Width += 1180;
        }

        private void shrinkButton_Click(object sender, EventArgs e)
        {
            this.Visible = false;
            expandButton.Visible = true;
            this.FindForm().Width -= 1180;
        }

Beim Klick auf den Button schließt sich das Form einfach. Der Debugger gibt nichts zurück...

Jemand ne Idee?

Dank und Gruß
garv3

21.12.2011 - 22:23 Uhr

Hallo zusammen,

ich möchte derzeit eine Website, welche ich in einem webBrowser-Element meiner Forms-Anwendung geöffnet habe, auf einen bestimmten String durchsuchen.

Ich habe folgendes probiert:

foreach (HtmlElement element in webBrowser1.Document.All){
                    if(element.InnerHtml.Contains("test"))
                    {
                        // mach was
                        break;
                    }
                }

Ich bekomme aber eine NullReferenceExeption (Zeile 2) und soll eine Objektinstanz erstellen.
Wo liegt der Fehler?

EDIT: Das Ganze wird natürlich in einem webBrowser1_DocumentCompleted-Event ausgeführt. Die Website ist also geladen!

Dank und Gruß
garv3

18.12.2011 - 05:45 Uhr

Hallo zusammen,

ich versuche momentan, mir einen kleinen, persönlichen Uploader für YouTube-Videos zu erstellen.

Der Sinn ist folgender:
Ich lade regelmäßig Videos zu Youtube hoch, die sich im Bezug auf Beschreibung und Titel aber nur in kleinen Teilen unterscheiden. Daher bietet es sich an, eine Anwendung zu erstellen, die eine Maske bereitstellt, in der eben nur diese Elemente eingetragen werden müssen.
Das funktioniert soweit auch gut. Authentifikation und Upload sind kein Problem. Allerdings würde ich gerne noch ein weteres Feature einfügen:
Meine Videos werden auf YouTube monetarisiert (Stichwort: Monetization). Dazu muss ich dies aber extra einstellen. Nun frage ich mich, ob die Monetarisierungseinstellungen auch über die API zu setzen sind. Ich habe dazu bisher nichts gefunden. Das Tool macht halt nicht viel Sinn, wenn ich nach dem Upload immer noch per Browser auf YouTube gehen und die Monetarisierung einstellen muss 😕
Hat jemand Ahnung davon, ob und wie das geht?

Dank und Gruß
derGarv

15.10.2011 - 15:37 Uhr

Ich halte es auch für möglich, da ja auch die Pegel der einzelnen Anwendungen separat geregelt werden können.

Der Workaround ist leider nicht praktikabel, da ich zum Einen keinen zweiten Rechner in Reichweite habe und es sich zum Anderen um ein regelmäßiges Projekt handelt (mehrmals jede Woche).

Das ist wirklich nervtötend...

14.10.2011 - 13:54 Uhr

Nein. Es geht um eine Aufnahme mit Livekommentaren. Später will ich die einzelnen Audiotracks dann entsprechend des Videomaterials in Lautstärke usw. anpassen. Daher brauche ich jeweils einen eigenen Track. Im Grunde wäre es auch in Ordnung, wenn Mikrofon und Voice-Chat eine Spur wären. Wichtig ist, dass ich für den Sound der Java-Anwendung eine eigene Spur habe...

14.10.2011 - 13:33 Uhr

Hallo zusammen,

ich suche derzeit eine Möglichkeit, mit C# Ton aufzunehmen. Allerdings nicht einfach den Windows Sound oder das Mikrofon, sondern mehrere Sounds. Dies möchte ich hier etwas genauer erklären:

Angenommen, ich habe mehrere aktive Programme, welche Ton ausgeben bzw. aufnehmen:

  1. eine Java-Anwendung
  2. ein Voice-Chat-Tool
  3. das Mikrofon (wird nicht ausgegeben aber soll aufgenommen werden)

Jetzt möchte ich ein kleines Tool schreiben, das mir eine Audio-Datei mit je einer Spur für diese Quellen erstellt (oder auch je eine Audio-Datei). Es geht mir darum, dass ich parallel ein Video der Java-Anwendung mit Fraps drehe, dies aber nur eine Tonspur erzeugen kann. Später möchte ich aber sowohl den Sound der Java-Anwendung, als auch die Kommentare anderer Personen über den Voice-Chat sowie meine Kommentare per Mikrofon separat abmischen können.

Im Grunde brauche ich halt nur ein kleines Tool, das mir je Anwendung (wie im Lautstärkemixer von Windows 7 angezeigt) eine eigene Audiospur oder -datei erstellt.

Hat da jemand eine Idee?

Dank und Gruß
derGarv

01.02.2011 - 02:28 Uhr

Ich habe die Aktionen nun in Backgroundworker ausgelagert. AcceptCancelation ist in diesen aktivert. Allerdings kann ich sie nicht stoppen. Kann man das sofortige Stoppen eine backgroundworkers erzwingen?

Edit:
Hab's jetzt gelöst. Etwas umständlich aber es funktioniert. Hab an jeder Stelle, an der abgebrochen werden kann "if (worker.CancellationPending) { return; }" in die bgw eingebaut...

01.02.2011 - 01:50 Uhr

Hallo zusammen!

Ich habe eine Forms-Anwendung, die unter anderem eine Reihe von Aktionen hintereinander ausführt und zwischendurch immer mal wieder per Sleep wartet, da diese Aktionen nicht unmittelbar hintereinander ausgeführt werden sollen.

Ist es möglich, diese per Tastendruck zu unterbrechen? Ein Restart wäre für mich vollkommen ok! Allerdings wird dieser immer erst nach allen anstehenden Aktionen ausgeführt, also quasi an das Ende der Liste gehängt. Ist es möglich, ein durch ein Event getriggertes Ereignis sofort auszuführen, auch wenn noch andere Aktionen anstehen?

Dank und Gruß
garv3

30.01.2011 - 13:19 Uhr

Hallo zusammen,

ich wüsste gerne, wie ich mein Projekt so abschließe, dass ich am Ende einen Installer erhalte, der prüft, ob alle Abhängigkeiten erfüllt sind (.Net-Framework) und diese andernfalls automatisch herunterlädt und installiert.

Gibt es da evt ein Tutorial?

MfG
garv3

27.01.2011 - 01:08 Uhr

Danke für die Antwort!

Zu deinem HTTPSaver: Sehr schönes Tool!!! Aber leider nützt es mir nichts, da die Kommunikation nicht per Dateien funktioniert. Es werden zwar auch Dateien gesendet, doch die enthalten nicht die Informationen, die ich benötige. Ich muss wohl irgendwie den Stream abfangen, der zum Plugin-Container geht...
Irgend eine Idee?

MfG
derGarv

26.01.2011 - 21:54 Uhr

Hallo zusammen,

ich möchte die Netzwerkpakete auslesen, die von einem bestimmten Server auf meinem Rechner eintrudeln bzw. zu diesem Gesendet werden (http). Hintergrund ist, dass ich die Daten eines Browserspiels (Flash) mitlesen und Statistiken dazu erstellen will.

Kann mir jemand verraten, wie sowas geht oder wo ich ansetzen könnte?

MfG
derGarv