Laden...

Forenbeiträge von M.Lach Ingesamt 33 Beiträge

13.04.2021 - 14:11 Uhr

auch, wenn das Programm schon läuft? wie komm ich da dran, bitte?

13.04.2021 - 12:34 Uhr

habe eben festgestellt, das es nicht reicht, nur die EXE umzubenennen.
Wie die Exe heist ist egal.
Der Name in der Kopfzeile, den ich im Text des Forms eintrage wird benötigt.
Habe ich eine Chance, in der laufenden Anwendung den Text der Kopfzeile der Windows-Form zu ändern?
Die Klasse "Form1" hat so keine ".Text", auf die ich zugreifen könnte.
Da gibt es doch bestimmt einen "Umweg"?

13.04.2021 - 11:58 Uhr

ok, also "Dumm.exe" erstellen, diese dann umbenennen und dann starten.

13.04.2021 - 11:35 Uhr

ich möchte einfach einen Eintrag in der Taskmanger-Liste der laufenden Prozesse/task erreichen. der soll nicht mal was machen, einfach nur "da sein".
Ich übe das noch und gucke, wie ich was erreichen kann.
Den Unterschied Task/Thread gucke ich mir an. Danke für den Hinweis.

13.04.2021 - 10:26 Uhr

Ich möchte als Test und zum spielen mit c# (Microsoft Visual Studio Community 2019)
folgendes erreichen:
Eine Windows-Form soll eine Textbox haben, dort soll man einen Text eingeben können.
Wenn man dann auf den Button "Start" klickt, wird ein (Dummy)-Task erzeugt, der den Namen hat, der in der Textbox steht.
Der muss nichts weiter machen. als nur in der Taskliste (Taskmanager) mit dem spez. Namen zu erscheinen.
Wie bekomme ich es hin, das ich eine Variable mit dem Inhalt der Textbox als Namen für den Task nutze (hier fest "taskname2")?


Task t = Task.Run(new Action(taskname2));
                Console.WriteLine("läuft") ;

wenn ich das so mache, sehe ich als laufenden task "scriptsandbox64". Da hätte ich gerne den Namen aus der Textbox.

Und wie "kille" ich dann diesen wieder?

10.11.2020 - 10:24 Uhr

schon was her, das hier beschrieben wurde, aber ich habe eine ähnliche Frage. Im Ressourcen-Monitor gibt es mit einem "Rechtsklick" auf einen Prozess die Möglichkeit, diesen zu "pausieren" (nicht Kill!) und auch danach diesen wieder fortzuführen. Diese Funktion würde ich gerne in ein eigenes Programm einbauen. Ziel: prüfen, ob ein Prozess läuft. Wenn Ja, diesen für einen einstellbaren Zeitraum (alle 10 Minuten) zu unterrechen und nach einem weiteren Zeitraum (15 Sekunden) fort zuführen. das in einer kleinen GUI-Exe, in der ich die 2 Zeiten einstellen kann. Mir fehlt die Idee (das Wissen) wie ich diese Pause auslöse. Wenn nein: Melden, das der Prozess nicht da ist und Nichts machen.

Wenn ich das aber richtig verstanden habe, gibt es (im Gegensatz zu "Kill") diese Art der "Pause" für einen Prozess nicht in c#?

14.05.2018 - 21:35 Uhr

Habe mal versucht mir was anzulesen.
https://docs.microsoft.com/de-de/dotnet/csharp/programming-guide
oder auch
http://openbook.rheinwerk-verlag.de/visual_csharp/visual_csharp_09_001.htm

Also die "Funktionen" sind in c# dann wohl eher "Methoden". Diese haben Deklarationen über "Zugriffsebene"... usw usw ... viel Zeug gelesen, nix verstanden. Selbst wenn ich keinen neuen Thread erzeuge bekomme, in meinem Projekt, bekomme ich das so nicht hin, da mir wohl Grundlagen fehlen und ich die Konsole-Beispeiel, die immer angegeben werden nicht verstehe. Bzw. nicht so umsetzten kann, wie ich es gerne hätte. Als Lerntyp bin ich eher so der Visuelle-Typ.... Mir helfen konkrete Beispiele mit Erklärungen dazu.

