@ Big Al: NAudio macht irgendwie auch nicht das was ich will.. Es kann zwar die Stärke anzeigen, jedoch nur wenn man eine Audio-Datei angibt - und nicht über den Windows-Output ... :S
Oder ich bin einfach zu dumm, und habe da was übersehen/überlesen?
@ Gwinn: Ich hab das Sample getestet, aber das Teil hat mir nur anezeigt, was passiert, wenn das Mikro einen Ton erfasst...? 😦
Lg Marc
Das ist ja das Problem, ich mag nicht dn Input abfragen, sondern den Output. Ich mag das Spektrum, wie es (im Moment der Abfrage) von Windows zur Soundkarte geschickt wird...
Lg Marc
Hallo Leute!
Ich bin derzeit auf der Suche nach einer Möglichkeit, alles, was zur Soundkarte geschickt wird, abzufragen. Ich mag einen simplen Audio-Visualizer basteln (jedoch als Rainmeter-Plugin).
Es geht also darum, das Spektrum auf die ganzen einzelnen Frequenzen aufzusplitten, und deren Stärke als Balken darzustellen... Jedoch finde ich keine Möglichkeit, das komplette Audio-Spektrum ohne zusätzliche Libraries (Ich wäre mit WinAPI, und DirectX zufrieden, Fremd-Libraries will ich eigentlich nicht verwenden) abzufragen. 😦
Hat vllt. von euch jemand eine Idee?
Vielen Dank im Vorraus!
Lg Marc
PS: SuFu und Google natürlich schon benutzt! Hab aber nur Möglichkeiten gefunden, mit DirectSound vom Mikro aufzunehmen. Mehr aber leider auch nicht.
Ich wollte hier noch etwas vorstellen, da ich mich eigentlich durch dieses sehr nette Tool zu etwas inspirieren habe lassen.
Ich hab mir eine eigene Hardware-Binäruhr gebaut. Mehr dazu in Atmel ATmega - Binary Clock 😃
Lg Marc
Ich würde dir zu Elegant UI raten.
Kann ich nur weiterempfehlen! Wenn man sich einmal dran gewöhnt hat, ist es meiner Meinung nach der beste Office-Nachbau!
Kostet jedoch aber leider etwas...
Lg Marc
Ich würde es so machen:
Das was in der Paint steht, verschiebst du in eine eigene Methode -->
public void RenderBox(Graphics renderTarget)
{
// Zeichnen mit renderTarget
}
in der Paint:
RenderBox(e.Graphics);
und zum speichern:
public void Save(string path)
{
Bitmap bitmap = new Bitmap(pictureBox1.Width, pictureBox1.Height);
Graphics graphics = Graphics.FromImage(bitmap);
RenderBox(graphics);
using (Stream stream = new FileStream(path, FileMode.Create, FileAccess.Write))
{
bitmap.Save(stream, System.Drawing.Imaging.ImageFormat.Png);
}
}
So sollte es gehen! 😉
Und vergiss das "using System.IO;" nicht! 😉
Lg Marc
Edit: Vergiss das mit dem CreateGraphics! Nimm lieber die Paint-Methode der PictureBox, da bekommst du über "e.Graphics" schon was mitgeliefert 😉
Lg
@Herbivore: Wenn die Mitarbeiter davon wissen, ist dass doch legal, oder?
Jedenfalls gibt es Libraries, mit denen du an den Verlauf vom Internet Explorer kommst, wie es mit dem Starten/Beenden aussieht, kann ich dir nicht sagen.
Lg Marc
Also, in der Taskbar ist es einfach. Dafür gibt es eine Library von Microsoft.
Am Desktop wird es schon etwas schwieriger. Soweit ich weiß, wirst du um eine Shell Extension nicht drum rum kommen...
Lg Marc
Also, ich würde das mit nem Timer, dem Paint-Event und Invalidate() realisieren...
Z.B. so:
private Timer timer1;
private IContainer components;
public Form1()
{
InitializeComponent();
// Set the value of the double-buffering style bits to true.
this.SetStyle(ControlStyles.DoubleBuffer |
ControlStyles.UserPaint |
ControlStyles.AllPaintingInWmPaint,
true);
this.UpdateStyles();
}
private void InitializeComponent()
{
this.components = new System.ComponentModel.Container();
this.timer1 = new System.Windows.Forms.Timer(this.components);
this.SuspendLayout();
//
// timer1
//
this.timer1.Enabled = true;
this.timer1.Interval = 5;
this.timer1.Tick += new System.EventHandler(this.timer1_Tick);
//
// Form1
//
this.ClientSize = new System.Drawing.Size(512, 384);
this.Name = "Form1";
this.Text = "Main Form";
this.Paint += new System.Windows.Forms.PaintEventHandler(this.Form1_Paint);
this.ResumeLayout(false);
}
int x = 512;
int y = 0;
private void timer1_Tick(object sender, EventArgs e)
{
x--;
if (x == 0)
timer1.Stop();
this.Invalidate(false);
}
private void Form1_Paint(object sender, PaintEventArgs e)
{
Graphics graphics = e.Graphics;
graphics.DrawImage(PaintSample.Properties.Resources.Test, new Point(x, y));
}
Ich habe dir das Sample angehängt. Hoffentlich hilft es dir!
Dein Code war wirklich etwas... unperformant.
Das liegt z.B. auch daran, dass du bei jedem Update das Bild neu lädst.
Beachte auch, dass du mehr als einfaches DoubleBuffer = true brauchst... Siehe Konstruktor 😉
Lg Marc
Danke, das hat mir wirklich sehr geholfen!
Ich habe es nun soweit gebracht, dass das icon ganz links (und da befindet es sich auch direkt nachdem es gestartet wurde...) ganz nach rechts zu verschieben.
Code dazu:
using System;
using System.Collections.Generic;
using System.Linq;
using System.Text;
using System.Runtime.InteropServices;
namespace PowerMonitor
{
public class Win32
{
public enum ToolbarMessages : uint
{
WM_USER = 0x0400,
TB_GETBUTTON = (WM_USER + 23),
TB_BUTTONCOUNT = (WM_USER + 24),
TB_MOVEBUTTON = (WM_USER + 82)
}
[DllImport("user32.dll", SetLastError = true)]
static extern IntPtr SendMessage(IntPtr hWnd, UInt32 Msg, int wParam, int lParam);
// For Windows Mobile, replace user32.dll with coredll.dll
[DllImport("user32.dll", SetLastError = true)]
static extern IntPtr FindWindow(string lpClassName, string lpWindowName);
[DllImport("user32.dll", SetLastError = true)]
static extern IntPtr FindWindowEx(IntPtr parentHandle, IntPtr childAfter, string className, IntPtr windowTitle);
private static IntPtr FindTrayToolbarWindow()
{
IntPtr hWnd = FindWindow("Shell_TrayWnd", null);
if (hWnd != IntPtr.Zero)
{
hWnd = FindWindowEx(hWnd, IntPtr.Zero, "TrayNotifyWnd", IntPtr.Zero);
if (hWnd != IntPtr.Zero)
{
hWnd = FindWindowEx(hWnd, IntPtr.Zero, "SysPager", IntPtr.Zero);
if (hWnd != IntPtr.Zero)
{
hWnd = FindWindowEx(hWnd, IntPtr.Zero, "ToolbarWindow32", IntPtr.Zero);
}
}
}
return hWnd;
}
public static void MoveFirst()
{
IntPtr hWnd = FindTrayToolbarWindow();
int index = 0;
UInt32 count = (UInt32)SendMessage(hWnd, (uint)ToolbarMessages.TB_BUTTONCOUNT, 0, 0);
SendMessage(hWnd, (uint)ToolbarMessages.TB_MOVEBUTTON, index, (int)count);
}
}
}
Vllt. hilft es ja jemanden 😃
Vielen Dank nochmal für die Hilfe,
Lg Marc
Ja, das ist mir ja auch klar. Ich weiß aber nicht wie, vor allem nicht, weil das Programm kein Windows-Dienst ist, sondern einfach ein als [STAThread] markiertes Programm, das statt normaler GUI einfach nur ein NotifyIcon lädt. Es sollte möglichst einfach sein, deshalb habe ich es so gemacht, dass man die runtergeladene exe einfach nur in den Autostart kopieren muss damit es funktioniert...
Aber es ist auf jeden Fall möglich, die Symbole nachträglich noch zu verschieben. Es gibt einige Programme die das ermöglichen, darunter z.B. "Taskbar shuffle". Ich habe mich schon per Mail an den Programmierer gewandt, jedoch hat er nicht geantwortet, und ich wüsste nicht, wen ich sonst fragen sollte, außer eine Riesen-Community 😃
Vllt. weiß ja wirklich jemand wie man sowas machen kann... 😃
Lg Marc
Edit: Bitte entschuldigt wenn ich die nächsten drei Tage nicht antworte, da ich nicht zu Hause bin. Mal sehen ob ich ins Internet komme...
Das Programm ist eine systray-App. Es zeigt einfach nur den Akku-Status an, jedoch viel detaillierter als Windows (und braucht gerade mal 9MB im Ram und hat max. 10 Sekunden Reaktionszeit).
Da normalerweise die Batterie-Anzeige in Windows als erstes geladen wird, ist sie im System-Tray auch ganz rechts. Mein Symbol kullert allerdings immer irgendwo herum, deswegen möchte ich es beim AppStart ganz nach rechts, also an die erste Position verschieben, damit es auch sichtbar ist. Ich habe allerdings keine Idee, wie ich das machen soll.
Ich hoffe dass ihr mir jetzt helfen könnt, bitte entschuldigt dass ich bisher etwas "schwammig" gefragt habe... 😃
Lg Marc
Hallo,
das ist ja das Problem... Ich finde keinen Code dazu, wie man sowas bewerkstelligen könnte. Ich habe einfach keine Ahnung, deswegen habe ich nochmal gefragt... Und da ich keinen Code habe, weiß ich auch nicht was ich davon zeigen könnte 😉
Lg Marc
Ok, ich habe mich jetzt 2 Tage lang gespielt.. Aber ich bring es einfach nicht zusammen. Kann mir vllt. jemand auf die Sprünge helfen?
Lg Marc
Hallo,
vielen Dank erstmal für deinen Tipp zero_x, ich bin schon eifrig am suchen, das meiste was ich bisher jedoch gefunden habe hatte nur mit dem bekommen der Werte, und nicht mit dem setzen der Werte zu tun...
Ich melde mich nochmal wenn ich mehr weiß,
Lg Marc
Hallo Leute!
Ich suche derzeit nach einem Weg, ein NotifyIcon "ganz nach rechts" zu verschieben.
Es soll die Windows-Batterieanzeige ersetzen, da ich die (in XP) einfach nur zum kotzen finde. Das Programm kann hier angesehen/runtergeladen werden. (Einfach die exe starten, man kann es dann mit der rechten Maustaste beenden).
Es funktioniert schon alles, jedoch ist es an der falschen Position. Das Ausblenden des Originals kann man per Hand vornehmen. Nun muss nur noch meines richtig angezeigt werden, und nicht irgendwo.
Mir ist klar, dass das nur (wenn überhaupt) über die Windows-API funktioniert.
Hat jemand von euch vllt. eine Idee, wie das funktionieren könnte?
Lg Marc
Also, referenzieren würde ich sie in einer List<Button>
Wenn du die Liste enumerierst kannst du auch auf jeden Button zugreifen und dessen Eigenschaften bearbeiten.
Lg Marc
Bezüglich this.Visible: Es wäre besser, die Methode this.Hide() aufzurufen, um die Form zu verstecken, und this.Show() um sie wieder anzuzeigen.
Lg Marc
Hey, wie versprochen noch mein Bericht:
Es hat einwandfrei funktioniert. Nur zwei doofe Häckchen... 🙁
Trotzdem danke 🙂
Hättest du das nicht geschrieben, hätte ich nicht so schnell in diese Einstellungen geschaut, und den Fehler in meinem Programm gesucht 8o
Mfg Marc
Ich habe mir nochmal die Berechtigungen angeguckt, und dabei ist mir folgendes aufgefallen:
Der Benutzer hatte bei den Berechtigungen ÜBERALL ein häckhen. Somit nicht nur bei db_datareader/-writer, sondern auch bei db_denydatareader/-writer... 😦
Man, bin ich dämlich. Aber richtig testen kann ich das erst morgen, wenn ich wieder dort bin. Danke trotzdem für die Hilfe, ich werde morgen nochmal bescheid geben, ob alles geklappt hat!
Lg Marc
verwendetes Datenbanksystem: SQL
Hallo Leute!
Ich habe derzeit ein kleines Problem. Ich sollte für einen Kunden ein kleines Programm schreiben, dass mit dem Microsoft SQL Server (v 8.0 --> Also 2000) auf einem Windows Server 2003 gewisse Daten speichern und wieder auslesen kann.
Bei mir zuhause funktioniert das alles ja recht gut, hier läuft aber nur der Standard 2008 SQLEXPRESS, der beim VS 2010 dabei ist. Aber beim Kunden rennt eine richtige SQL-Datenbank, wo man logischerweise mit Benutzername und Passwort arbeiten muss.
Also, habe ich als ConnectionString nun "Server: SERVER; Database: DataStorage; User Id=myUser; password=p@ssword". Das connecten und so funktioniert super.
Und wenn ich dann folgendes machen möchte: "SELECT * FROM USERS" (die Tabelle existiert, hat alle nötigen Spalten und und und) bekomme ich dann folgende Exception:
"Die SELECT-Berechtigung wurde für das USERS-Objekt, DataStorage-Datenbank, Besitzer 'myUser' verweigert.
Hat irgendjemand von euch eine Ahnung, was man dafür umstellen muss?
Der Benutzer 'myUser' hat alle Rechte auf dieser Tabelle.
Hoffe sehr dass mir jemand helfen kann, bin am verzweifeln... 😦
Lg Marc
Für die fortlaufende Versionsnummer musst du in der AssemblyInfo.cs in folgendem Abschnitt:
// Versionsinformationen für eine Assembly bestehen aus den folgenden vier Werten:
//
// Hauptversion
// Nebenversion
// Buildnummer
// Revision
//
// Sie können alle Werte angeben oder die standardmäßigen Build- und Revisionsnummern
// übernehmen, indem Sie "*" eingeben:
// [assembly: AssemblyVersion("1.0.*")]
[assembly: AssemblyVersion("2.0.0.0")]
[assembly: AssemblyFileVersion("2.0.0.0")]
AssemblyVersion("2.0.0.0") auf AssemblyVersion("2.0.0.*") oder so ändern. Steht ja eh in den Kommentaren 😉
Lg Marc
Versuch es doch mal mit einem StreamReader, bzw. StreamWriter. Damit könntest du Einstellungen mal in ganz banaler Weise uns sehr einfach speichern 😃
Habe ich anfangs auch so gemacht 😉
Für jede Einstellung eine Zeile. Also, z.B.
1. Zeile für den Empänger,
2. Zeile für den Absender,
3. Zeile für den Betreff.
Beim Beenden des Programmes (Event 'FormClosing') speicherst du, und im Konstruktor lädst du 😃
Hoffe dass dich das auf den Weg bringt 😉
Lg Marc
Aaah, ok.. Genau das habe ich gesucht. Danke!
Ist schon klar, dass es nicht während dem Transfer passiert, aber wie macht das dann z.B. FileZilla wenn es eine 600MB Datei hochladen muss? Das dauert doch auch Ewigkeiten und es muss die Verbindung aufrecht erhalten...? 🤔
Lg Marc
Nein, mit FileZilla funktioniert es ja. FileZilla wird ja auch nix anderes machen, als einen eigenen Befehl zur Aufrechterhaltung der Verbindung zu senden. Und genau den suche ich 😃
Lg Marc
Hallo Leute!
Ich habe eine Frage, und zwar habe ich derzeit ein Problem folgender FtpLibrary: http://ftplibrary.codeplex.com/
Ich habe den Code nur ein bißchen aufgeräumt (Bezeichner verändert, und XML-Kommentare hinzugefügt)
Ich kann super damit arbeiten, mein Programm kommt damit auch sehr gut zurecht. Wenn ich jedoch eine größere Datenmenge auf den Server laden muss (Größere Datenmenge soll heißen mehrere Dateien, ca. 500 Bilder), dann macht der ca. 5 Minuten seine Arbeit, danach geht nichts mehr. Es kommt keine Exception etc., der Client bleibt einfach hängen...
Ich bin mir sehr sicher dass es irgendwas damit zu tun hat, dass der Client kein "Ich bin noch da" sendet, ich weiß aber nicht wie der dafür nötige Befehl dafür heißt. Kann mir da jemand helfen? Google/Wikipedia hat mich nicht wirklich weitergebracht...
Vielen Dank im Vorraus,
Mfg Marc
Hast du es auch in den Einstellungen vom Projekt umgestellt? (Siehe Bild)
Mfg Marc
Ansonten probier doch einfach mal diese FTP-Library, ich nutze die auch, und bin SEHR zufrieden damit, auch was die Geschwindigkeit angeht... die Library "kommuniziert" wie z.B. FileZilla mit dem Server...
Das heißt aber auch, dass du die ChangeWorkDirecotry Methode aufrufen musst und so, dass das funktioniert... Du gibst der Library einen Befehl nach dem anderen an, also Connect, Login, ChangeWorkDirectory, UploadFile, etc. etc...
Hoffe, das hilft dir 😉
Mfg Marc
Kann es vllt. sein, dass du nach "P02_01" suchst, welches aber "P2_01" heißt...?
Mfg Marc
Ich hab es jetzt einfach mit einem try/catch bei Assembly.Load gemacht... Was besseres ist mir nicht eingefallen^^ Auf jeden Fall funzt es jetzt, trotzdem danke..
Mfg Marc
Hmm ... war leider zu spät, ich habe es schon de-/installiert ...hat alles gefunzt... trotzdem danke für den Tipp mit dem Umschalten 😃
Gut, ich werde jetzt einmal ein paar verschiedene Varianten testen, mal schauen was dabei rauskommt...
Ich gebe dann Bescheid,
Mfg Marc
Okay, ich werde es jetzt deinstallieren und wieder installieren.. mal sehen, wie es funktioniert.
Und... Ich persönlich finde es einfach angenehmer, in Deutsch zu arbeiten, auch wenn ich meinen Code IMMER in englisch schreibe... Ist halt meine Meinung, das muss jeder für sich selbst entscheiden...
Mfg Marc
Nein nein...
Ich habe im Moment VS 2010 in Englisch installiert, und lade mir gerade die deutsche Version runter (Dreamspark). Jetzt wollte ich wissen, ob hier schon jemand Erfahrung damit gemacht hat... Hab die iso ja noch nicht komplett unten...
Mfg Marc
Hey Leute!
Sagt mal, hat schon jemand Erfahrung damit gemacht, Visual Studio 2010 Professional von Englisch nach Deutsch zu "transformieren"...?
Mfg Marc
Naja, also ich erkläre jetzt besser mal alles, vllt. ist es ja wirklich einfacher so... 👶
Es ist so: Ich nutze ein Ribbon-Framework (Elegant UI), und ich hatte bisher eine ComboBox, in der alle Themen aufgelistet sind (insg. sind es 9 Themen), die verfügbar sind. Bisher wurde die Verfügbarkeit immer so überprüft, ob die 2 Dateien (ein Thema hat zwei dll's) existieren. Nun, in letzter Zeit arbeite ich mit diesen Dateien im GAC, da es für das VS (vor allem bezüglich der Toolbox) leichter ist. Dadurch erkennt die ComboBox nun nicht mehr, ob ein Thema verfügbar ist, oder nicht. Und dazu möchte ich nun überprüfen, ob ein Thema in irgendeiner weise verfügbar ist, oder nicht...
Ich hoffe, das war verständlich?^^
Lg Marc
Das mag ja sein, aber... 18 Assemblies zu laden, dauert auch seine Zeit... Gibt es denn keinen anderen Weg? 😦
Lg Marc
Wenn man 'versucht' zu laden, ist zwangsweise eine try/catch nötig, oder? Das kostet Zeit, wenn man das bei 18 dll's machen muss... File.Exists reicht aber leider nicht für den GAC...
Mfg Marc
Hallo Leute!
Ich wollte fragen, ob jemand weiß, wie man die Verfügbarkeit eines Assemblies testet. Dazu möchte ich einfach wissen, ob ein Assembly, wie und wo auch immer es gerade liegt/geladen ist, verfügbar ist. Ob es nun im GAC liegt, oder im selben Verzeichnis wie das ausführende Assembly.
Ich habe dazu keinen Weg gefunden.. gibt es nicht irgendeine Methode, die das kann? Ich möchte dabei keine Fremdbibliotheken benutzen, also "reines .Net"...
Danke im vorraus!
Lg Marc
Also, ich habe es jetzt gelöst.
Ein Panel, auf dem alle Controls DockStyle.Top haben, dann ein bißchen mit den Z-Index spielen, und ein Label statt den Groups.
Endprodukt:
Mfg Marc
Naja, reine Windows Forms halt... Kein WPF - "Windows Nativ" halt...
Ich wette, das man das irgendwie mit einer ListView hinbekommt...
Ich habe aber schon ne Idee, wie man das hinbekommen könnte... Ich werde posten, wie ich es geschafft habe, sollte ich es geschafft haben 😉
Mfg Marc
Ich weiß, dass das mit WPF geht, jedoch ist das nicht Windows-nativ, das sollte es aber für diese Applikation sein...
Außerdem müsste ich dann die restliche Applikation auch nach WPF porten, das wäre mir zu viel Arbeit^^
Weiß vllt. jemand, wie MS das gelöst hat? Es sieht auf jeden Fall sehr stark nach einer (windows forms) listview aus...
Mfg Marc
Hallo Leute!
Ich versuche im Moment, das Autoplay-Menü von Windows 7 nachzumachen (Habe ich schon, und es funkioniert auch alles, jedoch sieht es noch nicht ganz so aus, wie ich will)... Siehe Bild Nr. 1 wie es in Windows 7 aussieht.
Bild Nr. 2 ist mein aktuelles Produkt.
Und ich würde gerne Bild Nr. 2 mit Bild Nr. 3 kombinieren, so wie in Bild Nr. 1.
Die Buttons in meinem aktuellen Produkt sind auf einem UserControl, das sich derzeit auf einem FlowLayoutPanel befindet.
Und nun will ich die Buttons in einem ListView anzeigen, aber das bekomme ich nicht hin, Google hat auch nicht geholfen...
Weiß vllt. jemand weiter?
Danke im vorraus,
Mfg Marc
Ganz einfach:
Stell bei AutoCompleteSource "AutoComplete.FileSystem" ein, dann sollte es funktionieren 😃
Lg Marc
Ich habe es nun hingebracht, aber... Nicht böse gemeint, die Lösung möchte ich jetzt eigentlich nicht posten, das ist zu viel Arbeit beim Erklären, warum das so ist... Ich schreibe es morgen rein 😉
Mfg Marc
Bitconverter bzw binaryreader wird dir 0xF5070000 ausspucken
Und das ist das Problem... Ich brauche genau DIESE Reihenfolge... 😦
und, @femaref: sorry, ich habe den code vorhin nur theorethisch geschrieben, und nicht darauf geachtet, sorry...^^
Hallo Leute!
Zuerst: Habe die SuFu und Google schon genutzt, aber nichts gefunden
Ich habe derzeit ein Problem, bezüglich der "Verkettung von Bytes"...
StreamReader reader = new StreamReader(file, Encoding.Default);
string readed = reader.ReadToEnd(); // Die Datei ist nur 4 bytes lang
byte[] bytes = Encoding.Default.GetBytes(readed);
anschließend sollen die 4 bytes verkettet werden, also, wenn ich z.B. "00 00 07 F5" einlese, möchte ich als Ausgabe "0x7F5" haben... und das 0x7F5 soll dann in einen int umgerechnet werden....
Hat vllt. jemand eine Idee?
Danke im Voraus!
Mfg Marc
Google mal nach CircleDock
Das ist sogar in C# geschrieben, und der Sourcecode ist verfügbar 😉
Mfg Marc
edit: http://circledock.wikidot.com/ Bitte sehr 😉 Ich hoffe, es gefällt dir so 😉
Das habe ich mir auch schon gedacht, aber das problem ist, das ich diese CDATA abschnitte in der XML verarbeiten muss...
Ich denke, ich versuche mal das ganze mit einem StreamReader Zeile für Zeile... Diese CDATA-Abschnitte müssen teilweise (das ist ja das Problem) mit gewissen Algorithmen übersetzt werden... Whatever, ich probier das einfach mal 😉
Danke für den Tipp 😃
Mfg Marc
hmmm 😦
Ziemlich blöd... Kann man denn nicht irgendwie umstellen, das er nicht prüfen soll?
Mfg Marc