Laden...
U
UnrealNemesiS myCSharp.de - Member
Fachinformatiker für Anwendungsentwicklung D - Leipzig Dabei seit 26.11.2004 105 Beiträge
Benutzerbeschreibung

Forenbeiträge von UnrealNemesiS Ingesamt 105 Beiträge

10.08.2008 - 09:27 Uhr

Hallo capcom,

schau dir mal die Select Methode an. Die sollte dir helfen:
http://msdn.microsoft.com/en-us/library/32e9b0k1.aspx

Grüße Tobscher

29.07.2008 - 18:52 Uhr

Hallo Scarecraft,

schau dir mir Environment.SpecialFolder in Verbindung mit Environment.GetFolderPath() an.

Grüße Tobscher

03.07.2008 - 14:41 Uhr

Hallo,

vielleicht hilft dir ja der DSOFramer weiter.

Ciao

06.06.2008 - 13:06 Uhr

Ich glaube das stellt man ein unter:
Eigenschaften vom Setup-Projekt -> Erforderliche Komponenten -> Haken setzen

31.05.2008 - 10:59 Uhr

Probier mal eine generische Liste von Labels. Da spielt die Größe keine Rolle. Per Add und Remove kannst du die Liste beliebig ändern.

List<T> (generische Klasse)

Grüße Tobias

24.05.2008 - 11:39 Uhr

Hallo,

wie du welche Methode richtig importierst erfährst du hier: http://pinvoke.net

Liebe Grüße.

22.05.2008 - 20:35 Uhr

Hallo hab bei google eine Tabelle gefunden:
http://www.teratrax.com/sql_guide/data_types/sql_server_data_types.html

Weiß aber nicht, ob die genau ist. Von Microsoft gibt's da aber auch eine Tabelle.

EDIT:
Hier die Seite von Microsoft:
Speziell für int: http://msdn.microsoft.com/en-us/library/ms187745.aspx
Allgemein: http://msdn.microsoft.com/en-us/library/ms187752.aspx

20.05.2008 - 15:54 Uhr

Stichworte: LateBinding, Reflection

13.05.2008 - 16:08 Uhr

