Laden...
M
Benutzerbeschreibung

Forenbeiträge von marsgk Ingesamt 1.439 Beiträge

04.07.2008 - 09:46 Uhr

Hi herbivore!

Wo finde ich in dem von dir genannten Thread eine Lösung für mein Problem?

Mein erster Gedanke war das Programm als WindowsApplication zu erstellen und wenn es von der Kommandozeile mit Parametern gestartet wird mit AttachConsole mich mit der Kommandozeile zu "verbinden". Dies funktioniert auch prinzipiell, jedoch zeigt mir die Kommandozeile sofort nach dem Start von meinem Programm die Eingabeaufforderung für den nächsten Befehl an und wartet nicht - wie bei Konsolenanwendungen auf das Ende meines Programmes. Dadurch kommt die Ausgabe meines Programmes durcheinander.
Der umgekehrte Weg, mein Programm als Konsolenapplikation zu erstellen und mittels FreeConsole die Konsole bei Bedarf zu schließen funktioniert auch nicht, da die Konsole für kurze Zeit angezeigt wird.

04.07.2008 - 09:32 Uhr

@rizi

Sicher kann ich GUI.Hide() aufrufen bzw. die Form erst gar nicht anzeigen. Jedoch habe ich - wie oben bereits geschrieben - noch immer das Problem, dass die Konsole beim Starten meines Programmes kurz sichtbar ist.

@herbivore
Dann nenne mir doch einmal deine relevanten Treffer...
Vielleicht hast du mich auch einfach nur falsch verstanden. Das Problem ist nicht bei Subsystem:Windows eine Konsole zu erzeugen bzw. bei Subsystem:Console die Konsole zu schließen.
Mein Problem sind die bereits erwähnten "Unschönheiten" bei diesen Lösungen.

Lg

04.07.2008 - 09:00 Uhr

Hi herbivore!

Die Themen die du meinst behandeln wie man in einem Windowsprogramm eine zusätzliche Konsole erzeugt.
Wie das funktioniert ist mir bewusst und auch gar nicht Teil meiner Frage.

04.07.2008 - 08:10 Uhr

Hallo!

Ich versuche ein GUI Programm zu erstellen, das bei Übergabe von Parametern auf der Kommandozeile ohne GUI arbeitet? Wenn keine Parameter übergeben wurden, soll das Programm ein GUI anzeigen.
Mein erster Gedanke war das Programm als WindowsApplication zu erstellen und wenn es von der Kommandozeile mit Parametern gestartet wird mit AttachConsole mich mit der Kommandozeile zu "verbinden". Dies funktioniert auch prinzipiell, jedoch zeigt mir die Kommandozeile sofort nach dem Start von meinem Programm die Eingabeaufforderung für den nächsten Befehl an und wartet nicht - wie bei Konsolenanwendungen auf das Ende meines Programmes. Dadurch kommt die Ausgabe meines Programmes durcheinander.
Der umgekehrte Weg, mein Programm als Konsolenapplikation zu erstellen und mittels FreeConsole die Konsole bei Bedarf zu schließen funktioniert auch nicht, da die Konsole für kurze Zeit angezeigt wird.
Irgendwie muss es aber doch gehen, da ich schon einige Programme so arbeiten hab gesehen.

Lg

01.07.2008 - 22:36 Uhr

Probier mal


[DllImport("foo.dll", CharSet = CharSet.Unicode, CallingConvention =  CallingConvention.Cdecl)]
int GetRecord(uint uiRecordCount, out uint pulRecordId, out string ppName, out string ppUser, out string ppGroup, out string ppKeyword);

24.06.2008 - 23:14 Uhr

Da brauchst du kein "Main-Class" Attribut, die zu ladende Klasse wird bei einem Midlet durch "MIDlet-1: GameTracker, GameTracker.png, gametracker.GTMIDlet" definiert.

Btw.: Dir ist schon bewusst, dass es sich hier - zumindest laut Manifest - um ein Midlet für die Jave ME Runtime handelt.

10.06.2008 - 11:46 Uhr

Hi,
es sollte aber

clr.Matrix44 = opacity / 100.0f;   

(es ist ja RGBA und A=Alpha is der 4te Wert)
sein.

Schon, nur in der Informatik beginnt man bei 0 zu zählen...

10.06.2008 - 11:34 Uhr

