Laden...
Avatar #avatar-2119.jpg
egrath myCSharp.de - Member
Softwareentwickler Österreich / Steyr Dabei seit 24.07.2005 871 Beiträge
Benutzerbeschreibung

Forenbeiträge von egrath Ingesamt 871 Beiträge

08.05.2008 - 20:15 Uhr

Hallo,

wenn Du P/Invoke benutzt, brauchst Du die C++ Quellen nicht mit /clr übersetzen. Der Switch ist dafür gedacht, dass Du mixed Mode Assemblys erstellst welche einen Teil managed, den anderen Teil unmanaged enthalten (und diese dann als normale Referenz benutzen kannst)

Grüsse,
Egon

08.05.2008 - 15:44 Uhr

Hallo,

mittels des Tools ILMerge kannst Du DLL's direkt in die EXE integrieren.

Grüsse,
Egon

03.05.2008 - 21:08 Uhr

Hallo,


		string myString = "Hello, World!";
		
		// Umwandeln des Unicode Strings nach ASCII und speichern in Byte Array
		byte[] asciiEncoded = System.Text.Encoding.ASCII.GetBytes( myString );
		
		// Konvertieren der ASCII Daten im Byte Array zurück in einen Unicode String
		myString = System.Text.Encoding.ASCII.GetString( asciiEncoded );

Grüsse,
Egon

01.05.2008 - 15:00 Uhr

Hallo,

ich bin gerade mit dem Buch "Microsoft XNA Unleashed: Graphics and Game Programming for Xbox 360 and Windows" fertig geworden und kann es uneingeschränkt weiterempfehlen.

Das Buch verfolgt nicht den ansonsten üblichen Weg dass auf die Examples von Microsoft aufgebaut und diese modifiziert werden - das gefällt mir besonders gut da ich gerne von Grund auf anfange. Das erste Kapitel hat einen relativ steilen Einstieg den man sich teilweise mehrfach durchlesen muss um es zu verstehen, doch wenn diese Hürde geschafft ist gehts in einem relativ lockeren, einfach zu verstehenden Stil weiter.

Das Buch ist allerdings in Englisch verfasst.

Grüsse,
Egon

Link: http://www.amazon.com/Microsoft-XNA-Unleashed-Graphics-Programming/dp/0672329646/ref=pd_bbs_sr_2?ie=UTF8&s=books&qid=1209579341&sr=8-2

27.04.2008 - 19:46 Uhr

Hallo,

ich kennes es selbst seit ~ 2001, lese es immer wieder und ab und an schreibe ich es auch. Das ^^ Emoticon.

Warum ich diesen Thread eröffne: Es gibt dermassen viele Meinungen zu dem Symbol wenn man sich mit Leuten unterhält was es nun eigentlich bedeutet:* Ironie

  • Sarkasmus (für das kenns ich)
  • Unwissenheit
  • Augenbrauen Hochziehen (Wikipedia eintrag)
  • (Keine Ahnung: Schreibe es nur weil es cool aussieht ^^)

In welchem Zusammenhang benutzt ihr das Symbol? Weiss jemand die genaueren Ursprünge? Habe mal früher gehört dass es seine Ursprünge in Süd Korea hat und es dort bei Online Spielen genutzt wurde - wahrheitsgehalt ungewiss.

Grüsse,
Egon

27.04.2008 - 19:32 Uhr

Hallo,

im Handbuch zu Nant sind doch einige schöne Beispiele drinnen. Beispielsweise unter:

http://nant.sourceforge.net/release/latest/help/fundamentals/buildfiles.html

ist folgendes:


    <?xml version="1.0"?>
    <project name="Hello World" default="build" basedir=".">
        <description>The Hello World of build files.</description>
        <property name="debug" value="true" overwrite="false" />
        <target name="clean" description="remove all generated files">
            <delete file="HelloWorld.exe" failonerror="false" />
            <delete file="HelloWorld.pdb" failonerror="false" />
        </target>
        <target name="build" description="compiles the source code">
            <csc target="exe" output="HelloWorld.exe" debug="${debug}">
                <sources>
                    <includes name="HelloWorld.cs" />
                </sources>
            </csc>
        </target>
    </project>

