Delphi-PRAXiS

Delphi-PRAXiS (https://www.delphipraxis.net/forum.php)
-   Programmieren allgemein (https://www.delphipraxis.net/40-programmieren-allgemein/)
-   -   C# Parameter zuweisen (https://www.delphipraxis.net/144752-c-parameter-zuweisen.html)

EWeiss 15. Dez 2009 20:48


C# Parameter zuweisen
 
Mache mal einen neuen Thread da es um eine andere Sprache geht
Bin den rat von Elvis gefolgt und habe nun eine Managed DLL für C# geschrieben sollte mit VB.NET nun funktionieren(nicht getestet)

Hab gestern Nacht noch die C# Anwendung geschrieben.
Leider habe ich das gleiche problem wie vorher die Anwendung läuft nur richtig wenn ich in der Developer Umgebung bin und diese Debugge.
Langsam bekomme ich die Krise finde einfach das Problem nicht warum es als Eigenständige Exe nicht laufen will.

Auch habe ich den Eindruck das unter Windows 7 irgendwie eine falsche GetHINSTANCE übergeben wird.
ICh merke das daran weil keine Text Messagen mehr an das Window gesendet werden .. Im Caption sollte eigentlich der Titel
des gerade abgespielten Songs angezeigt werden.

Das sind meine zwei versuche!
Code:
IntPtr hInstance = Marshal.GetHINSTANCE(Assembly.GetExecutingAssembly().GetModules()[0]);
IntPtr hInstance = Marshal.GetHINSTANCE(typeof(Application).Module);
Aktuell verwende ich die zweite.

Schnipp .. macht dem thread was kleiner
Bei Bedarf kann ich das Sample zuschicken.

Elvis 15. Dez 2009 21:15

Re: C# Parameter zuweisen
 
Application steckt in System.Windows.Forms.dll, dessen Module bringt dir gar nix.
Du willst zum Beispiel sowas hier typeof(Program).Module hernehmen. Wenn Dein Einsprungspunkt in "Program" steckt.
In einer Instanzmethode eines Typen, der in deiner Exe liegt, ginge auch einfach GetType(), oder halt GetExecutingAssembly.

Wofür brauchst du das überhaupt? Ich kann mich nicht entsinnen, wann ich das einmal gebraucht hätte seit ich in .Net entwickle.

Ansonsten zeige mal her was du denn in deiner Echse anstellst was zum explodieren führt.

Du kannst in deinem Einsprungspunkt einen Handler für undhandled Exceptions registrieren, damit du siehst wo es geraucht hat.
http://msdn.microsoft.com/en-us/libr...exception.aspx
.Net Exceptions haben einen Stacktrace, der sollte dich auf die richtige Fährte führen.

Wenn e dann läuft, dann solltest du das was du da bisher in C# geschrieben hast internal deklarieren, damit es nicht außerhalb der Classlib sichtbar ist.
Denn du willst das vernünftig verpacken, so wie das bisher aussieht wirst du kaum einen .Net Dev überzeugen können das nicht augenblicklich wieder zu schließen und nie wieder anzufassen.

EWeiss 15. Dez 2009 21:52

Re: C# Parameter zuweisen
 
Liste der Anhänge anzeigen (Anzahl: 1)
Zitat:

Wofür brauchst du das überhaupt? Ich kann mich nicht entsinnen, wann ich das einmal gebraucht hätte seit ich in .Net entwickle.
Ich benötige die HInstanze um alle Messagen an die Form hinter der Form zu schicken.
Ohne dem Funktionieren die Plugins überhaupt nicht denn das ist mein Fake_Winamp Handle welches früher Emuliert werden mußte
mit der Winamp Class für Visualisierungen Winamp v1.x

Wenn ich jetzt ein Plugin starte welches sich an meine Anwendung andockt dann wird dieses Unsichtbare Fenster(Handle) als Fake_Winamp Window übergeben.
Das "hwnd_winamp = FindWindow("Winamp v1.x",NULL);" ist mein unsichtbares Window = hInstance.

Ich weiss jetzt nicht ob du verstehst was ich meine.(manchmal drücke ich mich etwas unverständlich aus)

Hab ne PN geschickt.

Danke das du dir die mühe machst mal hineinzuschauen.
Sei bitte nicht zu streng mit mir bin kein C# Developer ;)

gruss Emil

EWeiss 17. Dez 2009 16:53

Re: C# Parameter zuweisen
 
Erledigt ..
Funktioniert nun bestens.
Das problem lag bei der AVS.dll

gruss


Alle Zeitangaben in WEZ +1. Es ist jetzt 12:29 Uhr.

Powered by vBulletin® Copyright ©2000 - 2024, Jelsoft Enterprises Ltd.
LinkBacks Enabled by vBSEO © 2011, Crawlability, Inc.
Delphi-PRAXiS (c) 2002 - 2023 by Daniel R. Wolf, 2024 by Thomas Breitkreuz