Laden...
Avatar #avatar-3152.png
TheBrainiac myCSharp.de - Member
Lehramt Informatik & Mathe - Student /dev/null Dabei seit 17.12.2006 795 Beiträge
Benutzerbeschreibung

Forenbeiträge von TheBrainiac Ingesamt 795 Beiträge

24.09.2010 - 09:50 Uhr

Ich hätte nämlich schon versucht, die WebKit.dll bzw. WebKit-ce.dll in meine App zu integrieren, was leider nicht funktionierte.

Warum nicht? Ich habe mit WebKit keine Probleme.

Gruß, Christian.

24.09.2010 - 09:48 Uhr

Hi @ All.

Ich muss z.Zt. eine Klasse schreiben, die mir aus einem Interface und einem Objekt, welches dieses Interface nicht implementiert, aber die gleichen Methoden hat, einen Proxy bastelt (DuckTyping).

Soweit kein Problem. Allerdings funktioniert das Hinzufügen des Interfaces nicht so wirklich:

var asmBuilder = Thread.GetDomain().DefineDynamicAssembly(new AssemblyName {
    Name = "SoWieSo"
}, AssemblyBuilderAccess.Run);
var modBuilder = asmBuilder.DefineDynamicModule("SoWieSo");
var typeBuilder = modBuilder.DefineType("SoWieSo", TypeAttributes.Public | TypeAttributes.Class);
            
typeBuilder.AddInterfaceImplementation(typeof(IMyInterface));

//Ganz viel IL-Kram

var myType = typeBuilder.CreateType();

In der letzten Zeile bekomme ich eine TypeLoadException:

System.TypeLoadException: Der Typ "SoWieSo" in der Assembly "SoWieSo, ..." versucht, eine Schnittstelle zu implementieren, auf die nicht zugegriffen werden kann.

Ich muss bestimmt die Assembly der Schnittstelle noch referenzieren, aber ich finde einfach nicht heraus, wo.

Gruß, Christian.

22.09.2010 - 23:22 Uhr

Du kannst das ja auf eine(n) bestimmten Ornder/Prozess/Aktion/WasAuchImmer filtern. Dann hast du nur die Daten die du auch wirklich brauchst. Das wird in die Xml-Datei gelogged, die kannst du dann ja auswerten. Oder?

Du musst bedenken, dass da wirklich eine riesige Informationsflut auf dich zu kommt, wenn du das wirklich über alle Verzeichnisse laufen lassen willst.

22.09.2010 - 23:07 Uhr

Und wie siehts mit ProcMon aus?

22.09.2010 - 23:02 Uhr

Kannst dir ja mal DiskMon angucken, vielleicht kannst du dir was abgucken / vllt ist das auch schon das, was du suchst.

Gruß, Christian.

21.09.2010 - 23:21 Uhr

Hi!

Freut mich, dass die Komponente gefällt!

Habe das Problem beseitigt.

Einfach den Konstruktor von CommandLineArguments wie folgt anpassen:

public CommandLineArguments()
{
    var parser = new Parser(Environment.CommandLine);

    parser.Parse();

    var lexer = new Lexer(parser.Tokens);

    lexer.DoLexing();

    ExecutablePath = Process.GetCurrentProcess().MainModule.FileName;
    m_Arguments = lexer.Arguments;
}

Im ersten Post ist jetzt auch wieder die aktuellste Version.

Gruß, Christian.

16.09.2010 - 16:23 Uhr

Applications that need to communicate using HWND_BROADCAST should use the RegisterWindowMessage function to obtain a unique message for inter-application communication.


SendMessage Function (Windows)

Weiter unten in den Kommentaren ist auch die Frage, wie man WM_TOUCH emuliert.

Gruß, Christian.

16.09.2010 - 16:15 Uhr

So, auch von mir ein Update:

Werde nun bald studieren, also hab ich mir ein neues Notebook geleistet:

Name: Acer Travelmate Timeline X 8572TG
CPU: Intel Core i5 460M (2,4 - 2,53 GHz)
GraKa: SLI mit GeForce GT 330M (1GB) / OnBoard Intel HD Grafics (1 GB)
RAM: 4GB DDR3
HDD: 640 GB
Akku: 8h Laufzeit
Display: 1366x768
Win7-Leistungsindex: 5,9

Gruß, Christian.

14.09.2010 - 10:48 Uhr

Aber du fügst den Handler 2mal hinzu aber entfernst ihn nur einmal. D.h. imho, dass er einmal immernoch gebunden ist.

14.09.2010 - 10:41 Uhr

In deinem Code fügst du bei CvsInSightState.Offline auch den EventHandler CvsInSightDisplay2_ResultsChanged zu insight2.ResultsChanged hinzu. Wolltest du ihn da entfernen oder ist das so soll?

14.09.2010 - 10:39 Uhr

Was mir gerade noch einfällt: sind die Controls 2-7 in einem "SubContainer"? ist der enabled bzw. hat der nen TabStop?

14.09.2010 - 10:35 Uhr

Sieh mal nach, wie die TabStops im Designer (also das grafische editieren der TabStops, nicht das mit dem Eigenschaftenfenster!) gesetzt sind. der hat mir da auch schon öfters dazwischengefunkt.

Gruß, Christian.

14.09.2010 - 10:33 Uhr

Hi.

Beim Status Offline fügst du den Eventhandler aber auch hinzu. soll das so sein?

Gruß, Christian.

11.09.2010 - 12:18 Uhr

Die Standard-.Net-Controls (TextBox, Button, ListView, ListBox, TreeView, usw.) sind nichts weiter als Wrapper um die Win32-Controls. und die werden vom Betriebssystem selbst gezeichnet.

Gruß, Christian.

11.09.2010 - 02:03 Uhr

Nimm einfach eine Textbox (ohne Border & in der Farbe des Hintergrundes), die du auf deinem Control nach Bedarf platzierst.

Gruß, Christian.

10.09.2010 - 10:46 Uhr

Kompiliere die Anwendung als Debug und teste die so, wie du oben beschrieben hast (Vom Netzlaufwerk aus auf den alten Rechnern, gleiche Schritte um den Fehler zu reproduzieren). Dann siehst du wahrscheinlich die Fehlermeldung.

Gruß, Christian.

10.09.2010 - 01:44 Uhr

Was fertiges für ASP.Net wirst du nicht finden. Aber so was gibt es schon, vielleicht kannst du das ja nutzen: Google Docs und Zoho

08.09.2010 - 23:53 Uhr
bool md5Exists = myRegex.IsMatch(pattern_Md5);  

Muss wohl so heißen:

bool md5Exists = myRegex.IsMatch(result);

Gruß, Christian.

08.09.2010 - 23:37 Uhr

Ok, muss ich also die namespaces aus meinem Code angeben?

Nein. Du musst schon die Assemblies übergeben. Aber du übergibst Namespaces.

Wenn ja erhalte ich trotzdem noch keine .exe.

Lass dir doch mal die Compiler-Errors ausgeben.

Habs gerade mal ausprobiert (einfach als Konsolenanwendung kompilieren):

using System;
using System.Collections.Generic;
using System.CodeDom.Compiler;
using Microsoft.CSharp;
using System.Diagnostics;

