Laden...
Avatar #avatar-2860.gif
Benutzerbeschreibung

Forenbeiträge von tonka Ingesamt 373 Beiträge

20.05.2008 - 08:06 Uhr

Habs jetzt. DANKE


...

[DllImport("user32.dll")]
static extern int GetForegroundWindow();
[DllImport("user32")]
private static extern UInt32 GetWindowThreadProcessId(Int32 hWnd, out Int32 lpdwProcessId);

private Int32 GetWindowProcessID(Int32 hwnd)
{
    Int32 pid = 1;
    GetWindowThreadProcessId(hwnd, out pid);
    return pid;
}

private String GetActiveProcessName()
{
    Int32 hwnd = 0;
    hwnd = GetForegroundWindow();
    String appProcessName = Process.GetProcessById(GetWindowProcessID(hwnd)).ProcessName;
    String appExePath = Process.GetProcessById(GetWindowProcessID(hwnd)).MainModule.FileName;
    String appExeName = appExePath.Substring(appExePath.LastIndexOf(@"\") + 1);
    String ttt = appProcessName + " | " + appExePath + " | " + appExeName;
...
}

... 

MfG
Tonka

20.05.2008 - 07:48 Uhr

Hallo,

ich habe ein Problem. Ich möchte gerne von dem in Windows aktiven Fenster den dazugehörigen Process ermitteln. Ich habe jetzt schon eingige Zeit versucht das zu realisieren, habs aber bis jetzt nicht zusammengebracht.

Beispiel: Man hat ein Notepad-Fenster offen und dieses ist aktiv. Mit GetForeGroundWindow bekommen ich das aktive fenster. und was dann? GetWindowText bringt mir nur den Fensternamen, ich hätte aber gerne den Processnamen, der das Fenster zeichnet, bei notepad "notepad.exe".

Weiß hier irgendjemand rat?

MfG
Tonka

29.04.2008 - 07:39 Uhr

danke für die Antwort. ich werds mal mit SwapChains probieren. Ein MDX-Control habe ich mir schon gebaut, jedoch muss ich relativ viele Controls anzeigen und mir ist es lieber, wenn ich alles in einem control zeichne!

MfG
Tonka

28.04.2008 - 07:28 Uhr

hy,

ich meinte nicht DirectX 2 sonder ".... DirectX, 2 verschiedene Bereiche". Ich arbeite mit normalen MDX. Was macht die Sprite Klasse genau?

MfG
Tonka

26.04.2008 - 15:25 Uhr

Hy@all,

ich Versuche gerade mit DirectX zwei unabhängige Bereiche in einem Fenster zu zeichnen (siehe Bild), bei der beide Bereiche eine seperate Zoomfunktion besitzen, d.h. wenn der Mouse-Cursor über dem Bild 1 ist, so kann nur dieser Bereich mit dem Mausrad gezoomt werden. Das erste Bild representiert ein selbst gezeichnetes Bild (Pixel für Pixel), das ein Diagramm ist, also mit Skala und solchen Dingen. Das Bild 2 representiert einen Werte-Balken. Wie realisiert man so etwas?

Außderm würde mich interesseieren wie man DirectX einzelene Pixel, sowie gefüllte Rechtecke zeichenen kann. Derweil zeichene ich gefüllte Rechtecke mit zwei gefüllten Dreicken!

MfG
Tonka

28.03.2008 - 19:45 Uhr

Benutzt du die DockPanelSuite? Dann probier doch einfach mal ein DockPanel in eine DockContent-Form zu stopfen.

Ich denke ja, diese Libary habe ich vor langer zeit mal gefunden, werd das aber bald einmal ersetzten. Das mit den Content funktioniert auch nicht (habe ich schon probiert gehabt).

Das mutet mir sowieso ein wenig komisch an was du da bastelst (...verschachtelte Forms und so...) ich denke dadurch wird die Übersichtlichkeit nicht erhöht.

Aus fremder Sicht kann ich mir vorstellen, dass das so aussieht, jedoch muss ich sagen, dass bisher (alte Software) alles in MDI-Form stattfindet. Das Problem ist, das oft 50 bis 100 DirectX Fenster gleichzeitig offen sind und alle Fenster hintereinander und nicht mehr gut steuerbar sind. Nun habe ich von meinem Chef die Anweisung bekommen, mir ein alternative einfallen zu lassen (die sollte weder Bildschirme ≥ 40 Zoll oder einen zweiten Bildschirm enthalten 🙂 ). Jetzt hätte ich so eine Art Visual Studio-Oberfläche geplant, wo eben in den verschiedenen Document-Container einzelne MDI-Container sind.

Wie macht Microsoft die die MDI-Container eigentlich, weiß das wer?

MfG
Tonka

28.03.2008 - 09:42 Uhr

Hy,

also es funktioniert nicht, wenn ich ein MDI-Form in die Panel.Controls stopfe.

MDI-Containerformulare müssen sich auf der obersten Ebene befinden.
Parametername: value

Der Code wie Oben bleibt gleich, nur testfrom ist jetzt ein MDI-Container!

Wie meinst du das mit SetStyleLong? Könntest du mir ein Code-Snippet senden, wie du das meinst?

Warum ich das mache:
Ich habe eine Art Visual Studio nachgebaut. Wo man normalerweise Text (sprich Source Code schreibt) möchte ich jetzt in jedem Register einen "MDI-Container" (siehe Bild), denn ich muss sehr sehr viele Fenster verwalten, wenn ich das nur mit einem normalen einzelen MDI-Form mache, verliert man leider sehr schnell die Übersicht .

MfG
Tonka

27.03.2008 - 18:02 Uhr

Hy@all,

ich würde gerne ein Panel als MDI-Container benutzten. So weit so gut, das Form hab ich schon ins Panel gebracht, es lässt sich verschieben und vergrößern, jedoch regagiert das eingefügt Form nicht (es wird kein Event ausgelöst). Somit werden die Scrollbars nicht eingeblendet, wenn man das Fenster ein bisschen außerhalb hat, beim Resize wird der Inhalt des Forms nicht Resized etc. .

Weiß jemand wie man soetwas realisiert, es muss nicht unbedingt ein Panel sein, kann auch irgend ein anderes Element sein, das Forms beinhalten kann (aber kein TopLevel-Form)?


...
testform frm = new testform();
frm.TopLevel = false;
frm.Visible = true;
PanelMain.Controls.Add(frm);
...

MfG
Tonka

17.03.2008 - 16:58 Uhr

Hallo,

wie zeichnen ich mit SharpGL Text? Welche Befehle brauche ich?

MfG
Tonka

16.03.2008 - 17:24 Uhr

Witzig, wenn ich das ortho weglasse und dann das Rechteck folgendermaßen zeichen, so zeichene ich Pixelgenau, aber der Maßstab kann da nicht ganz stimmen, das Fenster ist keine 1000 Pixel groß (siehe Bild)!


Gl.glColor3f(0.0f, 0.0f, 1.0f);
Gl.glRectf(0, 0, 1000, 1000);

MfG

16.03.2008 - 17:12 Uhr

Wenn ich das


Gl.glOrtho(0.0, this.visualizationControl1.Width, 0.0, this.visualizationControl1.Height, -1.0, 1.0);

lösche wird nichts mehr gezeichnet, warum?

16.03.2008 - 16:27 Uhr

Hy, danke für deine Antwort.

Pixelgenau zeichne ich ja nur im OpenGL-Fenster. Ich meine mit Pixelgenau zeichnen, das die Pixelauflösung vom OpenGL-Fenster und vom Control ident sind und das sind sie momentan nicht. Ich hoff das hier sagt dir mehr! Das ist alles was ich als einsehbaren Code habe.

Code vom VisualizationControl :


using System;
using System.Collections.Generic;
using System.ComponentModel;
using System.Drawing;
using System.Data;
using System.Text;
using System.Windows.Forms;

using Tao.OpenGl;
using Tao.Platform.Windows;
using Tao.FreeGlut;

namespace testTao
{
    public partial class VisualizationControl : SimpleOpenGlControl
    {
        public VisualizationControl()
        {
            InitializeComponent();

            this.Disposed += new EventHandler(VisualizationControl_Disposed);

            this.InitializeContexts();

            
        }

        void VisualizationControl_Disposed(object sender, EventArgs e)
        {
            this.DestroyContexts();
        }

        public void Init()
        {
            Gl.glClearColor(0.0f, 0.0f, 0.0f, 1.0f);
            Gl.glShadeModel(Gl.GL_SMOOTH);
        }
   }
}


MfG
Tonka

16.03.2008 - 10:28 Uhr

Hy,

eins vorweg: Ich bin ein absoluter Anfänger in Sachen OpenGL!

Ich arbeite in C# g mit dem TAO Framework. Ich möchte ein 2D Diagramm in einem Control bauen. Dieses Diagramm soll sich bei einer Vergrößerung/Verkleinerung automatisch an das Fenster anpassen, d.h. der Abstand von jeder Seite des Diagramms zum Rand des Controls sollte immer konstant bleiben (z.B. der linke Rand des Diagramms soll immer 100 Pixel Abstand zum Rand des Controls haben), jedoch gelingt mir dieses nicht. Jedesmal wenn ich das Bild verändere, so ist der Abstand nicht konstant.

Meine Frage: Wie kann ich mit OpenGL Pixelgenau zeichnen?

Hier mein einfacher Soure-Code (das visualizationControl ist eine Klasse, die einfach nur von SimpleOpenGlControl abgeleitet ist und im Konstruktor den Context Initialisiert):


using System;
using System.Collections.Generic;
using System.ComponentModel;
using System.Data;
using System.Drawing;
using System.Text;
using System.Windows.Forms;
using Tao.OpenGl;
using Tao.Platform.Windows;
using Tao.FreeGlut;

namespace testTao
{
    public partial class Form1 : Form
    {       

        public Form1()
        {
            InitializeComponent();

            this.visualizationControl1.Init();
            this.visualizationControl1.Paint += new PaintEventHandler(visualizationControl1_Paint);

        }

        void visualizationControl1_Paint(object sender, PaintEventArgs e)
        {
            Display();   
        }

        private void Display()
        {
            Gl.glClear(Gl.GL_COLOR_BUFFER_BIT | Gl.GL_DEPTH_BUFFER_BIT |Gl.GL_DOUBLEBUFFER );
            Gl.glLoadIdentity();
            Gl.glClearColor(1.0f, 1.0f, 1.0f, 0.0f);
            Gl.glClear(Gl.GL_COLOR_BUFFER_BIT);
            Gl.glColor3f(0.0f, 1.0f, 0.0f);
            Gl.glOrtho(0.0, this.visualizationControl1.Width, 0.0, this.visualizationControl1.Height, -1.0, 1.0);

            Gl.glColor3f(0.0f, 0.0f, 1.0f);
            Gl.glRectf(10, 10, 100, 100);

            Gl.glFlush();
        }

        
    }
}

Um mein Porblem ein bisschen besser zu veranschaulichen, habe ich ein Bild angehängt. Die zwei Oberen Bilder zeigen wie ich es momentan habe aber nicht haben will. Die untere zwei zeigen den Wunschzustand.

Mfg
Tonka

15.02.2008 - 07:39 Uhr

Danke für eure Antworten.

Mein Fazit: Es gibt nur ein 32Bit Visual Studio und kein 64Bit Visual Studio. Mit der 32 Bit Version kann man sowohl für x64 als auch x86 entwickeln (egal ob es auf einer x86 Windows oder auf einem x64 Windows installiert ist).

DANKE

MfG
Tonka

14.02.2008 - 11:30 Uhr

Hallo,

ich möchte mir gerne Visual Studio 2008 Pro kaufen. Ich habe mir bei Microsoft-HP und anderen Infos darüber durchgelesen uns entschieden das ich mir VS2008 kaufe. Ich brauche VS2008 für x64 und x86 PCs - auf der Microsofthomepage steht, dass VS2008 Pro beide unterstützt, jedoch wenn ich bei Händlern nachsehen (z.B. amazon), dann steht dort immer was von 32-Bit und das verwirrt mich, denn ich möchte nichts falsches bestellen.

Was soll das heißen? Ist das die richitge Version?

MfG
Tonka

07.02.2008 - 22:06 Uhr

Hy,

eins vorweg: Ich habe so ziemlich alle Forumeinträg hier über COM etc. gelesen. Einen Teil verstehe ich, aber die Verbindung zwischen COM und meiner Applikation verstehe ich nicht ganz 😦.

Ich möchte gerne meine Applikation mittels Scripten und externen Programmen über das COM-Interface fernsteuern (ein kleines, in PAINT "gemaltes" Diagramm, ist angehängt). Nun habe ich in den diversen Forumseinträgen gelesen, wie man das COM so ungefähr schreibt und wie man es registriert. Jedoch verstehe ich einige Teile nicht so ganz.

1.) Einmal schreibt RainBird das man das COM nicht in sein Applikation Assembly einbinden soll, warum???

2.) Ich möchte meine *.exe fernsteuern, also muss ich eine DLL mit dem interface und etc. anlegen. Bei den ganzen Forumseinträgen steht jetzt, dass man in der neuen Klasse, die man von seinem COM-Interface abgeleitet hat zu der eigentlich Methode weiterleiten soll. Wie soll das gehen, die Methoden stehen ja in der exe und nicht in der DLL? Muss ich jetzt alle Methoden aus der *.exe ausschneiden und in die DLL einfügen (die DLL in der EXE einbinden um dort die Funktionen zu benutzten zu können) um diese per COM zugänglich zu machen?