Der Stern (*) muss bei AssemblyVersion rein. (Vergleich: http://msdn.microsoft.com/de-de/library/system.reflection.assemblyversionattribute.aspx)

Auslesen dürfte so funktionieren:


Version v = Assembly.GetExecutingAssembly().GetName().Version;
lblVersion.Text = string.Format("v{0}.{1}.{2}.{3})", v.Major, v.Minor, v.Build, v.Revision);

Grüße

13.05.2008 - 14:57 Uhr

Stichwort: DockPanel Suite

Grüße

06.05.2008 - 17:17 Uhr

Im Auswahldialog für Verweise (Reiter "Durchsuchen") kannst du .dll-, .tlb-, .olb-, .ocx-, .exe- und .manifest-Dateien auswählen.

Falls du auf ein Projekt aus deiner Projektmappe verweisen willst, kannst du das im Reiter "Projekte" auswählen.

Grüße Tobias

04.05.2008 - 16:03 Uhr

Hallo SunboX,

da sollte dir Reflection helfen.

Hab ein VB-Beispiel gefunden. Sollte aber in C# ähnlich funktionieren.

http://www.devx.com/vb2themax/Tip/19599

Liebe Grüße
Tobias

29.04.2008 - 21:24 Uhr

Die Suche nach "ListView RightClick Header" ergab 61.300 Treffer bei google.de

Erster Treffer: Handling Right-Click Events in ListView Column Headers

28.04.2008 - 16:19 Uhr

Zu beachten ist vllt. auch, dass "\n" vielleicht nicht immer richtig ist.

Vergleich: Environment.NewLine

04.04.2008 - 18:41 Uhr

Bei codeproject gibt's auch einen "CSVReader". Vielleicht ist der brauchbar:

Hoffe das hilft weiter.

04.04.2008 - 18:36 Uhr

Vielleicht hast du ja auch die Möglichkeit dein Programm auf verschiedenen Zielsystemen auszuprobieren und du notierst dir die Leistungsindizies.

Dann weißt du am Ende genau bei welchem Leistungsindex dein Programm "perfekt" läuft.

12.02.2008 - 19:44 Uhr

Schau mal in der Klasse Directory. Da gibt es Funktionen, die dir Laufwerke zurückgibt.
Zum Beispiel: Directory.GetLogicalDrives()

01.12.2007 - 11:12 Uhr

Hallo aono,

vergleiche doch die Variable procName mit dem aktuellen Schleifenwert. Falls der identisch ist, läuft dein Prozess, wenn nicht prüfst du im nächsten Schleifendurchlauf. Wenn die Schleife komplett durchlief und du nichts gefunden hast, läuft dein Prozess auch nicht.

Grüße Tobias.

29.11.2007 - 14:36 Uhr

Hallo!

Extras -> Optionen... -> Projekte und Projektmappen -> Allgemein -> Aktives Element im Projektmappen-Explorer überwachen

20.11.2007 - 20:21 Uhr

Aus Int32 kannst du int machen.

20.11.2007 - 19:59 Uhr

Hallo!

Denkst du dass Decimal der richtige Datentyp für eine Anzahl von Bytes ist? Decimal ist doch für Kommazahlen.

Aber gibt's 12,8 Bytes bspw.?

Ansonsten könntest du die Umrechnung bestimmt auch in einer Schleife machen. Und jenachdem wieviele Durchläufe du hast, kannst du ja dann Datentyp anhängen.

[ADDED]
Ansonsten gibt's hier so eine Funktion (zwar für PHP) die sowas kann, was du willst. Das Umstellen dürfte ja kein Problem sein:
http://www.selfphp.info/kochbuch/kochbuch.php?code=61
[/ADDED]

07.11.2007 - 19:09 Uhr

Hallo Nullpunkt,

frag doch mal den Autor des Code-Schnipsels. Codeproject hat am Ende der Seite einen Comments-Bereich.

http://www.codeproject.com/csharp/gradientforms_easyway.asp

Ciao

15.09.2007 - 11:54 Uhr

Hallo laola,

vielleicht ist das ja was für dich http://www.codeproject.com/csharp/CSSParser.asp .

Grüße Tobias.

24.07.2007 - 22:24 Uhr

Auf alle Fälle heißt die Eigenschaft Checked. Übrigens kannst du das == true weglassen.

24.07.2007 - 12:58 Uhr

Die Eigenschaft Cancel gibt es. Siehe hier:

22.07.2007 - 09:12 Uhr

Hallo barzelona,

schau dich mal in der Toolbox um, da gibt es eine Komponente, die deine Controls um Tooltips erweitert.

Grüße
Tobias H.

20.07.2007 - 07:12 Uhr

Hi Ayke,

es gibt eine Auflistung aller Prozesse. Schau dir mal die Klasse Process an. Da dürftest du was finden.
Wenn du so einen Prozess hast, kannst du die Namen ganz normal vergleichen.

Hoffe ich konnte dir helfen.

Tobias H.

EDIT: http://msdn2.microsoft.com/en-us/library/system.diagnostics.process.aspx

16.05.2007 - 23:18 Uhr

Hallo IMGregor,

ich glaube das geht im Setup-Projekt unter "Benutzerdefinierte Aktionen". Unter Eigenschaften einer benutzerdefinierten Aktion kann man auch Argumente angeben.

16.05.2007 - 10:07 Uhr

Ich habe in meinem Projekt noch ein Beispiel für CodeCompletion (es ist aber auch eins im SharpDevelop-Source enthalten). Ich werde das mal aufbereiten und dann hier rein stellen.

16.05.2007 - 09:47 Uhr

Hallo Robertico,

ich habe mich mal ein wenig mit dem Editor beschäftigt. Ich kann dir ein paar Tipps geben:

Zum Bearbeiten:
Um Tätigkeiten wie Ausschneiden, Kopieren, Einfügen usw. durchzuführen, brauchst du den TextAreaClipboardHandler.

Hier mal ein bisschen Beispiel-Code:


TextAreaClipboardHandler ch = fp.TextEditor.ActiveTextAreaControl.TextArea.ClipboardHandler;

// Prüfen, ob Kopieren möglich ist
ch.EnableCopy;
// Prüfen, ob Ausschneiden möglich ist
ch.EnableCut;
// Prüfen, ob Löschen möglich ist
ch.EnableDelete;
// Prüfen, ob Einfügen möglich ist
ch.EnablePaste;
// Prüfen, ob Alles markieren möglich ist
ch.EnableSelectAll;

Die Ausführung erfolgt dann über die einzelnen Funktionen:


TextAreaClipboardHandler ch = fp.TextEditor.ActiveTextAreaControl.TextArea.ClipboardHandler;

ch.Copy(sender, e);
ch.Cut(sender, e);
ch.Delete(sender, e);
ch.Paste(sender, e);
ch.SelectAll(sender, e);

Die Definition der Methoden will einen Sender und EventArgs.

Um zu prüfen, ob man Wiederholen oder Rückgängig machen kann, kannst du folgenden Code verwenden:


// Rückgängig verfügbar?
fp.TextEditor.EnableUndo;

// Wiederholen verfügbar?
fp.TextEditor.EnableRedo;

Ausführen kannst du die Funktion dann mit folgendem Code:


TextEditor.Undo();
TextEditor.Redo();

Zum Highlighting:
Du kannst entweder den Editor das Highlighting übernehmen lassen:


string p = "Pfad zur Datei";
TextEditor.Document.HighlightingStrategy = HighlightingStrategyFactory.CreateHighlightingStrategyForFile(p);

oder du machst es selber, über die entsprechenden xshd-Dateien, die dir vorliegen (das sind die Syntaxdefinitionen). So kannst du die xshd-Dateien auch in einer Funktionen erstellen und deine eigenes Highlighting erstellen. Hier am Beispiel von SQL:


string dir = "Verzeichnis in dem die *-mode.xshd Dateien liegen";
FileSyntaxModeProvider fsmProvider;
if (Directory.Exists(dir))
{
fsmProvider = new FileSyntaxModeProvider(dir);
HighlightingManager.Manager.AddSyntaxModeFileProvider(fsmProvider);
txtSQL.SetHighlighting("SQL";);
}

Der obere Code versucht die Definition von SQL aus dem entsprechendem Verzeichnis zu laden. Dort muss sich eine xshd-Datei mit der entsprechenden Definition befinden.

Zum Folding:
Um Folding zu verwenden musst du dir eine Methode schreiben, dir dir die FoldMarker aktualisiert:


private void UpdateFoldMarkers()
{
List<FoldMarker> foldMarkerList = new List<FoldMarker>;();
Stack<int> st = new Stack<int>;();
for (int i = 0; i < TextEditor.Document.TextLength; i++)
{
char ch = TextEditor.Document.GetCharAt(i);

if (ch == '{')
{
st.Push(i); // remember position of '{'
}
else if (ch == '}' && st.Count > 0)
{
int start = st.Pop(); // get position of matching '{'
int length = i - start + 1; // calculate distance between '{' and '}'
foldMarkerList.Add(new FoldMarker(TextEditor.Document, start, length, "...", false));
}
}
TextEditor.Document.FoldingManager.UpdateFoldings(foldMarkerList);
}

Die Update-Funktion kannst du dann zum Beispiel beim Document-Changed aufrufen, oder über einen Timer aller 2 Sekunden oder so.

Wenn du die Funktion noch ein wenig anpasst, kannst du auch andere Dinge zusammenfalten lassen.

Falls du Klammern oder so etwas automatisch beim Tippen eingeben willst, kannst du den folgenden Code verwenden:


void TextArea_KeyPress(object sender, KeyPressEventArgs e)
{
int caretPosition = tac.Caret.Offset;

switch (e.KeyChar)
{
case '[': tac.Document.Insert(caretPosition, "]";);
break;
case '{': tac.Document.Insert(caretPosition, "}";);
break;
case '\"': tac.Document.Insert(caretPosition, "\"";);
break;
case '\'': tac.Document.Insert(caretPosition, "\'";);
break;
case '(': tac.Document.Insert(caretPosition, ";)";);
break;
}

tac.TextArea.Caret.Position.Offset(1, 2);
}

tac ist das ActiveTextAreaControl. Ich habe das mal in einer Variable zwischengespeichert, da ich das öfters brauche. An dieser Stelle könntest du auch noch prüfen, ob das nächste Zeichen bereits ein schließendes Tag ist (außerdem muss die Anzahl der Tags stimmen) und dann nicht einfügen, wie es bspw. das Visual Studio macht.

Den Cursor-Modus erhälst du wie folgt:


tac.Caret.CaretMode;
// mögliche Varianten wären CaretMode.OverwriteMode und CaretMode.InsertMode

Laden und Speichern von Dateien:


string path = "Pfad zur Datei";
TextEditor.LoadFile(path);
TextEditor.SaveFile(path);

Ich hoffe ich konnte dir erstmal helfen.

Mit freundlichen Grüßen
Tobias H.

14.05.2007 - 15:25 Uhr

Hallo Community!

Ich habe ein Webbrowser-Control in meine Anwendung eingebaut. Dieses Fenster ist jedoch nicht mein Hauptfenster. Nun habe ich das Problem, wenn eine Seite neu geladen wird erhält das Fenster mit dem Webbrowser-Control den Fokus. Das hat zur Folge, dass im Hauptformular Kontextmenüs wieder zu gehen, Selektierungen verschwinden, o. a..

Des Weiteren kann nicht mehr weitergearbeitet werden, da davon auch andere Anwendungen betroffen sind. Zum Beispiel geht auch das Start-Menü von Windows wieder zu, wenn das Fenster sich den Fokus holt.

Ist es irgendwie möglich, dem Fenster zu verbieten, dass es sich den Fokus holt (ohne dass das Laden der Seite dadurch entfällt)?

11.05.2007 - 12:38 Uhr

Hallo!

Wie in einem anderen Thread ([PowerPoint] Dauer einer Folie auslesen) bereits beschrieben habe ich das Problem, dass wenn ich meine PowerPoint-Präsentation in einem Extra Formular anzeige, die Präsentation stehen bleibt, sobald das Fenster den Fokus verliert. Wenn ich jetzt einen Klick in das Fenster mache (also Quasi in die Präsentation, läuft diese weiter).

Gibt es eine Möglichkeit diesen Klick in die Präsentation mittels Code auszuführen, damit meine Präsentation nicht stehen bleibt.

Möchte gerne eine Präsentation abspielen und nebenbei weiterarbeiten (habe ein Multimonitor-System).

Mit freundlichen Grüßen
Tobias H.

09.05.2007 - 12:24 Uhr

Ich kann mein Problem ja mal ein bisschen detailierter beschreiben.

Mein Hauptproblem ist, dass ich mehrere PowerPoint-Präsentationen zur gleichen Zeit anzeigen möchte (Multimonitor). Was bis jetzt mit folgendem Code funktionert:


oPPTApp = new Application();
oPPTApp.DisplayAlerts = PpAlertLevel.ppAlertsNone;

oPPTPres = oPPTApp.Presentations.Open(this.path, MsoTriState.msoFalse, MsoTriState.msoFalse, MsoTriState.msoFalse);
if (oPPTPres != null)
{
oPPTPres.SlideShowSettings.ShowType = PpSlideShowType.ppShowTypeSpeaker;
oPPTPres.SlideShowSettings.ShowWithAnimation = MsoTriState.msoTrue;
oPPTPres.SlideShowSettings.ShowWithNarration = MsoTriState.msoFalse;
oPPTPres.SlideShowSettings.LoopUntilStopped = MsoTriState.msoTrue;

wnd = oPPTPres.SlideShowSettings.Run();
oPPTApp.ShowWindowsInTaskbar = MsoTriState.msoFalse;

wnd.Width = this.Width;
wnd.Height = this.Height;

screenClasshWnd = FindWindow("screenClass", IntPtr.Zero);

SetParent(screenClasshWnd, this.Handle);

FormDisplayPP_Resize(this, new EventArgs());
}

(In FormDisplayPP_Resize wird MoveWindow ausgeführt.)

Dieser Code ist in meinem Formular und "fängt" das PowerPoint-Fenster quasi ein.

Jedoch habe ich jetzt das Problem sobald mein Hauptprogramm den Fokus bekommt, bleibt eine der Präsentationen stehen.

Ich hatte jetzt versucht die Folien selber weiterschalten, aber die bleiben trotzdem stehen.

Mir ist auch schon aufgefallen, dass wenn ich eine PowerPoint-Präsentation direkt mit PowerPoint anzeige, diese auch stehen bleibt, wenn Sie den Fokus verliert.

Nun meine Frage: Habt Ihr irgendeine Idee, wie man die PPP dazu bringt weiterzulaufen?

09.05.2007 - 11:04 Uhr

Hallo!

Ist es irgendwie möglich auszulesen wie lange eine Folie angezeigt wird. Ich möchte die Folien nämlich selber weiterschalten. Dazu brauche ich aber die Anzeigedauer.

Beispiel:

Die erste Folie hat eine Animation, die 1 Sekunde geht und außerdem ist der Folienübergang auf 2 Sekunden eingestellt.

Wie komme ich an die Zahl 3 Sekunden?

Mit freundlichen Grüßen
Tobias H.

01.04.2007 - 16:31 Uhr

Deine Bedingung ist falsch. args.Length muss doch größer als 0 sein.

30.03.2007 - 16:36 Uhr

Hallo baer999,

das .NET Framework bringt die RichTextBox mit. Die kann sowas.

Ciao

28.01.2007 - 17:06 Uhr

Na ja, das liegt daran, dass ich mehrere Monitore angeschlossen habe und auf jedem eine anderen PowerPoint-Präsentation laufen soll.
Die Webbrowser-Komponente hat noch einen weiteren Nachteil: Immer wenn die Folie wechselt kriegt das Formular den Fokus. Wenn jetzt 2-3 PPP laufen, kann man das Hauptprogramm so gut wie nicht mehr verwenden.

Ach ja, jede PPP hat ihr eigenes Formular.

22.01.2007 - 16:22 Uhr

Hallo!

Ich möchte PowerPoint-Präsentationen auf einem Formular anzeigen. Dies klappt mit der Webbrowser-Komponente ganz gut. Wenn ich eine anmache gibt es keine Probleme. Erzeuge ich aber ein neues Fenster in dem wieder eine PowerPoint-Präsentation abgespielt wird (kann auch die gleiche sein, spielt keine Rolle), so läuft die erste nicht mehr weiter.

Beispiel:
PPP1 wird geöffnet und läuft von Folie 1-5
PPP2 wird geöffnet läuft von 1-2
PPP1 und PPP2 bleiben stehen und laufen nicht weiter (die restl. Folien werden nicht angezeigt)

Außerdem: Starte ich zwei Internet Explorer Instanzen und lade dort jeweils eine PPP, so laufen beide korrekt bis zum Schluss ab.

Könnt ihr mir sagen warum die Webbrowser-Komponente sich so verhält? Oder gibt es noch andere Möglichkeiten PPP in einem Formular anzuzeigen?

Mit freundlichen Grüßen
th

11.01.2007 - 17:14 Uhr

public void test(string test, string test2)
{
MessageBox.Show(test, test2);
}

public void test(string test)
{
test(test, string.Empty);
}

20.12.2006 - 13:02 Uhr

Also gibt es nur die Möglichkeit, dass dieser Schutz mit mehreren Komponenten arbeitet? So wäre gewährleistet, dass eine oder mehrere ausfallen können.
Man könnte ja auch evtl. mit dem Kunden regeln, dass er ein bestimmte Anzahl von maximalen Lizenzen erhält, falls die Komponenten tatsächlich mal ausfallen.
Nicht dass der dann jeden Monat nach einer neuen Lizenz fragt.

20.12.2006 - 11:34 Uhr

Hallo UnrealNemesiS,

Die Interessentenkreis ist recht klein und die Anwender sind jetzt keine PC-Experten. Nur damit ihr evtl. abschätzen könnt, wie groß der Aufwand max. sein muss, um das Programm zu schützen.

da muss ich nun sagen, einen Key-Generator zu basteln benötigt enormes Know-How, und würde sich nun Deiner zitierten Aussage widersprechen.

Na ja der hat vielleicht einen Freund der das kann 8)