public class Program
{
    public static void Main()
    {
        Compile(@"
using System;

class Program {
    static void Main() {
        Console.WriteLine(""Hello, World"");
        Console.ReadKey(true);
    }
}
");
        Process.Start("TestCompile.exe");
    }

    public static void Compile(string code)
    {
        CSharpCodeProvider provider = new CSharpCodeProvider();
        ICodeCompiler compiler = provider.CreateCompiler();

        CompilerParameters compilerParams = new CompilerParameters();
        compilerParams.GenerateExecutable = true;
        compilerParams.GenerateInMemory = false;
        compilerParams.OutputAssembly = "TestCompile.exe";
        compilerParams.IncludeDebugInformation = true;
        compilerParams.ReferencedAssemblies.Add("system.dll");
        compilerParams.ReferencedAssemblies.Add("system.windows.forms.dll");

        CompilerResults result = compiler.CompileAssemblyFromSource(compilerParams, code);
        foreach (var error in result.Errors)
            Console.WriteLine(error);
    }
}

Funktioniert einwandfrei.

Gruß, Christian.

08.09.2010 - 22:26 Uhr
string[] namespaces = {"System", "System.Collections.Generic", "System.Linq", "System.Text", "System.Windows.Forms"};  
            CompilerParameters compilerParams = new CompilerParameters(namespaces);  

Das, was du übergibst sind nicht die Namespaces, sonder die zu referenzierenden Assemblies. und System.Collections.Generic ist kein eigenständiges Assembly, sondern in System mit enthalten (System.Text ebenso). (Siehe hier)

Gruß, Christian.

08.09.2010 - 15:43 Uhr

So ist das also! 🤔

Hab jetzt einfach FormBorderStyle.FixedDialog genommen. Problem gelöst!

Gruß & Danke, Christian.

08.09.2010 - 14:05 Uhr

@bredator:

Das stimmt und ist auch so gewollt.

Aber ich will, dass meine Anwendung in der Alt-Tab-Liste ist, aber ich möchte nur einen Eintrag in der Taskbar (da es ja nur ein Dialog ist, kein "richtiges" Fenster).

@JunkyXL
Siehe Anhang. Nur zur Info: Mein OS ist Win7 x64.

Gruß, Christian.

08.09.2010 - 13:57 Uhr

Hi @ All!

Ich habe eine Hauptform, die einen modalen Dialog anzeigt, welcher die Eigenschaft ShowInTaskbar = false hat (Hauptform: ShowInTaskbar = true).

Der Dialog wird wie erwartet nicht in der Taskbar angezeigt.

Wenn ich nun aber per Alt+Tab die Fenster wechsele, wird mir meine Anwendung dort (allerdings nur bei geöffnetem Dialog) nicht mehr angezeigt (In der Taskbar ist das Hauptfenster immer noch sichtbar).

Wenn ich bei dem Dialog ShowInTaskbar auf true setze, habe ich zwei Einträge in der Taskbar - wie erwartet - und die Anwendung ist in der Alt-Tab-Liste auch bei geöffnetem Dialog sichtbar.

Wie kann ich es einstellen, dass das zusätzliche Fenster nicht in der Taskbar angezeigt wird, aber meine Anwendung dadurch nicht aus dem Alt-Tab-Menü ausgeblendet wird?

Gruß, Christian.

06.09.2010 - 18:29 Uhr

Hi @ All.

Vor einiger Zeit habe ich DropBox entdeckt, mich angemeldet, aber bis heute nicht wirklich genutzt.

Da ich ab Oktober studieren werde und "gezwungenermaßen" mehrere PC's haben werde (Desktop-PC Zuhause (Win7), Desktop in der neuen Wohnung (Win7), Notebook an der Uni (Ubuntu) & Handy (Android)) bin ich auf DropBox zurückgekommen.

Es gibt für jedes meiner Benutzen Betribessysteme einen Client. Die Daten werden AES-256 verschlüsselt (auch Mitarbeiter von DropBox kommen angeblich nur an die Meta-Daten heran), jegliche Kommunikation mit dem Server läuft über SSL. Für mich macht das Ganze einen ziemlich guten Eindruck.

Nun würde ich von euch gerne wissen, wie ihr zu diesem Dienst steht. Was haltet ihr davon? Benutzt es irgendjemand?

Gruß, Christian.

06.09.2010 - 17:32 Uhr

Hi!

Ctrl+C ist dafür da, um eine Anwendung zu beenden. Das ist in allen mir bekannten Terminals bzw. Konsolen so implementiert. Wenn eine Anwendung das umbaut, ist für mich ein K.O.-Kriterium für (bzw. gegen) die Anwendung. Ich würde dir raten, eine andere Tastenkombi für das Menü zu wählen.

Gruß, Christian.

06.09.2010 - 11:14 Uhr

@serial: Gut zu wissen :evil:

Ich vermute stark, dass du zu oft den Fortschritt aktualisierst (s.o.)

06.09.2010 - 11:08 Uhr

Hi!

Wie groß ist iNoDW? ((Ich würde bei einer Großen Zahl nicht bei jedem Schleifendurchlauf den Fortschritt berichten, sondern nur, wenn jeweils 1% der Gesamtdurchläufe fertig sind.)

Wie sieht dein ProgressChaged-Event aus? ((Ich weis nicht sicher, ob das auch asynchron ausgeführt wird. Wenn ja, kann es daran liegen?

Gruß, Christian.

02.09.2010 - 16:48 Uhr

Beschreibung:

Da mir eine Klasse gefehlt hat, die den Computer nach Dateien mit bestimmten Eigenschaften durchsucht, habe ich die unten beschriebenen Klasse entwickelt.

Beispiel:
Suche im Benutzerprofil nach Textdateien mit mindestens einer Zahl im Namen, die größer sind als 1 kB und die nicht die Worte "Sparta" oder "Carthago" enthalten!


var fs = new FileSearch(SpecialSource.UserProfile);

fs.Filter = Filters.And(
    Filters.AllowExtensions(".txt"),
    Filters.Regex(@"\d+"),
    Filters.Size(1024, SizeFilterMode.MoreOrEqual),
    Filters.Not(
        Filters.Or(
            Filters.Regex("Sparta"),
            Filters.Regex("Carthago")
        )
    )
);

TuWas(fs.Find());

Dokumentation:

// Tritt auf, wenn ein Fehler beim Beziehen der Dateien bzw. Ordner in einer Quelle auftritt (Unauthorisierter Zugriff / Gerät nicht bereit)        
public event Action<FileSearch, DirectoryInfo, Exception> Error;

// Der Filter, der die Suchergebnisse einschränkt
public IFilter Filter;

// Die Quellen
public Source[] Sources;

// Fügt Quellen hinzu
public void AddSources(params Source[] sources);

// Fügt Spezial-Quellen hinzu
public void AddSources(params SpecialSource[] sources);

// Führt die eigentliche Suche aus
public IEnumerable<FileInfo> Find();

Alle Source-Parameter können auch als string angegeben werden - die Umwandlung findet implizit statt.

// Alles ist erlaubt
public static IFilter Everything;

// Nichts ist erlaubt
public static IFilter Nothing;

// Nur gültige Matches des Regex sind erlaubt
public static IFilter Regex(Regex regex);

// Nur Dateien mit den angegebenen Erweiterungen sind erlaubt
public static IFilter AllowExtensions(params string[] extensions);

// Dateien mit den angegebenen Erweiterungen werden aussortiert
public static IFilter ExcludeExtensions(params string[] extensions);

// Nur Dateien, die die angegebenen Größen-Eigenschaften erfüllen, sind erlaubt
public static IFilter Size(long size, SizeFilterMode mode);

// Nur Dateien, die alle übergebenen Filter erfolgreich durchlaufen, sind erlaubt
public static IFilter And(params IFilter[] filters);

// Nur Dateien, die mindestens einen übergeben Filter erfolgreich durchlaufen, sind erlaubt
public static IFilter Or(params IFilter[] filters);

// Nur Dateien, die den übergebenen Filter nicht erfolgreich durchlaufen, sind erlaubt
public static IFilter Not(IFilter filter);

Zusätzlich können über das Interface IFilter benutzerdefinierte Filter mit eingebunden werden.

Die (bis jetzt) enthaltenen SpecialSources sind:*AllDrives: Sucht auf allen verfügbaren Laufwerken *LocalHardDisks: Sucht auf allen lokalen Festplatten *LocalRemovableDisks: Sucht auf allen lokalen Wechseldatenträgern *NetworkDrives: Sucht auf allen verfügbaren Netzlaufwerken *OpticalDrives: Sucht auf allen verfügbaren optischen Laufwerken *SystemDrive: Sucht im System-Laufwerk (Meinstens C:\) *UserProfile: Sucht im Benutzerprofil der angemeldeten Benutzers (Win7: C:\Users\UserName\)

Schlagwörter: file search datei suche size größe extension extention erweiterung regex combine kombiniert filter

02.09.2010 - 15:43 Uhr

Ah, ok.

Wieder was dazu gelernt^^

Danke!

02.09.2010 - 15:30 Uhr

Hi @ All.

Warum kann ein yield return nicht in einem try catch stehen?

Gruß, Christian.

30.08.2010 - 16:12 Uhr

Doch, StringBuilder geht schon.

Ich hab auch viele selbstgeschriebene Delphi-Dll's und da funktionierts nur mit StringBuilder.

Kann es sein, dass dein Delphi-Funktion die .Net-Anwendung blockiert?

Und zeig mal bitte die Deklaration der Delphi-Funktion.

Gruß, Christian.

30.08.2010 - 15:29 Uhr

In C# fliegt mir aber meine Application auseinander wenn ich die Funtkion nutze.

Was hast du für eine Exception?

Wie ist die Delphi-Funktion deklariert?

Gruß, Christian.

29.08.2010 - 13:09 Uhr

Wie du bei Content-Type siehst, ist der MessageBody UTF8 codiert.

Du liest es aber als ASCII aus - daher resultieren die Fragezeichen.

Gruß, TheBrainiac.

25.08.2010 - 19:35 Uhr

Das ist mir auch bekannt. Dadurch prüfe ich ja nur, ob der angemeldete Benutzer Adminrechte hat. Ich möchte aber in einem Prozess, der nicht als Admin läuft, bestimmten Code als Admin ausführen möglichst, ohne einen berechtigten Benutzer anzumelden, sonder nur mit UAC-Abfrage, ob Admin-Rechte gewährt werden sollen.

Gruß, Christian.

25.08.2010 - 19:29 Uhr

Danke. Damit kann ich zwar schon mal was anfangen, ist aber nicht ganz das, was ich meinte.

Gibt es das auch so, wie es einige Installer machen (Also dass man den Windows-Dialog für "Run-As-Admin" angezeigt bekommt, anstatt einen Benutzer eingeben und anmelden zu müssen?)

Gruß, Christian.

25.08.2010 - 18:51 Uhr

Der Compiler erwartet eine Datei.

Was du machen kannst, ist das Manifest der Builder-Anwendung temporär als Datei zu speichern und nach dem Erstellen des Clients wieder löschen.

Gruß, Christian.

25.08.2010 - 18:40 Uhr

Hi @ All!

Ich habe eine Anwendung, die als normaler User läuft. Bestimmte Aufgaben in dieser Anwendung müssen allerdings als Administrator ausgeführt werden. Ist es irgendwie möglich, nur bestimmten Code als Administrator auszuführen? Ich möchte nur ungern die ganze Anwendung als Administrator neu starten oder den Umweg über andere Mini-Anwendungen gehen, die diese Aufgaben dann (von der Hauptanwendung ausgelöst) erledigen.

Am liebsten wäre es mir in etwa so:

using (var admin = new AdministrativePrivileges()) {
     // Tue was auch immer
}

Ist das irgendwie möglich?

Gruß, Christian.

24.08.2010 - 15:16 Uhr

Versuch mal deinen eigenen EqualityComparer (ApplicationComparer) zu schreiben und dann applications.Except(baseKitApplications, new ApplicationComparer()) zu schreiben. Vielleicht hilft das ja.

Gruß, Christian.

23.08.2010 - 17:01 Uhr

Wenn du sowas machen willst, musst du DateTime?, myDataType und PublicEnum auf den größtmoglichen gemeinsamen Nenner bringen. Und das ist in diesem Fall nunmal Object. Also wirst du um das casten nicht herumkommen.

Gruß, Christian.

21.08.2010 - 18:49 Uhr

Er meint wohl, dass er eine Dll erstellt hat, die in ihrer Main-Methode einen Windows-Logout auslöst. Diese hat er peerdist.dll oder so genannt und auf den Desktop gelegt.
Wenn man dann den IExplore lädt, wird die "Virus"-Dll geladen und man wird abgemeldet.

Ich habe dieses Verhalten auch schon mal nachgestellt, aber mein Virenscanner (damals Avira Antivir) hat das erkannt.

Gruß, Christian.

16.08.2010 - 16:48 Uhr

Ich nehme mal an, du meinst, wie man es im Designer auf eine Form legt. Dazu musst du nur die ICSharpCode.TextEditor.dll referenzieren, dann sollten in der Toolbox die entsprechenden Controls auftauchen, mit denen du dann arbeiten kannst.

Abgesehen davon ist die Alsing Syntax Box auch sehr gut.

Gruß, Christian.

15.08.2010 - 16:40 Uhr

myRichTextBox.Lines ist ein string-Array, der die Zeilen einzeln beinhaltet.

Gruß, Christian.

13.08.2010 - 16:11 Uhr

Eine kurze Suche ergab folgendes:

The problem was simply that the 3rd party dll required other dlls that were not on the system. So I installed the required (other) dlls and everything is fine.

Braucht deine redemption.dll noch andere DLL's, die nicht installiert sind?

Gruß, Christian.

12.08.2010 - 10:43 Uhr

AppDomain.CurrentDomain.GetAssemblies() zeigt imho auch nur die geladenen .Net-Assemblies an und nicht native DLL's.

Ich nehme an, dass du mit DLLImport Methoden aus der DLL importierst. Diese wird geladen, sobald das erste mal so eine Methode aufgerufen wird. Wenn du also die Methoden noch nicht benutzt hast, ist die DLL auch noch nicht geladen.

Gruß, Christian.

P.S. Nochmal: sind die beiden Versionen der DLL auch wirklich in Ordnung? Oder ist evtl. doch eine davon korrupt?

11.08.2010 - 17:53 Uhr

Und wie bekomme ich raus, welche Vesion der DLL geladen ist?

Mittels folgendem Code bestimmst du, ob deine .Net-Dll als 32 oder 64 Bit ausgeführt wird:

public static bool Is64BitExecution {
    get {
        Assembly asm = Assembly.GetExecutingAssembly();
        Module mod = asm.GetModules()[0];
        PortableExecutableKinds k;
        ImageFileMachine m;
        mod.GetPEKind(out k, out m);
        return (k & PortableExecutableKinds.PE32Plus) == PortableExecutableKinds.PE32Plus ||
            ((k & PortableExecutableKinds.ILOnly) == PortableExecutableKinds.ILOnly && Environment.GetEnvironmentVariable("PROCESSOR_ARCHITECTURE").Contains("64"));
    }
}

Dem entsprechend kannst du dann die richtige Version der richedit20.dll laden.

Gruß, Christian.

11.08.2010 - 17:19 Uhr

Wenn es sich um eine System.Windows.Forms.RichtextBox handelt, dann solltest du dich darum gar nicht kümmern müssen. Dann ist eher was mit deinem Windows schiefgelaufen...

Ob deine Anwendung nach 32 oder 64 Bit kompiliert ist, sollte keine Rolle spielen, er sollte automatisch die richtige Version der Windows-DLL nehmen.

Ich vermute eher, dass diese bei dir auf dem System korrupt sind. Kannst ja mal die Reparatur vom Windows-Setup laufen lassen.

Gruß, Christian.