MfG
Tonka

06.02.2008 - 14:23 Uhr

Aber was tun, wenn die alte Methode funktioniert und die neue Methode, die von Microsoft vorgeschlagen wird, nicht?

Die Auswirkung bezüglich Probleme bei Frameworkwechsel ist mir schon bewusst!

MfG
gaylord

06.02.2008 - 14:13 Uhr

Werds auch so machen.

Danke für die Hilfe

MfG
Tonka

06.02.2008 - 14:02 Uhr

Das mit


AppDomain.CurrentDomain.AppendPrivatePath

find ich gut, denn hier gebe ich einen Ordner an und erweitere somit die "Suche" nach der DLL, ich muss nicht wissen wie die DLL heißt.

Wenn ich das mit


System.Reflection.Assembly.Load("FileName")

Muss ich den Filenamen wissen, dass ist bei 60 bis DLLs ziemlich aufwendig, oder?

MfG
Tonka

06.02.2008 - 13:32 Uhr

Mit


AppDomain.CurrentDomain.AppendPrivatePath(PathNew);

funktionierts. Der Compiler schreibt aber, das diese Methode veraltet ist und schlägt die Methode (eigentlich Property) von Khalid vor


AppDomain.CurrentDomain.SetupInformation.PrivateBinPath

Aber das wiederum, wie schon in diesem Forum-Thread vermerkt, funktioniert nicht, aber WARUM???