Nein, aber was ich damit sagen will. Ich brauche ja einen einheitlichen Schutz für alle meine Programme. Daher dachte ich daran, die Logik des Schutzmechanismus in eine DLL auszulagern. Wie hindere ich jetzt den Benutzer daran, nicht diese DLL zu verwenden? Um die einzelnen Funktionen dieser DLL zu benutzen, brauch man nicht unbedingt so viele Kenntnisse.

20.12.2006 - 11:08 Uhr

Wie wäre denn der genaue Ablauf?

Hier mal wie ich es mir denke:

  1. Kunde erhält Produkt von uns und es wird beim Start (oder bei der Installation, bin mir nicht sicher) eine Nummer generiert (zB. aus der Prozessor-ID)
  2. Diese Nr. wird an uns zurückgeschickt und wir erstellen einen Freischaltcode.
  3. Das Programm kennt den selben Algorithmus wie unser Aktivierungscodegenerator und kann prüfen, ob der Code gültig ist.
  4. Der Code wird in die Registry geschrieben.
  5. Bei jedem Start der Anwendung wird auf Vorhandensein und Gültigkeit des Wertes geprüft, nur dann startet die Anwendung.

Nun habe ich eine weitere Frage. Mein Programm brauch ja den gleichen Algorithmus, wie mein Aktivierungscodegenerator. Wie schütze ich diesen Algorithmus vor unbefugten Benutzern? Ich möchte ja nicht, dass dann jemand meine Funktionen verwendet und sich bspw. einen KeyGenerator bastelt.