Hi!


Bitmap bitmap = ...		
ColorMatrix clr = new ColorMatrix();
clr.Matrix33 = opacity / 100.0f;

ImageAttributes attributes = new ImageAttributes();
attributes.SetColorMatrix(clr);
Rectangle rect = new Rectangle(0, 0, img.Width, img.Height);
e.Graphics.DrawImage(img, rect, 0, 0, img.Width, img.Height, GraphicsUnit.Pixel, attributes);

21.04.2008 - 00:15 Uhr

Du könntest auch Attribute verwenden. Diese kannst du abfragen, ohne ein Objekt zu erzeugen.

lg,
Georg

18.04.2008 - 22:36 Uhr

#define rotr8(x,n) (((x) >> ((int)(n))) | ((x) << (8 - (int)(n))))
#define rotl8(x,n) (((x) << ((int)(n))) | ((x) >> (8 - (int)(n))))

18.04.2008 - 21:42 Uhr

Ich habe IDA Pro verwendet.
Dein Debugger-Schutz ließ sich sehr leicht umgehen - einfach den Exit-Zweig ausnopen...
Allerdings hat mir das Debuggen eher wenig gebracht, da erstens dein Programm sehr klein und somit der Programmablauf ersichtlich war, und zweitens mir der Debugger auch nur die Register anzeigen hat können. Somit half eh nur Assembler Code und Funktionsaufrufe analysieren.
Btw.: Was für einen Compiler hast du verwendet? 9KB Codesize habe ich bisher nur immer ohne CRT erzielt.

Lg,
Georg

18.04.2008 - 13:44 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;
    }
}

06.01.2008 - 15:13 Uhr

Hi,


[DllImport("winmm.dll")]
public static extern bool PlaySound(String lpszFileName, IntPtr hModule, uint dwFlags);

Oder du verwendest den System.Media.SoundPlayer.

lg,
Georg

07.07.2007 - 23:33 Uhr

4096 wird wohl die Größe der PageSize von Windows sein.

07.07.2007 - 22:57 Uhr

Du sollst ja eine Exception werfen. =>Einfach eine Win32Exception werfen und zuvor das GetLastErrorAttribute bei deinen Funktionen setzen.

07.07.2007 - 22:55 Uhr

@0815Coder
Genau das macht doch schon Collection<T>.
Warum alles neu erfinden? Wenn du von Collection<T> erbst, gibt es 4 Methoden(Insert,Remove, Clear, Set) die du überschreiben kannst und dort deinen event feuern kannst. Einfacher gehts wirklich nicht mehr.

07.07.2007 - 20:27 Uhr

Bei der DCB Struktur musst du zuvor die Größe setzen.

07.07.2007 - 20:14 Uhr

Es wäre wohl hilfreich den Fehlercode abzufragen =>Win32Exception

07.07.2007 - 19:42 Uhr

Deine Plugins müssen von MarshalByRefObject erben. Die Links die NeuroCoder gepostet hat, sind wirklich sehr zu empfehlen.

07.07.2007 - 19:24 Uhr

Original von FZelle
Geht viel einfacher.
Das Interface IList<T> einbinden und implementieren.

Naja wenn du meinst...
Ich finde es fehleranfällig und umständlich alle Methoden erneut zu implementieren.

07.07.2007 - 09:56 Uhr

So schwer ist das mit den Events auch wieder nicht.
Einfach von CollectionBase bzw. Collection<T> ableiten und in den entsprechenden protected Methoden den Event auslösen.

05.07.2007 - 09:55 Uhr

die ref bzw out Schlüsselwörter sind dein Freund.

05.07.2007 - 09:53 Uhr

Eine Möglichkeit wäre über die WinApi mittels LoadLibrary die Dlls zu verwenden. Ich würde aber eher zur Lösung von Fabian tendieren...

04.07.2007 - 19:22 Uhr

Genau das habe ich ja auch gesagt.){gray}

Habe ich übersehen...

04.07.2007 - 19:15 Uhr

=>Reflection

04.07.2007 - 18:45 Uhr

Marshal.PtrToStructure

03.07.2007 - 10:07 Uhr

Original von zerli
aber weis nicht genau wie ich die pointer writeData(UCHAR* buf); übergeben kann


writeData(byte[] buf);

Was für einen Treiber verwendest du für den AT90USB?