MfG
Tonka

06.02.2008 - 13:19 Uhr

Hallo,

das zuweisen von "AppDomain.CurrentDomain.SetupInformation.PrivateBinPath" funktioniert nicht, der Pafd bleibt null. Hat wer noch andere Ideen????

MfG
Tonka

06.02.2008 - 11:02 Uhr

Werd das mal mit der AppDomain probieren.

zu der Frage "Warum": Ich steuere ein CAD System mit dem Programm an, hierfür muss ich wirklich viele DLLs importieren (so um die 60 bis 70, wird aber immer mehr). Bei jedem "Code-Builder"(die ich bis jetzt benutzt habe) außer .NET hatte ich immer die Möglichkeit, DLLs und etc. in meinem Ordner zu strukturieren (in Unterordner zu geben etc.). Das ist eine "Funktion" die ich in .NET echt vermisse (bei DLLs).

Beispiel für Strukturierung:

  • Mein Ordner
    ---- bin
    ---- samples
    ---- graphics
    ---- scripts
    start.exe
    config.xml

...

Werd mich dann wieder melden wenn ich das mit AppDomain probiert habe.

MFG
Tonka

06.02.2008 - 10:13 Uhr

Das mit dem XCOPY funktioniert und sieht so aus


xcopy "$(TargetDir)*.dll" "$(TargetDir)bin\*.dll" /Y
del "$(TargetDir)*.dll"