Wie bekomme ich von der erzeugten "Engine" einen Aufruf hin und kann als Parameter das Output-Device und den Titel übergeben?
Wenn ich "engine" in anderen Methode aufrufe, wissen die nicht was damit gemeint ist und sagen mit dann: > Fehlermeldung:

The name 'engine' does not exist in the current context

Und wenn ich das alles wie zuvor in einem "Rutsch" mache, dann hab ich das "GUI blockerit"-Thema.

09.05.2018 - 17:56 Uhr

Hab nun versucht alles Funktionen zu "bauen".

eine zum sound abspielen, 2 zum buttontext anpassen.

Nun habe ich das Problem, das ich die Variablen nicht in die Funktion bekomme, bzw wenn ich im neuen Thread auf die Werte der Combobox zugreife eine Exeption bekomme.
(Komischerweise mit deutschem Fehlertext, obwohl VS auf englisch steht.)
$exception {"Ungültiger threadübergreifender Vorgang: Der Zugriff auf das Steuerelement comboBox1 erfolgte von einem anderen Thread als dem Thread, für den es erstellt wurde."} System.InvalidOperationException.
Ich versuche gerade ein Thema zu finden, das die Übergabe von Werten an den Thread beahndelt.
Das muss, soweit ich herausgefunen habe, beim "new Thread" mit übergeben werden.
Doof, das ich die Engine im neuen Thread erzeuge, und in anderen Funktionen drauf zugreife mag.....
(suche noch)...

der Code sieht nun so aus:



void soundausgeben ()
        {
            var song = textBox1.Text;
            int output = comboBox1.SelectedIndex;
            ISoundDeviceList sndDev = new ISoundDeviceList(SoundDeviceListType.PlaybackDevice);
            ISoundEngine engine = new ISoundEngine(SoundOutputDriver.AutoDetect, SoundEngineOptionFlag.DefaultOptions, sndDev.getDeviceID(output));

            try
            {
                engine.Play2D(song, false);
            }
            catch (Exception ex)
            {
                MessageBox.Show(ex.Message);
            }
            engine.RemoveSoundSource(song);
            this.Invoke((Action)buttonplaysetzten);
        }

        void buttonplaysetzten()
        {
            button1.Text = "play";
            textBox1.Enabled = true;
            comboBox1.Enabled = true;
            engine.currentlyPlayingSound.Stop();
            engine.RemoveSoundSource(song);
            MessageBox.Show("Stop by buttonplaysetzten"); //zum testen
        }

        void buttonstopsetzen ()
        {
            button1.Text = "stop";
            textBox1.Enabled = false;
            comboBox1.Enabled = false;
        }

        private void button1_Click_1(object sender, EventArgs e)
        {
            if (button1.Text == "play")

            {
                buttonstopsetzen ();               
                new Thread(soundausgeben).Start () ;
              }
            else if (button1.Text == "stop")
              {
                buttonplaysetzten();
              }
         }
        }
08.05.2018 - 21:30 Uhr