Das beispiel ist zwar für ein Executable, aber wenn Du in der Referenz für den CSC Task nachsiehst liest Du, dass als target auch "library" möglich ist (=DLL)

Grüsse,
Egon

/edit: Noch was: Wenn Du das Framework ändern möchtest für das kompiliert wird, da gibts nen Eintrag in der Nant FAQ dazu:
http://nant.sourceforge.net/faq.html#change-targetframework

23.04.2008 - 22:16 Uhr

Hallo,

falls ich dich richtig verstanden habe - wenn Du es wirklich so lösen willst bietet sich dafür das Singleton Pattern an:* Eine Instanz der Klasse

  • Referenzen auf diese Instanz werden über eine statische Methode geliefert -> Jeder arbeitet mit dem gleichen Objekt.

Grüsse,
Egon

/edit: Suchwort: Singleton

23.04.2008 - 07:28 Uhr

Hallo,

die Personal Edition kann nur FBX lesen, allerdings nicht schreiben.

Grüsse,
Egon

22.04.2008 - 21:03 Uhr

Hallo Golo,

ja das hab ich mittlerweile auch schon bemerkt - eigenartiges verhalten vom Compiler. Eventuell könntest Du als Finder das an Microsoft melden (Über den Link in der MSDN), denn die MSDN erwähnt das mit keinem Sterbenswörtchen.

Grüsse,
Egon

22.04.2008 - 20:52 Uhr

Hallo nochmal,