Jedoch bleibt mein Problem bestehen, wenn ich versuche eine Funktion einer der kopierten DLLs anzusprechen, so bekomme ich eine Exception, das die DLL nicht gefunden wurde (liegt ja nicht mehr in der gleichen Ordnerer-Ebene wie die *.exe)! Kann man irgendwie die DLL-Suche auf die Unterordner ausweiten?

MFG
Tonka

05.02.2008 - 12:29 Uhr

hy DevHB,

das einzige was ich in den Projekteigenschaften finden, ist der Ausgabepfad. Wenn ich den ändere, werden alle(!) Dateien in einen andere Ordner kopiert, die Struktur aber bleibt gleich.

Übrigens, ich benutze Visual Studio 2005!

MfG
Tonka

04.02.2008 - 15:23 Uhr

Hy,

ich habe eine ganz kurze Frage. Wie kann man in Visual Studio 2005 die Ausgabepfad der DLLs der Verweise ändern? Standardmäßig werden die eingebundenen DLLs in den gleichen ordner kopiert wie die *.exe Datei.

MfG
Tonka

24.01.2008 - 09:27 Uhr

Hättest du vieleicht ein Codebeispiel ???

MfG
Tonka

23.01.2008 - 19:16 Uhr

Hy,

die Forumsuche hab ich schon benutzt und bei codeproject.com habe ich auch nicht wirklich was sinnvolles gefunden.