Ich sehe schon dieses Thema ist nicht so einfach :S

20.12.2006 - 10:53 Uhr

Funktioniert das dann auch mit einem RAID-System?

20.12.2006 - 09:35 Uhr

Hallo Community!

Ich bin an dem Punkt, dass ich mein Programm vor der Weitergabe schützen muss. Nun wollte ich fragen, was ihr da für Ansätze kennt, wie man so etwas realisieren kann.

Folgendes Szenario: Programm wird an den Kunden ausgeliefert und ist nur für ihn bestimmt. Nun soll es nicht so sein, dass er den Anwendungsordner oder das Setup zu jemandem kopiert und es dort dann auch sofort lauffähig ist.
Ich hatte schon daran gedacht irgendeine Komponente aus dem System (die eindeutig ist) in die Prüfung mit aufzunehmen.

Die Interessentenkreis ist recht klein und die Anwender sind jetzt keine PC-Experten. Nur damit ihr evtl. abschätzen könnt, wie groß der Aufwand max. sein muss, um das Programm zu schützen.

18.12.2006 - 12:16 Uhr

Hat keiner eine Idee?

15.12.2006 - 09:02 Uhr

Hallo Community!

Ich habe das Problem, dass ich eine DVD in C# abspielen muss. Ich habe dazu auch zahlreiche Beispiel gefunden, jedoch haben alle ein Problem. Wenn ich mehrere Monitore angeschlossen habe, kann die DVD immer nur an dem Monitor abgespielt werden an dem sie auch gestartet wurde.