ich hab das ganze jetzt mal probiert und es hinbekommen:* Im Testprojekt die Referenz auf die zu testende Assembly rausgenommen (und alles auskommentiert damit das teil kompiliert)

  • Das Testprojekt signiert und den Public Key mittels sn.exe rausgeholt (sn -Tp <assembly>
  • Dann einstellen dass die zu testende Assembly signiert wird und im Assembly Attribute InternalsVisibleTo den PublicKey angegeben:

[assembly: InternalsVisibleTo( "Test, PublicKey=00240000048000009400000......." )]

  • ACHTUNG: In der MSDN steht dass man den Public Key Token eingeben muss. Das ist schlichtweg falsch, es muss der ganze Public Key sein
  • Die zu testende Assembly kompiliert
  • Im Testprojekt die Referenz wieder hergestellt und den auskommentierten Teil wieder rein
  • Alles durchkompilieren

Voi'la funktioniert. Weiss zwar nicht ob das so im sinne des Erfinders war aber es tut auf jeden Fall.

Grüsse,
Egon

22.04.2008 - 20:20 Uhr

Hallo Golo,

hab ich bis jetzt noch nie benutzt, aber im MSDN steht ein Artikel darüber der dir eventuell hilft:

http://msdn2.microsoft.com/en-us/library/bb385840.aspx

(Ganz unten: Strong Name Signing Requirement)

Grüsse,
Egon

22.04.2008 - 16:48 Uhr

Hallo JAck30lena,

doch es funktioniert. Probiere obigen Code und du wirst es sehen 😉

Grüsse,
Egon

22.04.2008 - 16:45 Uhr

Hallo,

ja es stimmt man muss GetFolderPath benutzen, der Code von mir ist (noch) nicht korrekt - hab ihn ohne zu testen schnell reingeschrieben 🙂

Grüsse,
Egon

22.04.2008 - 16:25 Uhr

Hallo,

ich würds so machen:


string windowsPath = 	System.IO.Path.GetFullPath( Environment.GetFolderPath( Environment.SpecialFolder.System ) + "\\.." );

Grüsse,
Egon

/edit: Code korrigiert (diesmal mit nachdenken und testen!)

22.04.2008 - 15:57 Uhr

Hallo,

ich denke dass Du über WMI was rausfinden können müsstest:

Win32_SystemDevices
Win32_Bus

lad dir mal den WMI Code creator runter (hier) und spiel dich mal damit rum.

Grüsse,
Egon

21.04.2008 - 18:12 Uhr

Hallo,

ja ich habe dem cs-sdl projekt schon was darüber geschrieben, mal sehen wies von deren Seite aufgenommen wird.

Von der geschwindigkeit her kommt es unter Linux nicht ganz mit Windows (directx Output) mit, ist aber meiner meinung nach akzeptabel schnell für die meisten 2D Spiele. Von Loki Software wurden damit ja auch Spiele ala Civilisation III für Linux portiert.

Wegen der deutschen Version bin ich schon stark am überlegen. Wird aber sicherlich noch einige Zeit dauern da ich gerade etwas unter Zeitmangel leide 😉

Grüsse,
egon

20.04.2008 - 13:46 Uhr

Hallo,

ich habe nach langer Zeit nun endlich mein Tutorial über die Programmierung mit SDL.NET fertiggestellt.

Da es über die Library selbst noch keinen umfangreichen Artikel gegeben hat und ich ein breites Publikum damit erreichen wollte, ist das ganze in englischer Sprache verfasst. Eventuell - wenn es genügend Anforderungen daran gibt - werde ich ihn ins Deutsche übersetzen.

Im Anhang befindet sich der Artikel - allerdings ohne die ganzen Examples da diese die maximal Anhanggröße sprengen würde. Ihr könnt euch den kompletten Artikel als ZIP Datei von meiner Homepage runterladen (falls ihr die Solutions wirklich braucht)

Grüsse,
Egon

20.04.2008 - 13:27 Uhr

Hallo,

ich tippe mal stark darauf, dass Du die Datei nicht schliesst nachdem Du in diese geschrieben hast.

Schliesse also den Stream nach dem schreiben (Close() Methode).

Grüsse,
Egon

19.04.2008 - 13:57 Uhr

Hallo,

spricht etwas dagegen dass Du ihn selbst implementierst?

Grüsse,
Egon

18.04.2008 - 23:49 Uhr

hrhr jo ich weiss. aber beim schnellen zusammenhacken von dingen vergisst man auf das eine oder andere ^^

18.04.2008 - 23:04 Uhr

Hallo,

ich habe mir eigentlich auch keine Mühe gemacht dass der resultierende Maschinencode nicht so leicht zu analysieren und zu umgehen ist 😉

Als Compiler hab ich den ordinären Visual C++ 2008 genommen, Standardeinstellungen der Release Konfiguration.

Grüsse,
Egon

18.04.2008 - 21:08 Uhr

Hallo egrath!

Laut Reflector wird in deiner .Net Dll keine Variable erstellt!?

  
public class HackMe  
{  
    // Methods  
    public static int Execute(string message)  
    {  
        Console.Out.WriteLine("[.NET] Hello: {0}", message);  
        return 0;  
    }  
}  
  

Verdammt, dann hat der Optimizer des Compilers wieder zugeschlagen und die Deklaration rausgenommen. Aber Da du schon so weit bist lüfte ich das "Geheimnis" nun:*Ich habe mir einen C++ Wrapper geschrieben der eine CLR Instanz initialisiert *Dieser CLR teile ich nun mit, dass ich die Methode "Execute" des types "egrath.test.HackMe" aufrufen möchte

  • Die Assembly selbst liegt in einem alternativen NTFS Datenstrom "Hackme.exe:NET"

Ich denke mal dass Du einen Decompiler verwendet hast wie z.b. OllyDbg oder W32Dasm um das ganze zu analysieren, oder? Im Loader überprüfe ich nämlich ob ein Debugger aktiv ist 😉

Grüsse,
Egon

17.04.2008 - 22:47 Uhr

Hallo,

ohne dass ich das jemals gebraucht hätte würde ich versuchen von FileStream zu erben und dann einen Filter implementieren der anstelle von \r\n nur \n schreibt.

Dem XmlTextWriter wird dieser dann im Constructor übergeben und schon gehts - so die Theorie.

Grüsse,
Egon

17.04.2008 - 15:49 Uhr

Hallo,

so ich hab mir auch wieder mal ne neue Sache ausgedacht. Um was gehts:* In der Applikation wird in einer Variable eine Zahl gesetzt (gibt eh nur eine Variable). Welchen wert hat diese?

  • Ja, es ist eine .NET Applikation auch wenns nicht so aussieht.

Grüsse,
Egon

/edit: Passwort für das Archiv ist "mycsharp". Muss es leider verschlüsseln da es sonst der Proxy hier nicht durchlässt.

17.04.2008 - 11:31 Uhr

Hallo,

File.Move

Grüsse,
Egon

/edit: Warum benennst Du die Datei nicht gleich mit der Endung HTML?

16.04.2008 - 21:40 Uhr

Hallo,

"Der Pragmatische Programmierer" fällt meines erachtens auch in die Kategorie Zeitlos:

http://www.pragmatischprogrammieren.de/

Grüsse,
Egon

16.04.2008 - 09:13 Uhr

Hallo,

NDocConvert (DOC->PDF Konverter)

Grüsse,
Egon

16.04.2008 - 09:12 Uhr

Hallo,

bei CodeProject gibts nen netten Artikel darüber der alles genau beschreibt:

http://www.codeproject.com/KB/vista-security/UAC_Shield_for_Elevation.aspx

Grüsse,
Egon

15.04.2008 - 15:56 Uhr

Hallo,* Mit Mono ist eine Implementierung von .NET für Unixoide Systeme verfügbar, also auch für SuSE

  • MonoDevelop ist die derzeit einzige sinnvolle IDE für die .NET Entwicklung unter Linux
  • Für Linux spezifische Fragen solltest Du ein anderes Forum kontaktieren

Grüsse,
Egon

15.04.2008 - 13:17 Uhr

Hallo herbivore,

danke für die korrektur, irgendwie hab ich in meinem Beitrag was verwechselt.

Grüsse,
Egon

15.04.2008 - 10:01 Uhr

Hallo,

vielleicht zum besseren verständnis noch etwas code:


using System;

public sealed class Test
{
        public static void Main( string[] args )
        {
                /*
                 * intArr lebt auf dem Stack, ebenso die Inhalte des Arrays,
                 * da es sich um ValueTypes handelt
                 */
                int[,] intArr = new int[,]
                        {{ 1, 2, 3 }, { 4, 5, 6 }, { 7, 8, 9 }};

                /*
                 * Gleiches wie oben, nur mit etwas syntaktischem Zucker
                 */
                int[,] intArr2 = {{ 1, 2, 3 }, { 4, 5, 6 }, { 7, 8, 9 }};

                /*
                 * objArr lebt auf dem Heap, die Inhalte auf dem Heap
                 * da es sich um ReferenceTypes handelt 
                 */
                object[,] objArr = new object[,]
                        {{ ( object ) 1, ( object ) 2, ( object ) 3 },
                         { ( object ) 4, ( object ) 5, ( object ) 6 },
                         { ( object ) 7, ( object ) 8, ( object ) 9 }};
        }
}

Grüsse,
Egon

14.04.2008 - 13:15 Uhr

Hallo,

genau das mein ich - beim starten der Applikation und bei anderen häufigen Aktionen wird gecheckt ob ein Debugger dran ist. Ist dem so, beendet sich die Applikation ohne eine Meldung.

Ist zwar nicht grade massiver Stopper, aber ärgern kann er jemanden trotzdem.

Grüsse,
Egon

14.04.2008 - 12:35 Uhr

Hallo,

während ich mir grad die nächste Schweinerei überlegt bin ich auf was nettes gestossen:* mscoree.tlb referenzieren


using System;
using System.Runtime.InteropServices;

namespace egrath.test.hackme
{
    public class HackMe
    {
        public static void Main( string[] args )
        {
            // Proceed only if we are not running inside the Debugger
            if( IsDebuggerAttached() )
                return;

            Console.Out.WriteLine( "Hier" );
        }

        private static bool IsDebuggerAttached()
        {
            int attached = 0;
            new mscoree.CorRuntimeHostClass().IsDebuggerAttached( out attached );
            return attached == 0 ? false : true;
        }
    }
}

... und schon lässt sich das Programm nicht mehr debuggen 😉

Grüsse,
Egon

14.04.2008 - 08:59 Uhr

Hallo,

für User bezogene Umgebungsvariablen:

HKCU\Environment

für Globale Umgebungsvariablen

HKLM\System\CurrentControlSet\Contro l\Session Manager\Environment

dort die entsprechenden String Values hinzufügen und dann die WM_SETTINGCHANGE Message broadcasten (Native SendMessage)

Grüsse,
Egon

/edit: WM_SETTINGCHANGE = 0x001A

13.04.2008 - 23:41 Uhr

Hallo,

der Kandidat erhält 100 Punkte.

Hier die auflösung:* Das ganze ist in IL geschrieben

  • Es wird eine lokale Variable erzeugt und dieser der Wert 7 zugewiesen
  • Danach wird mit etlichen Sprungbefehlen hin bis zum ende gesprungen
  • Zwischen den Sprungbefehlen (insgesamt 20) sind jeweils 500.000 NOP's -> Dadurch hängen sich beispielsweise der ILDasm auf und der Reflector wenn man sich den IL ansehen möchte (MonoDis geht einen anderen weg und stellt es richtig dar)
  • Am ende wird "Hello World!" ausgegeben

Für die interessierten anbei der Source.

Grüsse,
Egon

/edit: So NeuroCoder, du bist an der Reihe was zu basteln 🙂

13.04.2008 - 22:59 Uhr

Hallo,

nein die Assembly ist:* Nicht signiert

  • Nicht obfuskiert

Grüsse,
Egon

13.04.2008 - 20:25 Uhr

Hallo,

sorry, ich habe einen Befehl vergessen beim Code, drum schmierte er ab (Interessanterweise nur bei 32-Bit VM's, die 64 Bit CLR hat den Code gefressen)

ZIP File im originalen Post wurde aktualisiert.

Grüsse,
Egon

13.04.2008 - 20:08 Uhr

Hallo tscherno,

also ausführen lässt es sich bei mir (Nur mit der .NET Runtime, Mono nicht) . Aber du gehst recht in der annahme dass es in IL geschrieben ist.

Grüsse,
Egon

13.04.2008 - 19:59 Uhr

Hallo,

so jungs hier mal ne aufgabe zum reinbeissen: Ziel ist es den Inhalt einer Variable im Programm zu bestimmen (den Int32 mit dem Variablennamen "geheim" - ist eh die einzige lokal deklarierte Variable).

Viel vergnügen.

Egon

13.04.2008 - 19:16 Uhr

Hallo,

ich find die Idee echt nicht schlecht solche kleinen Aufgaben zu erstellen -> Werd mich mal dransetzen und versuchen was zu basteln 😉

Grüsse,
Egon

13.04.2008 - 19:09 Uhr

Hallo,

für mich hat das Ding nicht Obfuscated ausgesehen. Ich nehme mal an, dass gar keiner drübergelassen wurde.

Grüsse,
Egon

13.04.2008 - 19:05 Uhr

Hallo,

hab die Lösung: (ROT13 verschlüsselt um keinen Spoiler zu erstellen)

1.) Vz Ersyrpgbe qrpbzcvyvrera
2.) Fbhepr nacnffra hz Pbzcvyrsäuvt mh znpura
3.) Qra Purpx nhfonhra bo qre ibz Cnffjbeg orerpuargr Unfu zvg qrz üorervafgvzzg qre vz Pbqr Uneqtrpbqrg vfg. -> Nffrzoyl xnaa trynqra jreqra
4.) Zvg Zbab.prpvy qvr Nffrzoyl va rva Svyr qhzcra
5.) Zvg qrz Ersyrpgbe qvr Nffrzoyl nanylfvrera => Trurvzre fgevat = "JJJ.ZLPFUNEC.QR"