MfG
Tonka

23.01.2008 - 18:40 Uhr

H@all,

ich möchte gerne in mein Standard Datagridview ein eigenes Control einbinden. Das Control besteht aus 3 übereinander angeordneten Textboxen.


| TextBox1 |


| TextBox2 |


| TextBox3 |

Gibts hier irgendwelche Möglichkeiten? Hat jemand schon mal sowas realisieren können?

MfG
Tonka

21.01.2008 - 20:46 Uhr

Danke für eure Antwort, hab die Lösung selber gefunden, aber ehrlich gesagt weiß ich nicht, warum das Programm so reagiert.

Man muss einfach alles aus der methode "static void StartupNextInstanceHandler(....)" rauslöschen. Scheinbar weil der Argumentenaufruf schon im "static void main(...)" gemacht wird, wird automatisch die nachher gesendeten Parameter zur gleichen Methode gesenet - Warum weiß ich nicht.


public class SingleInstanceApplication : WindowsFormsApplicationBase
{
    private SingleInstanceApplication()
    {
        base.IsSingleInstance = true;
    }

    public static void Run(Form f, StartupNextInstanceEventHandler startupHandler)
    {
        SingleInstanceApplication app = new SingleInstanceApplication();
        app.MainForm = f;
        app.StartupNextInstance += startupHandler;
        app.Run(Environment.GetCommandLineArgs());
    }
}

static class Program
{
    private static Form1 Frm = null;
    /// <summary>
    /// Der Haupteinstiegspunkt für die Anwendung.
    /// </summary>
    [STAThread]
    static void Main(String[] args)
    {
         Application.EnableVisualStyles();
         Application.SetCompatibleTextRenderingDefault(false);

         Frm = new Form1();
         Frm.StartWithArguments(args);
         SingleInstanceApplication.Run(Frm, StartupNextInstanceHandler);
    }

    static void StartupNextInstanceHandler(object sender, StartupNextInstanceEventArgs e)
    {
    }
}

MfG
Tonka

21.01.2008 - 07:12 Uhr

Hy,

mir sagt "logging" leider nichts, könntest du's mal kurz beschreiben.

Danke

MfG
Tonka

19.01.2008 - 16:54 Uhr

Hy@all,

ich habe ein komisches Problem. Mein Programm an dem ich grad schreibe, darf nur einmal geöffnet werden. Um dies zu realisieren hab ichs einfach so gemacht.


public class SingleInstanceApplication : WindowsFormsApplicationBase
{
    private SingleInstanceApplication()
    {
        base.IsSingleInstance = true;
    }

    public static void Run(Form f, StartupNextInstanceEventHandler startupHandler)
    {
        SingleInstanceApplication app = new SingleInstanceApplication();
        app.MainForm = f;
        app.StartupNextInstance += startupHandler;
        app.Run(Environment.GetCommandLineArgs());
    }
}

static class Program
{
    private static Form1 Frm = null;
    /// <summary>
    /// Der Haupteinstiegspunkt für die Anwendung.
    /// </summary>
    [STAThread]
    static void Main(String[] args)
    {
         Application.EnableVisualStyles();
         Application.SetCompatibleTextRenderingDefault(false);
 
         Frm = new Form1();
         Frm.StartWithArguments(args);
         SingleInstanceApplication.Run(Frm, StartupNextInstanceHandler);
    }

    static void StartupNextInstanceHandler(object sender, StartupNextInstanceEventArgs e)
    {
         if (Frm == null) 
         {
              return;
         }

         List<String> ArgsList = new List<String>();
         for (Int32 i = 1; i < e.CommandLine.Count; i++)
         {
              ArgsList.Add(e.CommandLine[i]);
         }
         Frm.StartWithArguments(ArgsList.ToArray());
    }
}

Wie man in dem Oben gezeigten Codeausschnitt sehen kann, kann mein Programm sowohl beim start der exe als auch bei wiederholten aufruf mit argumenten (Frm.StartWithArguments(args); Frm.StartWithArguments(ArgsList.ToArray()); ) von außen "gefüttert" werden. Klappt auch alles soweit Problemlos.