auch wenn es nicht "sauber" ist, hier mal der komplette Code vom Button1:


        private void button1_Click_1(object sender, EventArgs e)
        {
            if (button1.Text == "play")
              { 
                button1.Text = "stop"; // und DAS passiert nicht sofort, sondern erst wenn der Sound fertig ist!
                textBox1.Enabled = false;
                comboBox1.Enabled = false;
                var song = textBox1.Text;
                int output = comboBox1.SelectedIndex;

                ISoundDeviceList sndDev = new ISoundDeviceList(SoundDeviceListType.PlaybackDevice);
                ISoundEngine engine = new ISoundEngine(SoundOutputDriver.AutoDetect, SoundEngineOptionFlag.DefaultOptions, sndDev.getDeviceID(output));

                try
                {
                    engine.Play2D(song, false);
                }
                catch (Exception ex)
                {
                    MessageBox.Show(ex.Message);
                }
                while (engine.IsCurrentlyPlaying(song) == true)
                {
                    Thread.Sleep(500);
                }
                engine.RemoveSoundSource(song);
               //  button1.Text = "play"; // ist zu schnell erledigt, da der Song zu erst gespielt wird - optisch sieht man das nie.
                textBox1.Enabled = true;
                comboBox1.Enabled = true;
              }

            else if (button1.Text == "stop")
              { 
                //engine.currentlyPlayingSound.Stop();
                //engine.RemoveSoundSource(song);
                MessageBox.Show("Stop by stop");
                button1.Text = "play";

              }

Was mich noch irritiert: Warum wird das nicht der strengen Reihenfolge nach abgearbeitet? Ich dachte: Wenn der Button gedrückt wird läuft das Zeile für Zeile von oben nach unten runter und die Sachen sind auch in der Reihenfolge erkennbar. Da das "Button1.text = ..." zuerst steht, sollte doch die Änderung des Buttons sofort nach dem drücken sichtbar werden? Es wird aber das MP3 zu erst gespielt, dann der Text vom Button geändert. Warum könnte das so sein? Als wohl blutiger Anfänger erkenne ich das so leider nicht.

Das Thema mit "sauber" programmieren werde ich dann gerne mal lernen und das kleine Projekt hier dazu nutzen um Eure Vorschläge umzusetzen.
Danke schon mal für die Unterstützung und die Geduld mit mir.

08.05.2018 - 14:05 Uhr

wenn ich alles auskommentiere, und nur das "text = "xxx" nutze, dann geht da auch.
Ich gucke mir das Thema mit dem blockierten GUI mal an und versuche das umzusetzen.

06.05.2018 - 16:47 Uhr

hallo, und danke für die Antworten.

Ja, die Art ist nicht sauber, aber mehr behersche ich leider (noch) nicht. Funktioniert aber (normalerweise). Was mich wundert: Mit dem Debugger sehe ich nichts. Evtl. kann ich das gesehene aber auch gar nicht auswerten. Fehlendes Wissen ist hier wohl die Ursache.

Anmerkung: Setzte ich direkt nach der Zeile " button1.Text = "stop";" eine Messagebox, dann funktioniert das wie gewünscht: Der Text ändert sich sofort nach dem Einsprung in die IF-Schleife, also rein optisch. Ohne diese Message-Box-Ausgabe habe ich das "Gefühl", das erst alle anderen Sachen in der Schleife abgearbeitet werden, und der Text im Button erst später geändert wird. Denn vor verlassen der IF-Schleife habe ich dann wieder den Text auf "play" geändert. Und das sieht dann danach aus, als ob das alles zu schnell hinter einander passiert, und man das setzten auf "stop" gar nicht mit bekommt. Diese letzte "auf play zurück setzten" habe ich testweise mal heraus genommen und das bestätigt das "Gefühl". Erst passiert alles Andere, dann wird der Text angepasst. Oder besser: Wird die Änderung sichtbar. Was kann man machen, damit direkt nach dem setzten des Textes dieser auch angezeigt wird und verwendet wird?

03.05.2018 - 21:50 Uhr

Hallo,

ich möchte den vorhandenen Text des Buttons von "play" auf "stop" setzten, wenn dieser gedrückt wurde.
dazu habe ich folgendes eingebaut:
Windows-Form-Anwendung unter VS2017:

private void button1_Click_1(object sender, EventArgs e)
        {
            if (button1.Text == "play")
            {
                textBox1.Enabled = false;
                comboBox1.Enabled = false;
                button1.Text = "stop";

              ......noch mehr code....... 

In der Initalisierung und in den Properties ist der Text des Buttons auf "play" gesetzt worden.
Nehme ich ein frisches Projekt und mache dort das gleiche, dann funktioniert das.
Auch funktionieren alle anderen beiden Anweisungen im Beispiel oben.
Nehme ich alle Funktionen - bis auf die Zeile "button1.text = "xxx";" raus, ändert sich der Text komischer weise. Auch wenn es die erste Zeile wird.
Wo kann ich nun weiter suchen, warum der Text nicht geändert wird?

03.05.2018 - 17:58 Uhr

nein, ich wunder mich nicht.
Habe aber durch das Beispiel oben das hier gefunden, was ich nun austeste.
Ja, mir fehlen Grundlagen der Programmierung.
Bin kein Student mehr, habe einen Job, Kind, Frau, Haus - und bastel in der noch verbleibenden Freizeit was rum...


 int output = comboBox1.SelectedIndex;
            ISoundDeviceList sndDev = new ISoundDeviceList(SoundDeviceListType.PlaybackDevice);
            ISoundEngine engine = new ISoundEngine(SoundOutputDriver.AutoDetect, SoundEngineOptionFlag.DefaultOptions, sndDev.getDeviceID(output));

Das geht wie erwartet und ädnert das Device.
Ändere ich dann in der Combobox einen Eintrag, ändert sich auch die Ausgabe auf das andere Device.
Obwohl:

    private void comboBox1_SelectedIndexChanged(object sender, EventArgs e)
        {
            //
        }

Das da leer ist.... grübel

03.05.2018 - 17:30 Uhr

Nun finde ich Code-Beispile für das Wählen des Output-Device, aber das scheint nur c++ zu sein.
Auch verstehe ich nicht, was da passiert.
https://www.ambiera.com/irrklang/docu/index.html#enumeratingDevices
Fragen dazu:
* was macht das ""(Strenchen) hinter "ISoundEngine"?
* was macht "createIrrKlangDevice()? Oder wie bekomme ich das in meinem Beispiel hin?
Wenn ich das via copy&paste in meinen Code einbaue hagelt es logischerweise Fehler.
Ich versuch mal weiter.....

03.05.2018 - 12:25 Uhr

Vielen Dank für diesen Hinweis.
Das kopieren der ikpMP3.dll in den bin\Debug-Ordner brachte Abhilfe.
Ich höre nun den Sound!

02.05.2018 - 19:34 Uhr

Infos zur Idee, das Thema "Sound (hier: mp3) auf Record-(ausgabe)-Device".

Der Sound soll im "live-Betrieb", also zeitgleich an den Kanal/Device geschickt werden, den das Mikrofon auch benutzt. Als Beispiel: Der Benutzer Telefoniert via VoIP-Client und kann dann mit dem Programm einen Sound mit auf die "Leitung" schicken. Zusätzlich zu dem was das Mikrofon sendet.

Das mit der DLL muss ich mal gucken. Es geht eher darum, das nichts installiert werden kann/soll, und auch Benutzer ohne Rechte etwas zu installieren das Programm nutzen können. Funktional, wenn ggf. unpraktisch, könnte man auch damit leben, die exe und eine DLL in einem Order zu haben und via Archiv zu verteilen.

Welche Alternative schaue ich mir denn nun am besten mal an?

02.05.2018 - 10:49 Uhr

Andere Frage:

Ihr hattet Alternativen empfohlen. Nutze ich gerne, aber kann ich: * Ein "Exe" erstellen, die ohne zusätzliche DLL (Installation) auskommt? * Evtl. auch den Sound auf einem Record-Device ausgeben? (Hier: Das MP3 soll dann mit dem Micro kombiniert werden)

gerne guck ich mir da was an. aber "was" . gefunden habe ich "MCI" (finde heir aber nur C++-Beispiele auf der MSDN-Seite)
und "Bass.net" von radio42.
Lese mich grade mal in Bass.Net ein.... (scheint aber kein frei verfügbares Produkt zu sein...)
Nur die Tiefe habe ich noch nicht, ob meine Anforderungen da umsetzbar sind.

01.05.2018 - 15:36 Uhr

Das Auskommentrieen hat keinerlei Auswirkung.
Ich höre weiterhin nichts, ein Fehler kommt nicht, die "Ende"-Meldung kommt wie erwartet.
Ich versuche ein Paralel-Porjekt mit einer Testausgabe.

01.05.2018 - 15:09 Uhr

Ja, im Ordner sind Beispiele, auch genau für .NET.
Daran habe ich mich auch gehalten.
Im Beispiel "Hello World" ist im "Class1.cs" beschrieben wie es geht.
Instanz erzeugen: "ISoundEngine engine = new ISoundEngine();"
und dann
Sound abspielen: "engine.Play2D("../../media/getout.ogg", true);" (hier "looped").

- genau das mach ich in meinem Code auch.

Ich habe mich für IrrKlang entschieden, da hier die Ausgabe auch auf mehrere Devices möglich ist/sein soll.
Was Alternativen so können hab ich noch nicht untersucht.
Wenn die gefundenen Links nicht auf ungültige Seiten zeigen, guck ich da gerne mal.

30.04.2018 - 17:28 Uhr

So.. da bin ich wieder.
Hatte was gedauert, aber ich habe mir Eure Ratschläge angesehen und hoffentlich gelernt.

* Mein VS ist nun auf "english", Sprache wurde nach installiert.

* Die Combobox 1 aus dem Beispiel von IrrKlang habe ich als Ziel für das Erstellen der Deviceliste raus genommen und
mit unter die "InitializeComponent();" gepackt.
Ergebnis: Die Combobox ist zum Start gefüllt, und ich lasse mit "comboBox1.SelectedIndex = 0;"
das erste Device auswählen.

Ziel: Bei "comboBox1_SelectedIndexChanged" möchte ich ein anderes, schon vorhandenes Device wählen und benutzten.
Was ich bei IrrKlang im Forum finde sind Beispiele in "c++" und dort wird beschrieben, das man das Device irgendwie an die Instanz von "ISoundEngine" üebrgeben muss.

ISoundEngine* engine = createIrrKlangDevice(irrklang::ESOD_AUTO_DETECT, 
                                                    irrklang::ESEO_DEFAULT_OPTIONS,
                                                    deviceID);

Alle vorhandenen Devices habe ich ja schon, muss ich also nicht neu einlesen.
Diese würde ich, so mein Verständnis, als Index der Combobox1 finden.

Die Combobox lass ich jetzt erst mal in Ruhe und widme mich dem Abspielen.
Dazu habe ich einen Button gebaut:

private void button1_Click(object sender, EventArgs e)
        {
            var song = textBox1.Text;
            var output = comboBox1.SelectedItem;
            ISoundEngine engine = new ISoundEngine();
           
           try
           {
                engine.Play2D(song, false);
                engine.Play2D("d:\\1.mp3");
            }
            catch (Exception)
           {
               MessageBox.Show("fehler");
           }
           engine.RemoveSoundSource(song);
           MessageBox.Show("ende");  
        }

In Textbox1 ist der komplette Pfad zu einer MP3-Datei angegeben, die Datei "d:\1.mp3" ist auch vorhanden und diese lassen sich beide mit normal abspielen.

Das Ergebnis: Es öffnet sich eine Messagebox mit dem Text "ende". Ein Sound ist nicht zu hören und ich habe der "Engine" noch nicht gesagt, welches Device sie nehmen soll. Das einfach "Play2d" scheint nicht zu klappen. Ein Fehler kommt nicht.

Soweit der Stand.
Und bevor ich das mit dem Device machen, möchte ich erst mal überhaupt ein MP3 abgespielt bekommen.

28.04.2018 - 11:47 Uhr

Ah ok, danke.

Hier ein Beispiel, das ich im Netz gefunden habe, um das Output-Device zu bestimmen.


private void comboBox1_SelectedIndexChanged(object sender, EventArgs e)
        {
            //Get the list of installed sound devices. 
            var sdl = new IrrKlang.ISoundDeviceList(IrrKlang.SoundDeviceListType.PlaybackDevice);
            //Add each device to a combo box.
            for (int i = 0; i < sdl.DeviceCount; i++)
            {
                comboBox1.Items.Add(sdl.getDeviceDescription(i) + "\n");
            }
        }

Das habe ich so bei mir eingebaut, der Code gibt keinen Fehler, aber die Cobobox bleibt leer.
Erwartet hätte ich hier die Auflistung meiner Devices.
Das "var" vor dem ersten "sdl" habe ich eingebaut und weiche damit vom Beispiel schon ab, gibt aber sonst eine Fehlermeldung "sdl im aktuellen Konterxt nicht gefunden".

27.04.2018 - 21:46 Uhr

Ja, das habe ich schon gesehen. Die Beispiele dort drehen sich aber um eine Consolenausgabe.
In den Beispielen klappt das auch immer wunderbar, aber nicht, wenn ich das in mein Projekt einbaue.
Meine Anfänger-Probleme sind dann, die gesehenen Beispiele auf meine Anwendung umzusetzen und die Warnings und Fehler aus zu bügeln. Zumal die Beispiele alle auf englisch sind, meine VS2012 auf Deutsch ist und die Übersetzung auch nicht immer so einfach ist.

Scheint, als ob ich mich da an etwas (zu) komplizierteres ran gemacht habe.

Was wäre denn eine gutes "Austauschforum für Anfänger", in dem man seine Code-Beispiele posten und diskutieren kann?

27.04.2018 - 12:16 Uhr

Ah! Danke. Meine Versuche waren immer auf die "IrrKlang.DLL" gerichtet.
Nun habe ich die "irrKlang.NET4.dll" genommen und das klappt!
Danke dafür!

Der Fehler ist um weg, dafür steht nun dafür ein Warning:> Fehlermeldung:

Warnung 1 Konflikt zwischen Prozessorarchitektur des Projekts "MSIL", das erstellt wird, und der Prozessorarchitektur des Verweises, "irrKlang.NET4", "AMD64". Dieser Konflikt kann zu Laufzeitfehlern führen. Ändern Sie ggf. mithilfe des Konfigurations-Managers die als Ziel angegebene Prozessorarchitektur Ihres Projekts so, dass die Prozessorarchitekturen zwischen Ihrem Projekt und den Verweisen ausgerichtet werden, oder wählen Sie eine Abhängigkeit von Verweisen mit einer Prozessorarchitektur, die der als Ziel angegebene Prozessorarchitektur Ihres Projekts entspricht.

Unter den Projekt-Eigenschaften versuche ich die .net-Version (akt. 4.5) zu ändern (auf 4.0) aber das bringt nix. Der Fehler > Fehlermeldung:

Namespace nicht gefunden erscheint wieder und dazu ein Warnung: > Fehlermeldung:
Warnung 2 Der primäre Verweis "irrKlang.NET4" konnte nicht aufgelöst werden, da er anhand des ".NETFramework,Version=v4.5"-Frameworks erstellt wurde. Dabei handelt es sich um eine höhere Version als das aktuelle Zielframework ".NETFramework,Version=v4.0". Soundbar
-
Also stell ich wieder auf 4.5 zurück. Bei "Erstellen" und "Zielplatform" CPU-Type habe ich "any" und "32 bit bevorzugen" aktiv.
Unter "Verweispfade" ist nichts mehr eingetragen.
-
Wo guck ich nun weiter?

26.04.2018 - 22:42 Uhr

bin ich dann als "Anfänger" hier falsch?
Ich befolge die in den FAQ und Forum angegebenen Hinweise, die LIB und INCLUDE Ordner der IrrKlang-Sachen in den Eigenschaften des Projektes mit an zu geben, ich denke mal, das hier die Verweispfade gemeint sind.... (org: "You only need to add the include path to your options and link with the irrklang.lib "

26.04.2018 - 22:02 Uhr

Hallo und danke für die rasche Antwort.
Das ist alles bestimmt gut und brauchbar, aber auch für mich als Anfänger nicht umsetzbar.
Ebenso wie IrrKlang kann ich auch diese Pakete nicht in mein Projekt einbinden.
Was muss sich machen, damit ich IrrKlang im Projekt nutzen kann?
Dort habe ich die Verweispfade auf die Ordner "lib" und "include" von IrrKlang gesetzt.
Was fehlt?
Ziel: MP§'s als Ressource mit in die EXE zu packen und auf einen Button-Click abzuspielen. Simple "Soundleiste" a la "Stefan Raab"

26.04.2018 - 20:36 Uhr

Hallo,
Frage zur Irrklang.
Ich bin (als Anfänger) dabei zu lernen und bei der Suche nach Möglichkeiten, die Soundausgabe auf ein "wählbares" Device zu legen, auch auf IrrKlang gestoßen.
Bei mir scheitert es aber schon daran, das ich in meinem Projekt in den Eigenschaften die "Verweispfade" für das LIB und INCLUDE von Irrklang angegeben habe, aber trotzdem ein simples "using Irrklang" einen Fehler wirft mit :> Fehlermeldung:

Der Typ- oder Namespacename "Irrklang" konnte nicht gefunden werden. (Fehlt eine Using-Direktive oder ein Assemblyverweis?)"

Using mache ich ja, wo stelle ich ggf. was um wegen dem "Assemblyverweis"?

Ich nutze VS2012 auf Win10 und habe irrKlang-64bit-1.6.0 entpackt in einem Ordner - paralell zu meinem Projekte-Ordner liegen.
Ziel soll es sein, eine "EXE" zu erstellen, die ohne Installation oder zusätzliche DLL lauffähig ist.
Daher wollte ich alles in das Projekt rein verlinken.
Das Programm soll eine Windows-Form werden und in eine Combox haben, die alle Sounddevices auflistet und mindestens eins davon ausgewählt ist.
Wenn möglich soll man dort (in V2.0) auch ein weiteres Ausgabe-Device wählen.
Aber im ersten Schritt soll erst mal nur das Ausgabe-Device auswählbar sein (so es denn mehrere gibt).
Die Seite von https://www.ambiera.com habe ich im FAQ und Forum schon durch sucht, aber als Neuling ist das alles nicht so einfach zu verstehen.
Ggf. kann mir Hier jemand für solche "Basics" kurz erklären, was ich da anders machen muss.
So - ich hoffe, ich habe genug Infos geliefert - und den richtigen Thread gefunden.
Danke schon mal.

20.06.2016 - 22:00 Uhr

Hallo,
mein Testing-Projekt schreitet voran und ich habe ein kl. Windows-Form geschrieben, das via WebClient auswählbar (ComboBox) 3 versch. Testdateien von einem Server lädt. Dabei wird Dateigröße und die Downloadrate gemessen. Funktioniert soweit wie gewünscht.

Nun hätte ich gerne eine Option im Programm, das man nicht nur die diversen einzelnen Test-Daten auswählt und runter lädt, sondern zusätzlich auch die Möglichkeit hat, 500 1k Dateien zum testen zu laden. Das wäre dann eine zusätzliche Option in der ComboBox.
Der Quell- und Ziel-Ort und die Dateinamen sind bekannt.
Wie kann ich nun eine Progress-Bar erzeugen, die über den kompletten Download geht und nicht nur die einzelnen Dateien betrachtet. Wichtig ist nachher zu wissen, wie schnell die Dateien in Summe ankommen, nicht jede einzeln.
Ich würde in einer Schleife starten und mit einer Stoppuhr die Start- und Endezeit nehmen. Aber wie mach ich das mit der Progressbar?

02.06.2016 - 11:31 Uhr

Hab es angepasst. Ich habe eine Windows-Form-Anwendung.
Danke für Deine Antwort, ich versuche das mal da irgendwie einzubauen, das der Proxy benutzt wird.
Ich habe mal zum testen folgendes eingefügt:

webClient.Proxy = WebRequest.GetSystemWebProxy();
				string proxyadr = webClient.Proxy.ToString();
				MessageBox.Show(proxyadr);

Die Info zeigte dann:

System.Net.WebRequest+WebProxyWrapperOpaque

Was mir aber nix sagt. Eine Suche dazu erfolgte, aber eine Lösung dazu habe ich noch nciht gefunden.

02.06.2016 - 10:25 Uhr

Hallo,

als "Frischling" eine Frage: Ich habe ein

 webClient.DownloadFileAsync(URL, location);

das funktioniert in einer Umgebung ohne Proxy auch so wie es soll.

Nun bekomme ich aber hier in der Umgebung, in der es benutzt werden soll zu einem 401, weil eine Proxy-Benutzung Pflicht ist.
Der normale Benutzer hat keine Reche, die Systemeinstellungen für den Proxy zu konfigurieren oder die Einstellungen zu sehen.
Bei den Netzwerkeinstellungen seht nur die Adresse zu einem Script, das die Einstellung macht.
Es ist auch keine pers. Anmeldung am Proxy erfordelich usw.

Im MSDN habe ich zwar die WebProxy-Klasse gefunden, aber dort wird - so ich das verstehe - zwingend eine Adresse für den Proxy benötigt.

Wie gehe ich damit am besten um und kann z.b. die Proxy-Default-Settings des Systems nutzen oder so? Für Anregungen dankbar.

24.05.2016 - 18:57 Uhr

Hallo und danke für die richtige Richtung.
Den Inhalt des Projektes habe ich mir mal angesehen, aber es übersteigt meine Fähigkeiten stark.
So ist es mir nicht möglich zu identifizieren, wo und wie ich das in ein bestehendes Projekt integrieren könnte.
Mein Programm hat noch ein K.O.-Kriterium zu erfüllen. Es darf keinen Installer o.ä. haben, da es auf Windows-Umgebungen mit stark beschränkten Rechten eingesetzt wird.
So bekommt der Benutzer nur eine ZIP-Datei mit der EXE darin. Mehr nicht.
Das mit dem Mausklick wäre eine feine Erweiterung, aber ohne "Mentor" oder einen Grundkurs an der VHS werde ich das nicht leisten können.

24.05.2016 - 11:23 Uhr

Für eine Stoppuhr (Windows-Form-Anwendung, Framework 4.5, VS2012) in der es einen Button gibt, mit dem man die Stoppuhr startet sowie nach dem Starten auch wieder stoppen kann, möchte ich eine Erweiterung einfügen.
Es soll ein neuer Button (oder eine Möglichkeit) eingebaut werden, der die Stoppuhr "scharf" schaltet.
Wenn das Scharfschalten erfolgt ist, soll auf den nächsten Mausklick hin, der in einem anderen Fenster (z.B. webbrowser) erfolgt, soll diese dann loslaufen.
Das Stoppen kann durch einen Klick auf den Button erfolgen, mit dem das gestartet wurde. Die Stoppuhr hat die Möglichkeit immer im Vordergrund zu bleiben.

Nur kenne ich mich als Beginner nicht aus mit den Möglichkeiten so ein Maus-Event abzufangen und als Starttrigger für eine Funktion in meinem Programm zu nutzen.
Es gibt da doch bestimmt auch Sicherheits-Probleme, die es zu überwinden gilt.
Windows lässt das nicht so einfach zu - oder?
Für Anregungen dankbar.

24.05.2016 - 10:53 Uhr

Hallo "Gemeinde",
vielen Dank für die doch motivierenden Worte. 👍

Mein Timer-Problem habe ich lösen können. Es lag an einer Zeile, die nicht in der Datei des codes sondern in der designer.cs lag.
Ein "this.timer1 = new System.Windows.Forms.Timer(this.components);" und der Timer funktioniert nun auch im neuen Projekt.

Meine anderen Fragen werde ich dann mal in der angesprochenen Ecke stellen.

Danke Euch!

23.05.2016 - 19:57 Uhr

Hallo,
als kleine Erklärung. C# und VS nutze ich in der Freizeit um kleine Tools zu bauen.
Meist Sachen (wie meine Stoppuhr), die es schon irgendwie gibt, aber das eine oder andere fehlt.
Angefangen habe ich mit solchen kleinen Sachen mit Delphi. Das ist aber schon ewig her.
Nun hatte ich ein Projekt in VS2010 und hab es nach VS2012 migriert.
Funktioniert auch alles soweit, aber es scheint Unterschiede zu geben, die sich mir nicht sofort eröffnen.
In meiner Stoppuhr gibt es einen timer und ich habe eine Textbox, in der ich das Datum und die Uhrzeit anzeigen möchte. Im alten Projekt hat das funktioniert, im neuen bleibt das Fenster leer.

Wegen meiner Unkenntnis habe ich leichte Hemmungen in Eurem Profi-Forum zu schreiben um mir Hilfe zu holen. In den FAQ "wie poste ich richtig" zu entnehmen, gibt es dafür eine Anfänger-Ecke. Aber selbst Die finde ich nicht. Meint Ihr überhaupt dieses Forum hier - oder doch eher ein anderes?

Wenn ich doch hier schreiben kann, dann bitte: wo?

Danke.