Grüsse,
Egon

/edit: ROT13 Dekoder: http://www.retards.org/projects/rot13/

09.04.2008 - 17:53 Uhr

Hallo tscherno,

das hört sich ja schon nicht so schlecht an das Ding - werd ich mir mal genauer ansehen, danke für den Tipp!

Grüsse,
Egon

09.04.2008 - 17:51 Uhr

Hallo,

du könntest dir in einer Applikation ein Internet Explorer Control einbinden, dessen größe so groß machen dass die Seite komplett reinpasst und dann das Control in ein Bitmap rendern.

Dabei ist allerdings etwas zu beachten, für das ich jetzt auf die schnelle keine lösung habe:* Wie groß muss das Control sein damit die ganze seite reinpasst?

Aber damit müsstest Du deinem Ziel schon etwas näher kommen.

Grüsse,
Egon

08.04.2008 - 11:29 Uhr

Hallo,

ich bin gerade auf der Suche nach einem automatisierten Lastgenerator für Fat-Client Anwendungen. Hat jemand von euch mit solchen Tools erfahrung und kann eines empfehlen?

Die meisten bisher gefundenen können nur Last für Web Applikationen erzeugen...

Es sollte folgendes unterstützen:* Simulieren von Benutzereingaben auf einem Fat-Client

  • Messen von Antwortzeiten des Clients und protokollieren dieser zur späteren Auswertung
  • Da es sich bei den zu Testenden Anwendungen um Client-Server Applikationen handelt, sollte es möglich sein pro Teststation mehrere Clients zu simulieren (Eventuell z.b. mittels eines Sandbox Verfahrens)
  • Das ganze sollte natürlich voll skriptbar sein
  • Unabhängigkeit vom benutzten GUI Framework (QT,MFC,WinForms,Swing,SWT)