In der Methode "StartWithArguments" des Form1 möchte ich bei einem bestimmt Argument (z.B. "/?") eine MessageBox ausgeben. Jetzt habe ich das Phänomen, das diese MessageBox immer zweimal angezeigt wird. Wenn man im Programm Breakpoints setzte, so wird der Breakpoint erst nach(!) der ersten MessageBox aktiviert, bloß warum?

Kann mir hier jemand helfen?

MfG
Tonka

30.12.2007 - 21:54 Uhr

Hey danke, das wars. Einfach beim Schreiben statt "OpenOrCreate" nur "Create" und dann geht es.

Vielen Danke nochmal.

MfG
Tonka

19.12.2007 - 23:57 Uhr

Hallo,

das kann ich mir nicht ganz vorstellen, denn beim Öffnen wird das Event nicht ausgelöst, sondern nur wenn ich auf "speichern" klicke.

Trotzdem Danke.

MfG
Tonka

19.12.2007 - 23:53 Uhr

Hy,

das wird nicht funktioniern, denn der Fehler tritt ja hier


reader = new StreamReader(cStream);

auf, d.h. den gesamten Text kann ich nicht auslesen, da ich nie an diesem Punkt ankomme.

Hast noch eine Idee?

MfG
Tonka

19.12.2007 - 21:30 Uhr

Hallo,

ich habe einen FileSystemWatcher der eine Datei überwacht. Dieser soll mir melden, wenn wer die Datei geändert hat. Ich gebe, wenn das Change-Event ausgelöst wird eine MessageBox aus. Nun habe ich den Effekt, das dass Change-Event zwei mal hintereinander ausgelöst wird, aber warum?

Hier ist mein Source-Code:

Einstellungen des Watcher:


FileSystemWatcherSettings.Changed += new FileSystemEventHandler(FileSystemWatcherSettings_Changed);

FileSystemWatcherSettings.Path = SettingsPath;// EnvironmentPath;
FileSystemWatcherSettings.NotifyFilter = NotifyFilters.LastWrite;
FileSystemWatcherSettings.Filter = Path.GetFileName(EnvironmentPath);
FileSystemWatcherSettings.EnableRaisingEvents = true;

Change-Event:


void FileSystemWatcherSettings_Changed(object sender, FileSystemEventArgs e)
{
       MessageBox.Show("Datei wurde geändert");
}

Weiß wer eine Antwort?

MfG
Tonka

19.12.2007 - 21:19 Uhr

Hallo,

am frühzeitige return true kanns nicht liegen, denn der finally zweig (finally wird immer ausgeführt, egal was passiert) wird aufgerufen!

Der Fehler tritt ja etwas weiter oben auf (siehe meine Beschreibung).

Die genau Exception-Message lautet: Die Länge der zu entschlüsselnden Daten ist ungültig.

Kann wer damit was anfangen?

MfG
Tonka

19.12.2007 - 20:36 Uhr

Hy@all,

ich habe ein Problem beim speichern (eigentlich besser gesagt beim lesen) von verschlüsselten XML-Dateien.

Das schreiben funktioniert, jedoch beim einlesen bekomme ich in der Zeile


xr = XmlReader.Create(cStream);

einen Fehler (ungültige Daten blabla), aber warum?

Hier ist mein Source-Code:


static public Boolean WritesUsers(String Path, UserRights UserList, ref String Message)
    {
        XmlSerializer xs = null;
        XmlWriter xw = null;
        FileStream Stream = null;
        CryptoStream cStream = null;

        try
        {
            Stream = new FileStream(Path, FileMode.OpenOrCreate, FileAccess.Write);
            String key = "abcdef";
            Rijndael crypto = Rijndael.Create();
            crypto.IV = ASCIIEncoding.ASCII.GetBytes("test".PadRight(16, 'x'));
            crypto.Key = ASCIIEncoding.ASCII.GetBytes(key.PadRight(16, 'x'));
            crypto.Padding = PaddingMode.Zeros;

            cStream = new CryptoStream(Stream, crypto.CreateEncryptor(), CryptoStreamMode.Write);

            xs = new XmlSerializer(typeof(UserRights));
            xw = XmlWriter.Create(cStream);
            xs.Serialize(xw, UserList);
            
            Stream.Flush();
            cStream.Flush();

            return true;
        }
        catch (Exception ex)
        {
            Message = ex.Message;
            return false;
        }
        finally
        {
            if (xw != null)
            {
                xw.Close();
            }
            if (cStream != null)
            {
                cStream.Close();
            }
            if (Stream != null)
            {
                Stream.Close();
            }
        }
    }

    static public Boolean ReadUsers(String Path, ref UserRights UserList, ref String Message)
    {
        XmlSerializer xs = null;
        XmlReader xr = null;
        FileStream Stream = null;
        CryptoStream cStream = null;

        try
        {
            if (File.Exists(Path) == false)
            {
                throw new Exception("Die Datei existiert nicht: " + Path);
            }

            String key = "abcdef";
            Rijndael crypto = Rijndael.Create();
            crypto.IV = ASCIIEncoding.ASCII.GetBytes("test".PadRight(16, 'x'));
            crypto.Key = ASCIIEncoding.ASCII.GetBytes(key.PadRight(16, 'x'));
            crypto.Padding = PaddingMode.Zeros;

            Stream = new FileStream(Path, FileMode.Open, FileAccess.Read);
            DES des = new DESCryptoServiceProvider();
            cStream = new CryptoStream(Stream, crypto.CreateDecryptor(), CryptoStreamMode.Read);

            xs = new XmlSerializer(typeof(UserRights));
            xr = XmlReader.Create(cStream); ///////////////////////// hier tritt die Exception auf!
            UserList = (UserRights)xs.Deserialize(xr);

            Stream.Flush();
            cStream.Flush();

            return true;
        }
        catch (Exception ex)
        {
            Message = ex.Message;
            return false;
        }
        finally
        {
            if (xr != null)
            {
                xr.Close();
            }
            if (cStream != null)
            {
                cStream.Close();
            }
            if (Stream != null)
            {
                Stream.Close();
            }
        }
    }

Kann mir jemand helfen?

MfG
Tonka

30.10.2007 - 14:40 Uhr

Hat leider nichts geholfen. Gibts nicht irgendwo Dateien die man löschen kann/muss, damit man diesem Effekt erreicht?

30.10.2007 - 11:50 Uhr

Hier die Syntax von Visual Studio.NET 2002. Was ist jetzt das restet? /resetskippkgs vielleicht?

Syntax:
devenv [Projektmappendatei | Projektdatei | BeliebigeDatei.ext] [Schalter]

Sie können 'devenv' mit einem ersten Argument zur Festlegung der
Projektmappendatei oder Projektdatei aufrufen. Sie können außerdem 'devenv' mit
einem ersten Argument aufrufen, das eine beliebige andere Datei bestimmt, die
Sie in einem Editor öffnen möchten. Wenn Sie eine Projektdatei bereitstellen,
wird diese von IDE durch Suchen einer SLN-Datei, die den gleichen
Basisnamen hat wie die Projektdatei, in einem Projektmappenkontext und im
gleichen Verzeichnis wie die Projektdatei geöffnet. Wenn keine derartige
SLN-Datei vorhanden ist, sucht IDE nach einer einzelnen SLN-Datei, die auf
das Projekt verweist. Wenn keine einzelne SLN-Datei vorhanden ist, erstellt IDE
eine ungespeicherte Projektmappen mit einem standardmäßigen SLN-Dateinamen,
der den gleichen Basisnamen wie die Projektdatei hat.

Befehlszeilenbuilds:
devenv Projektmappe.sln /build solutionconfig [ /project ProjektnameOderDatei [ /projectconfig Name ] ]

Verfügbare Befehlszeilenschalter:

/build Angegebene Projektmappenkonfiguration erstellen.
/project Gibt das zu erstellende Projekt anstatt der Projektmappe an.
/build muss angegeben werden, damit /project verwendet
werden kann.
/projectconfig Gibt die zu erstellende Projektkonfiguration an.
/project muss angegeben werden, damit /projectconfig
verwendet werden kann.
/out Buildausgaben in die angegebene Datei schreiben.
/rebuild Wie /build; erzwingt jedoch zuerst eine Bereinigung.
/clean Bereinigt die Buildausgaben.
/deploy Angegebene Projektmappenkonfiguration erstellen und
dann verteilen.
/run Angegebene Projektmappenkonfiguration ausführen.
/runexit Angegebene Projektmappenkonfiguration ausführen und
dann beenden.
/command Führt die angegebene interne Befehlszeile nach dem Start aus.
/mditabs Schnittstelle für Dokumente im Registerformat verwenden
/mdi MDI-Schnittstelle verwenden
/fn Angegebenen Schriftartnamen verwenden
/fs Angegebenen Schriftgrad verwenden
/LCID Angegebene Sprach-ID verwenden
/noVSIP Deaktiviert VSIP-Entwickler Lizenzschlüssel für VSIP-Test
/safemode Aus Stabilitätsgründen werden nur Standardumgebung
und -dienste geladen
/resetskippkgs Lässt das erneute Laden von VsPackages zu, die ein Flag
wegen Ladefehlern haben