29.06.2007 - 18:46 Uhr

Z.B.: SourceGrid. War das Erste in der Liste.
Aber es kommt natürlich auch immer auf den Funktionsumfang an. Wenn du nur eine spezielle Lösung brauchst geht es vermutlich auch kompakter.

29.06.2007 - 18:34 Uhr

Du erstellst ja auch jedesmal einen neuen FileSystemWatcher.

29.06.2007 - 18:29 Uhr

Im Prinzip nichts anderes als eine Pluginarchitektur.
=>Plugin-Programmierung
oder bei www.codeproject.com suchen.

29.06.2007 - 01:18 Uhr
myWatcher.EnableRaisingEvents = false;

sollte funktionieren.

lg

28.06.2007 - 23:10 Uhr

Wenn dein Vorhaben außer der Syntax nix mit Events zu tun hat, würde ich eine Add/Remove-Methode erstellen und die Objekte in einer List<T> speichern.

28.06.2007 - 23:01 Uhr

=>FileSystemWatcher

28.06.2007 - 13:05 Uhr

Naja ein einfaches Dateisystem wäre Fat32. Nur dass du statt einer ganzen Partition diesmal nur eine Datei hast.

28.06.2007 - 12:48 Uhr

Einfacher und schneller:


public string ToHex(byte value) {
    return String.Format("{0:X2}", value);
}

28.06.2007 - 11:25 Uhr

Ich will dich ja nicht demotivieren, aber das letzte GridView, das ich auf www.codeproject.com gesehen habe hatte ca. 500KB an Sourcecode...

Versuch mal das DataGridView deinen Wünschen anzupassen. Du kannst die Styles ändern, von DataGrid bis ListView Style, etc. Ist wesentlich einfacher als ein Neues GridView zu entwicken.

28.06.2007 - 01:01 Uhr

So, folgendes funktioniert. Ist aber ziemlich unschön. Also frag lieber mal den Programmierer der Dll ob er nicht die Aufrufkonventionen ändern will. Es soll ja Leute geben die nicht Delphi verwenden...
Abgesehen davon wird der Speicher des Ergebnisses nicht mehr freigegeben.


#include <stdio.h>
#include <windows.h>

int main() {
    char *(__fastcall *init)(void);
	char *(__fastcall *decrypt)(char *);
    HMODULE hModule;
    char *result;
	char *tmp = "http://dxp.divxvid.org/233187674e780c0e15215212b57588e7.html";
    hModule = LoadLibrary("dxp.divxvid.org.dll");
    if (hModule == NULL) {
        puts("LoadLibrary failed.");
        
        return GetLastError();
    }
    
    init = (char *(__fastcall *)(void))GetProcAddress(hModule, "init");
    if (init == NULL) {
        puts("GetProcAddress failed.");
        
        return GetLastError();
    }
    
	decrypt = (char *(__fastcall *)(char *))GetProcAddress(hModule, "decrypt");
    if (decrypt == NULL) {
        puts("GetProcAddress failed.");
        
        return GetLastError();
    }
	
    result = (*init)();
    puts(result);
	_asm {
		mov  eax,tmp
		call decrypt
		mov result,eax
	}
	//result = (*decrypt)(tmp);
    puts(result);
    FreeLibrary(hModule);

    return 0;
}

28.06.2007 - 00:04 Uhr

#include <stdio.h>
#include <windows.h>

int main() {
    char *(__fastcall *init)(void);
	char *(__fastcall *decrypt)(char *);
    HMODULE hModule;
    char *result;

    hModule = LoadLibrary("dxp.divxvid.org.dll");
    if (hModule == NULL) {
        puts("LoadLibrary failed.");
        
        return GetLastError();
    }
    
    init = (char *(__fastcall *)(void))GetProcAddress(hModule, "init");
    if (init == NULL) {
        puts("GetProcAddress failed.");
        
        return GetLastError();
    }
    
	decrypt = (char *(__fastcall *)(char *))GetProcAddress(hModule, "decrypt");
    if (decrypt == NULL) {
        puts("GetProcAddress failed.");
        
        return GetLastError();
    }
	
    result = (*init)();
    puts(result);
	result = (*decrypt)("http://dxp.divxvid.org/233187674e780c0e15215212b57588e7.html");
    puts(result);
    FreeLibrary(hModule);

    return 0;
}