Prinzipiell ist die Architektur aller zu testenden Anwendungen relativ gleich: FatClient->Business Logic Server->Datenbank. Wir wollen damit testen wieviele gleichzeitige Clients die BL Schicht zulässt und ab wann es bei dieser zu Problemen kommt.

(Wir haben für die zu testenden Applikationen keine Quellcodes, also sollte das ganze ein Black Box verfahren sein)

Grüsse,
Egon

08.04.2008 - 07:53 Uhr

Hallo,

bezüglich der ursprünglichen Frage: Du willst den Dependency Walker benutzen

http://www.dependencywalker.com/

Grüsse,
Egon

07.04.2008 - 07:42 Uhr

Hallo,

bei so sachen wie Codec und Größe eines Videofiles wirst Du dich mit Bordmitteln schwer tun, da solche Informationen in den eigentlichen Nutzdaten verspeichert sind. Du musst also schon das Fileformat kennen und manuell die Information rausziehen.

Grüsse,
Egon

04.04.2008 - 23:20 Uhr

Hallo,

System.IO.Ports ist in Mono (beinahe) vollständig implementiert, dementsprechend sollte es keine Probleme geben.

Was allerdings noch nicht zu 100% funktioniert ist System.Windows.Forms (.NET 2.0), allerdings wenn Du keine wirklich krummen Dinge mit deiner Form machst sollte auch das funken (da die meisten Sachen die noch nicht implementiert sind welche sind die nicht sooo oft gebraucht werden)