Produktspezifische Schalter:

/debugexe Öffnet die ausführbare Datei zum Debuggen. Die
restliche Befehlszeile wird als Argument an diese
Datei übergeben.
/useenv Verwenden Sie anstelle von IDE-Pfaden für VC++-Builds PATH-, INCLUDE-, LIBPATH- und LIB-Umgebungsvariablen.
Um den Debugger in Befehlszeile anzuhängen:
vs7jit.exe -p <pid>

30.10.2007 - 11:41 Uhr

wo finde ich devenv.exe ?

30.10.2007 - 11:04 Uhr

Hallo,

wie kann man Visual Studio.NET 2003 bzw .NET 2002 auf Neuinstallationsverhalten zurücksetzten, so als ob es neu installiert worden wäre? In Visual Studio 2005 löscht man ein paar Dateien und startet neu und dann ist es "wie neu"!

Grund: Probleme mit Addins

MfG
Tonka

15.10.2007 - 11:22 Uhr

Hy@all,

weiß jemand von euch wie man in Visual Studi.NET 2002 (C++) die "Dynamische Hilfe" dekativieren kann? Ich habe ein Addin installiert, dessen Hilfe auch mit STRG + F1 starten sollte, jedoch belegt das VS.NET 2002 mit der Dynamischen Hilfe.

MfG
Tonka

21.09.2007 - 12:55 Uhr

Probiers mal. Werd aber dann ins Wochende gehen => ergebnisse gibts Montag.

MfG
Tonka

21.09.2007 - 12:43 Uhr

Das funktioniert aber irgendwie nicht. Habs mit folgendem Code probiert.


Image TempImage0 = Image.FromFile(destFile);
Image TempImage = (Image)TempImage0.Clone();
TempImage0.Dispose();

MfG

21.09.2007 - 12:30 Uhr

Danke. Habs jetzt so gemacht.


FileStream fs = new FileStream(destFile,FileMode.Open);
Image TempImage = Image.FromStream(fs);
fs.Close();

MfG
Tonka

21.09.2007 - 12:23 Uhr

Aso, das problem ist aber, ich brauche das Bitmap-Object weiter.

Ich habe ja mit dem Viewer das JPG exportiert und es gleich danach mit


image xyz = Image.FromFile(destFile);

wieder einzulesen. Heißt das, dass das xyz-object die ganze zeit eine Verbindung zum Pfad (destfile) hat???

Ich muss mit dem Image noch einige Dinge machen, und dazu muss ich mehrere solcher Object einlesen.

MfG

21.09.2007 - 12:16 Uhr

Dipose auf was?

21.09.2007 - 12:14 Uhr

Aber wieso greift mein Process auf die Datei zu, ich rufe ihn ja nirgends auf. Weißt du wie man die Resource, die JPG-Datei, (wenn es sein muss auch mit Gewalt) wieder frei gibt.

MfG

21.09.2007 - 12:04 Uhr

Hallo,

ich habe jetzt ein Problem das ich nicht verstehe.

Der Viewer wird aufgerufen und exportiert das Bild. Danach wird der Viewer (der Process: Viewer.exe) mit "Marshal.ReleaseComObject(viewer);" geschlossen. Das habe ich auch mit dem TaskManager kontrolliert. Jedoch wenn ich den selben Code nochmal durchlaufe, kann ich die erstellte JPG-Datei nicht löschen. Die Exception laut: kann auf Datei nicht zugreifen, das sie von einem anderen Process benutzt wird => wieso, der Process (Viewer.exe) der das Bild erstellt hat existiert ja gar nicht mehr?????????????????

Weiß irgendwer warum?

MfG
tTonka

20.09.2007 - 18:22 Uhr

Danke, genau das habe ich gebraucht. Ein kleienr Fehler ist in dem Beispiel.

override ToString() gehört so:


public override String ToString()
{
     return this.Text;
}

Danke

MfG
Tonka