Hab das Abspielen schon per DirectShow probiert, klappt auch, jedoch kann man das Formular nicht auf einem anderen Bildschirm platzieren. Wenn ich probiere eine DVD in einem WindowsMediaPlayer-Objekt () abzuspielen, zeichnet er mir auf den zweiten Monitor den Media Player und auf den ersten das Video unabhängig vom Formular. Es gibt auch von Microsoft eine COM-Komponente (MSWebDVD und MSVidCtl). Jedoch ist keines Multi-Monitor fähig. MSVidCtl erlaubt sogar nur eine Instanz, was mich auch nicht weiter bringt.

Die Methode, die am besten funktioniert hat, war die per DirectShow.

Zusammenfassung:
Ich möchte ein Formular in dem eine DVD abgespielt wird auf Monitor 1 öffnen und auf Monitor 2 verschieben. Die Anzeige soll auf beiden Monitoren funktionieren.

Vielen Dank für eure Hilfe!

Edit: Gibt es keine Lösung für mein Problem?

06.12.2006 - 16:04 Uhr

Wenn du dir nicht sicher bist, dann klick dir das Statement doch über den Abfrage-Designer zusammen. Du kannst die beiden Statements vergleichen und du weißt wo dein Fehler liegt.

02.11.2006 - 14:24 Uhr

Jede Zelle hat doch eine Value-Eigenschaft. Da kommst du an den Inhalt der Zelle. So dürftest du auch an den Button kommen. Kann sein, dass du evtl. noch casten musst.