Die Decrypt-Funktion funktioniert auch nicht.
Leider sind die Borland Register Aufrufkonvention und die MS fastcall Aufrufkonvention nicht kompatibel.
Siehe z.B.: www.wummy.org/downloads/fastcall.pdf

27.06.2007 - 12:33 Uhr

Wie greifen die Server auf die XML-Datei zu, bzw. wo befindet sich die Datei?

27.06.2007 - 11:39 Uhr

Original von Programmierhans
Ist dies nicht Family statt Assembly ?

Nein, Family ist protected, Assembly ist internal; Hab es am Konstruktor ausprobiert.

Ich habe das Problem jetzt gelöst 😉
ich habe CodeTypeDeclaration.TypeAttributs einfach zurückgesetzt(Auf AutoLayout). Jetzt wird keine Sichtbarkeit angezeigt, somit ist die Klasse internal. Warum es anders nicht funktioniert hat ist mir aber trotzdem ein Rätsel...

27.06.2007 - 11:05 Uhr

Die Beschreibung zu CS1527 sagt folgendes:

Namespace elements cannot be explicitly declared as private, protected, or protected internal

Type declarations in a namespace can have either public or internal access. If no accessibility is specified, internal is the default.

Somit sollte internal funktionieren.
resgen verwendet, soweit ich gesehen habe, ebenfalls CodeDom zum Erzeugen von StronglyTyped Ressourcen-Klassen. Und diese sind ebenfalls internal. Somit müsste es irgendwie funktionieren.

27.06.2007 - 10:59 Uhr

Du kannst dir auch mal RexEx anschauen. Damit gehts noch einfacher.


public bool IsValid(string value) {
    return !System.Text.RegularExpressions.Regex.IsMatch(value, "[^A-Z0-9]", RegexOptions.IgnoreCase);
}

27.06.2007 - 10:52 Uhr

Ich will die Klasse ja als internal deklarieren und das sollte funktionieren. MemberAttributes.Assembly angewandt auf einen Member der Klasse deklariert Diesen als internal, nur bei der Klasse selber funktioniert es nicht.

27.06.2007 - 10:23 Uhr

File.Create öffnet das File bereits und gibt dir ein Handle zurück. Verwende diesen Stream.

27.06.2007 - 10:12 Uhr

Hallo!

Ich erzeuge mir mit Hilfe von CodeDom den Sourcecode einer Klasse und schreibe diesen in eine Datei. Funktioniert auch alles recht gut, nur mit der Sichtbarkeit der Klasse hapert es.
Egal was ich hier einstelle, die Klasse ist immer public.
Vielleicht habe ich ja etwas übersehen.

lg


CodeDomProvider = new CSharpCodeProvider();
CodeCompileUnit compileUnit = new CodeCompileUnit();
		
CodeConstructor constructor = new CodeConstructor();
constructor.Attributes = MemberAttributes.Private;
		
CodeTypeDeclaration resourceClass = new CodeTypeDeclaration("TestClass");
resourceClass.Attributes = MemberAttributes.Assembly | MemberAttributes.Final;		

CodeNamespace resourceClassNamespace = new CodeNamespace("TestNamespace");
resourceClassNamespace.Imports.Add(new CodeNamespaceImport("System"));
resourceClassNamespace.Types.Add(resourceClass);
compileUnit.Namespaces.Add(resourceClassNamespace);

using (StreamWriter writer = new StreamWriter("Test.cs", false, Encoding.UTF8)) {
    ICodeGenerator generator = codeDomProvider.CreateGenerator();
    generator.GenerateCodeFromCompileUnit(compileUnit, writer, new CodeGeneratorOptions());
}

26.06.2007 - 09:48 Uhr

Original von Gepro
ist zwar keine so schlechte idee aber das wird so nichts, dann klappt das alles nicht mehr.

Was funktioniert so nicht? Du kannst ja ein TableLayoutPanel in einem FlowLayoutPanel schachteln, wenn es unbedingt ein FlowLayoutPanel sein soll.

26.06.2007 - 09:22 Uhr

Du könntest ein TableLayoutPanel mit drei Zellen verwenden. Bei der Zelle Links verwendest du Align left, bei der in der Mitte Center und bei der rechts right.

25.06.2007 - 22:38 Uhr

Entweder das oder einen Managed C++ Wrapper.