Grüsse,
Egon

04.04.2008 - 23:15 Uhr

Hallo,

du musst P/Invoke benutzen (Stichwort: DllImport)

Grüsse,
Egon

/edit: Eventuell ist die antwort zu global, da ich nicht genau rauslese wo das Problem liegt (spezifizieren)

04.04.2008 - 21:56 Uhr

Hallo,

so jetzt wo ich das Teil daheim stehn hab (heut Nachmittag geholt) kann ich mal Infos aus erster Hand dazu geben:* Mit einem ordinären DVI nach HDMI Kabel krieg ich einen sauberen Full-Screen Desktop mit 1920x1080

  • Audio Krieg ich von der Soundkarte derzeit über den Klinkeneingang des Fernsehers
  • Endlich mal ein Gerät bei dem die Skalierung der verschiedenen Aspect-Ratios ordentlich funktioniert

Alles in allem muss ich sagen dass ich mehr als zufrieden mit dem Gerät bin. Eine unmenge an Einstellungsmöglichkeiten (Dynamischer Kontrast, Lichtsensor für anpassung der Helligkeit an die Umgebung) sorgen dafür dass man alles so konfigurieren kann wie man es haben möchte. Ein schier unendliches Arsenal an Anschlüsseln runden den eindruck noch weiter positiv ab.

... und was mir als alten Open Source'ler sehr gefällt: Es wird nicht nur properitäre software auf dem Gerät eingesetzt 😉

Hier mal der Link zum Gerät: http://www.p4c.philips.com/cgi-bin/dcbint/cpindex.pl?ctn=42PFL5603D/12&scy=de&slg=DEU

Falls also jemand grad mit einer neuen Glotze liebäugelt: Prädikat empfehlenswert

Grüsse,
Egon