Laden...
V
ViperNeo myCSharp.de - Member
Professional IT Consultant & Software Architect Darmstadt Dabei seit 22.02.2008 352 Beiträge
Benutzerbeschreibung

Forenbeiträge von ViperNeo Ingesamt 352 Beiträge

16.04.2013 - 08:46 Uhr

eigentlich stört mich hier nur der generierte designer code und wenn man ehrlich ist ist der reiz das es doch irgendwie anders möglich sein muss einfach da^^ handelt sich nicht um ein kundenprojekt, daher spiele ich da halt etwas rum. naja, glaube ich werde die subpanel lösung ausarbeiten, ist wohl der weg mit dem geringsten widerstand 😉

14.04.2013 - 22:19 Uhr

hm, suche es gerne morgen mal raus, allerdings direkt kontrolliert ob der clientsize wert auch kleiner wird habe ich jetzt noch nicht. grundsätzlich zeigt er allerdings eine non-client-area an die ich seperat bepainten kann. habe aktuell nur noch das problem das beim resize des controls die nca ab und an verschwindet .... glaube das problem ist nahezug nicht lösbar ohne ein subpanel im eigentlichen user control... echt ärgerlich.

08.04.2013 - 20:08 Uhr

Hallo Leute,

ich suche seit Tagen verzweifelt nach einer Lösung und komme einfach nicht voran. Jeder kennt sicher das Panel und seinen AutoScrollMode. Die Scrollbars sind auch im Designer in einer NonClientArea im Control, heißt die ClientArea wird anscheinend automatisch verkleinert um für die Scrollbars Platz zu schaffen.

Ich möchte nun eigentlich genau diese Funktion nutzen, allerdings meine eigenen Scrollbalken nutzen. Panel und Scrollbalken sind fertig, allerdings kann ich sie derzeit nur manuell an die enstprechende Position schubsen und dadurch das sie im normalen ClientRectangle drin hängen erreicht man nie 100%ig die rechte untere Ecke da die Scrollbalken einen Teil des Bereichs einnehmen...

So, nun habe ich mit WM_NCCALCSIZE etc. rumgespielt und habe es auch geschafft das ich einen kleinen Teilbereich des Panels als NonClientArea habe. Hier kann ich jedoch die Scrollbars nicht reinschubsen....

Kennt jemand eine Lösung für dieses Problem? Wäre super wenn jemand einen Tipp hätte.

Danke!

Grüße
viperneo

20.07.2011 - 21:09 Uhr

Okay, das ganze muss aber in eine bereits bestehende Anwendung rein und die basiert auf .net 1.1

Ich suche auch nichts in Richtung tooltip sondern wirklich eine interaktive Führung schritt für schritt durch einzelne Funktionen...

Grüße sven

20.07.2011 - 19:36 Uhr

Hallo Leute,

ich muss in eine bestehende Anwendung eine interaktive Einführung bauen... Das bedeutet folgendes:

Der User bekommt einen Dialog in dem er diverse Szenarien auswählen kann, die mit der Anwendung umsetzbar sind. Beim Klicken auf ein solches Szenario soll der Anwender durch die Awnendung geführt werden:

  1. Schritt "Klicken Sie auf diesen Button"
  2. Schritt (eine datei wird erstellt) "Klicken Sie hier um den Dateinamen einzugeben"
    usw. usf...

Grundsätzlich soll eben immer neben dem entsprechenden control eine Art ToolTip auftauchen die dem Anwender zeit und sagt was er als nächstes zu tun hat.

Ich habe mir heute den Kopf damit zerbrochen wie man das umsetzen könnte und habe auch einen Ansatz verfolgt, der aber leider nicht zum gewünschten Ergebnis geführt hat.

Im Prinzip wäre es ja sowas, wie wenn ich die Anwendung automatisiert laufen lassen würde. Ist sowas denn überhaupt machbar?

Ich hoffe jemand hat eine Idee oder vllt sogar einen Hinweis, Bücher, Tips was weiß ich, damit ich mal eine Grundidee für die Umsetzung bekomme.

Danke schonmal!

//edit: Mein Ansatz bestand aus einem Manager, der Szenarien Objekte enthält. Diese wiederum enthalten Schritte, jeder Schritt bestand aus dem Target-Control und einem Text. Problem bei dieser Umsetzung war, dass ich bei der Erstellung des Szenarios nicht Formübergreifend arbeiten kann und dazu ist mir auch noch nicht aufgefallen wie ich auf die Benutzerinteraktion reagieren soll... Ach ich bin echt ratlos zurzeit 😦 hoffe jemand hat eine idee...

ich will auch nochmal ausdrücklich sagen, dass ich keine fertige lösung suche, wenn es eine gibt und dazu noch open source natürlich immer her damit, aber grundsätzlich gehts mir um ein konzept, denke umsetzen kann ich das dann selbst.

Grüße
ViperNeo

06.05.2011 - 07:59 Uhr

Hallo,

ich habe eine Projektanfrage die mich wirklich reizt, jedoch weiß ich zurzeit nicht ob das realisierbar ist.

Es geht um folgendes http://www.scannerkiller.com/welcome.html

Hat da jemand Infos dazu oder Erfahrung?

Grüße ViperNeo

19.01.2011 - 14:27 Uhr

das ist alles ab .net 2.0. wenn sich das gleich verhält, dann ist es fraglich warum erst im netzwerkpfad nach den assemblys geschaut wird und nicht sofort im gac.

19.01.2011 - 13:19 Uhr

Hallo Leute,

heute habe ich ein sehr lustiges Problem von einem Kunden aufgetragen bekommen. Er hat eine unserer Applikationen als Netzwerkinstallation im Haus in Betrieb. Die Anwendung wird über das Netzwerk gestartet, über eine Freigabe.

So, nun startet es dem Kunden zu langsam und er hat mit einem Netzwerk-Sniffer mal geschaut was während des Startprozesses so alles passiert. Dabei ist ihm aufgefallen, und jetzt kommts, das die Applikation mehrere DLLs sucht (z.B. mscorlib) und zwar in dem Netzwerkpfad (de-DE/mscorlib.resources.dll, de-DE/mscorlib.resources.exe) und so ein Zeug.

Nun bin ich der Meinung, dass das eine .NET Framework Geschichte ist und durch das Starten übers Netzwerk das Framework versucht die Assembly erstmal im Bin Verzeichnis zu suchen und danach erst in den GAC geht. Eigentlich ist es ja anders rum, außer man definiert es anders in der Applikation.

Nun brauche ich zum untermauern einen handfesten Beweis, allerdings finde ich nichts in der MSDN. Die Anwendung ist recht alt und nutzt das .NET Framework 1.1.

Eigentlich ist das ganze total sinnfrei, da der Lookup fehlschlägt und da vllt für die Suche nur ein paar Bytes übers Netzwerk laufen, aber der Kunde stellt sich hartnäckig auf diesen Standpunkt.

Hat hier jemand vllt eine Information für mich?

Grüße
ViperNeo

14.01.2011 - 23:25 Uhr

grundsätzlich kann man so etwas mit jeder art von webservice realisieren. php soap, java, asp egal was du willst 😉

muss nur jemand das backend dafür schreiben was aber bei dem geringen aufwand nicht gerade aufwändig ist. die .net anwendung muss dann nur den webservice aufrufen und gut ist.

grüße
viperneo

08.12.2010 - 18:31 Uhr

Ein Ziel verfolgt die Anwendung derzeit noch nicht. Ich habe das in einigen Screenshot Tools gesehen und mich gefragt, wie die das wohl machen und einfach mal versucht sowas selber zu basteln.

Was ich bislang geschafft habe ist, per EnumChildWindows mir das passende Control zu suchen und anhand des Handels kann man auf das Teil zugreifen. Bilder vom Scrollbereich machen indem ich per SendMessage einen Scroll Befehl absetze funktioniert schon, allerdings funktioniert das nicht richtig, nicht immer gleich und vorallem sehr träge und kompliziert. Daher dachte ich es gibt vielleicht eine Möglichkeit, das entsprechende Control zu klauen und in voller Größe selbst zu hosten, zu Screenshotten oder eben in einem Offset Bereich neu in voller Größe zu zeichnen und diesen dann abfotografieren.

Nur die Suche nach einem Ansatz verläuft bislang ins Leere. Würde mich echt mal interessieren wie die das machen (Beispiel SnagIt, nutzt zwei Methoden, entweder Control in der Größe anpassen oder autoamtisiertes Scrollen mit Einzel capture).

Grüße ViperNeo

08.12.2010 - 16:45 Uhr

es geht um ein control in einer fremden applikation. passt dein link da wirklich? konnte auf den ersten blick keinen zusammenhang finden.

08.12.2010 - 16:04 Uhr

hm, das fehlerhandle? du meintest fensterhandle oder? wie funktioniert denn das mit dem umleiten WM_PAINT nicht auf dem Screen sondern in einem Bitmap oder sowas?

Gibts dafür API Funktionen?

08.12.2010 - 11:34 Uhr

Hallo Leute,

wie im angehängten Bild dargestellt versuche ich ein beliebiges Fenster mitsamt seines Scrollbaren Bereichs zu capturen.

Im Prinzip läuft es so ab, dass der User das entsprechende Control anwählt und dann sollte ein Screenshot von dem kompletten Bereich (ohne Scrollbar) gemacht werden.

Irgendwie finde ich dafür keinen Ansatz. Das Handle des Controls kann ich schon ermitteln, allerdings weiß ich nicht wie ich das Teil dann vergrößere oder in einem Offscreen Part komplett zeichnen lasse oder sowas.

Hat jemand eine IDee wie man vorgehen könnte?

Grüße
ViperNeo

21.09.2010 - 12:47 Uhr

jop, wird aufgerufen. nochmal ganz kurz erklärt... ich möchte eigentlich nurr, dass meine gesamten menüs aussehen wie die im darunterliegenden windows system. das heißt das design soll sich anpassen je nach systemgrundlage.

baut man z.b. eine win forms anwendung unter windows 7 und setzt ein menustrip drauf, bekommt man es iregndwie nicht hin, dass dieses komplett im windows 7 stil gerendert wird. das ist immer der professional (vs look) oder wenn man auf system stellt ein ganz komischer. ist das noch niemandem aufgefallen?

20.09.2010 - 15:55 Uhr

Hallo Leute,

ich habe gerade etwas komisches festgestellt. Und zwar entwickle ich im Betrieb noch unter .NET Framework 1.1. In diesem werden alle MenuStrips und ContextMenuStrips standardmäßig exakt wie in meinem WIndows System eingestellt dargestellt.

In neueren Frameworks bekomme ich es jedoch nicht hin. Der ProfessionalRenderer macht ja immer das Visual Studio Design irgendwie und stelle ich den Renderer auf System um, kommt etwas gnaz seltsames dabei raus. Ich möchte aber eigentlich nur den SystemStil benutzen. Gibt es das in den neuen Frameworks nicht mehr? Oder kennt da jemand eine Lösungß

Danke!

Grüße ViperNeo

16.09.2010 - 21:33 Uhr

Hallo Leute,

wie der Titel schon sagt, würde ich gerne die Handles von Controls in fremden Prozessen auslesen. Kennt jemand ne API-Funktion oder sowas dafür? Ich werde einfach nicht fündig....

Danke schonmal 😃

Grüße
ViperNeo

09.09.2010 - 17:23 Uhr

Hallo Leute,

ich würde gern ein UserControl schreiben, was sich wie ein Panel verhält.

Sprich es sollen weitere Controls in der DesignTime hinzugefügt werden können in dieses UserControl. Irgendwie finde ich aber genau dafür keinen Ansatzpunkt. Habe schon einiges probiert und bin dann doch wieder beim Ableiten von Panel hängen geblieben.

Eine andere Frage wäre noch, wenn ich von Panel ableiten muss, ist es möglich zum Beispiel die Propertys AutoScrollMinSize und so weiter für den Benutzer meines Controls auszublenden, sodass er diese gar nicht benutzen kann. Denn diese dinger brauceh ich nicht.

Wäre cool wenn mir jemand fix helfen könnte 😃

Danke schonmal!

Grüße
ViperNeo

25.08.2010 - 12:37 Uhr

ich hab jetzt in den Release einstellungen festgelegt das nur die Hauptanwendung kompiliert wird. Außerdem hab ich die Verweise nicht als Projektverweis sondern als Direktverweis auf das Kompilat des Plugins hinterlegt. Jetzt wird das Plugin nicht mehr kompiliert bei jedem Kompiliervorgang und es funktioniert.... Meine güte war das eine schwere Geburt. Vielen Dank!

25.08.2010 - 11:54 Uhr

Also mittlerweile sieht es so aus, dass ich keinen Umwandlungsfehler mehr bekomme, sondern er die PluginAssembly nicht laden kann. Da schmiert Assembly.GetTypes() ab, ich vermute das liegt daran, dass in dem Moment die Referenz auf die Interface Bibliothek nicht da ist.

Beide Projekte werden eigentlich mit der Interface Bibliothek kompiliert als Referenz. Also Punkt 1 sollte gewährleistet sein hoffe ich.

AssemblyResolve verwende ich in der Hauptanwendung, jedoch lässt sich diese nicht starten ohne das die Bibliothek vorhanden ist, da die AssemblyResolve erst gar nicht gefragt wird. Das könnte daran liegen das ich in der Hauptanwendung eine globales Objekt des PluginServices deklariert habe.

Nochmal zum Aufbau:
Hauptanwendung referenziert IPlugin.dll und beinhaltet den PluginServiceProvider.
Plugin referenziert IPlugin.dll und beinhaltet das zu ladende Plugin.
IPlugin definiert das Interface der Plugins und des PluginHosts.

Alle drei sind Projektmappen bei mir.

So, wenn ich nun kompiliere habe ich folgende Dateistruktur zusammenkopiert:
Anwendung.exe
IPlugin.dll
Plugins/Plugin1.dll

Das ist mein Ziel das es läuft. Wenn ich nun die Anwendung starte wird erstmal
Assembly.Load(Plugin/Plugin1.dll) geladen.
Danach werden die Types per Assembly.GetTypes() extrahiert und da knallt es. Kopiere ich nun die Plugin1.dll in das Hauptverzeichnis und lade Plugins daraus funktioniert es prima, also fehlt wohl der Bezug zur IPlugin.dll. Aber ich verstehe nicht wieso. IN jedem Beispiel das ich runterlade ist so eine Struktur problemlos möglich...

Wie sichere ich mich ab, dass beide mit der gleichen DLL kompiliert wurden und das passt. Wie sichere ich das beides in der gleihcen appDomain läuft? Oder wäre es sinnvoll das auf mehrere Auszudehnen? Wenn ja, gibts dafür Beispiele?

DAnke schonmal vielmals!

//edit: Die LoaderException von GetTypes gibt folgende aus:
{"Die Datei oder Assembly "IPlugin, Version=1.0.0.0, Culture=neutral, PublicKeyToken=null" oder eine Abhängigkeit davon wurde nicht gefunden. Das System kann die angegebene Datei nicht finden.":"IPlugin, Version=1.0.0.0, Culture=neutral, PublicKeyToken=null"}

//edit: So nun bin ich mir relativ sicher, dass das kompilat nicht übereinstimmt. weil beim kompilieren von der hauptanwendung die IPlugin.dll neu kompiliert wird... Jetzt mal ne sau blöde frage... Wie stelle ich das ab?

25.08.2010 - 10:02 Uhr

So, mittlerweile bin ich etwas schlauer geworden...

Und zwar lag es daran, dass das Plugin in einem Unterordner lag und der Bezug zur InterfaceBibliothek nicht da war...

Nun frage ich mich jedoch, wie ich das am geschicktesten löse.

Kopiere ich nun alle Assemblys in das gleiche Verzeichnis funktioniert es problemlos. Lade ich jedoch die Plugins aus einem Unterordner funktioniert es nicht. Verschiebe ich die INterface Bibliothek auch ins UNterverzeichnis geht die Hauptanwendung nicht mehr und habe ich in beiden die gleiche Interface Bibliothek können die Plugins nicht geladen werden, da sie unterschiedliche Interface Bibliothek-Dateien nutzen...

Bin für jeden TIp dankbar!

24.08.2010 - 21:23 Uhr

Hallo,

ich schreibe nochmal was zum genauen Aufbau:

Klassenbibliothek: PluginInterface
Namespace: PluginInterface
Interface: IPlugin, IPluginHost
Signiert mit starkem Namen: Ja

WinForms-Anwendung: PluginTest
Namespace: PluginTest
Klasse: PluginService : IPluginHost
Signiert mit starkem Namen: ja

Klassenbibliothek: MyPlugin
Namespace: Test.MyPlugin
Klasse: MeinErstesPlugin : IPlugin
Signiert: nein

So, die Hauptanwendung und die Pluginbibliothek verweisen beide auf die erste Bibliothek, die die Definition für die Pluginstrukturen beherbergt. Nun bekomme ich folgende Fehlermeldung wenn ich versuche ein Plugin zu laden:
"Typ Test.MyPlugin.MeinErstesPlugin kann nicht in Typ PluginInterface.IPlugin konvertiert werden."

Kann mir jemand erklären was ich übersehe oder nicht verstanden hab?

Danke!

Grüße
ViperNeo

24.08.2010 - 17:01 Uhr

hm das habe ihc doch getan... beide nutzen die gleiche klassenbibliothek in der das interface definiert ist.

24.08.2010 - 16:50 Uhr

Hallo Leute,

ich habe folgende Situation...

Ich habe eine Klassenbibliothek, die ein Interface für ein Plugin definiert. Diese Bibliothek ist mit einem Strong-Name versehen.

Dann habe ich eine Hauptanwendung, die den Plugin-Service implementiert und die Klassenbibliothek als Verweis beinhaltet. Ebenfalls mit Strong-Name.

Dann habe ich ein Testplugin geschrieben, dass ebenfalls die Klassenbibliothek beinhaltet um von dem Plugin-Interface erben zu können.

So nun habe ich eine Klasse


public class Plugin : IPlugin

Diese versuche ich später dann in der Hauptanwendung über den Plugin-Service zu casten:


newPlugin.Instance = (IPlugin)Activator.CreateInstance(pluginAssembly.GetType(pluginType.ToString()));

Aber genau hier gehts in die HOse... Ich bekomme ständig die Meldung "Umwandlung des Typs TestPlugin.Plugin in Typ PluginInterface.IPlugin ist nicht möglich".

Wenn ich nun jedoch das Plugin Interface mit in meine Hauptanwendung reinnehme und dann der PluginBibliothek einen Verweis auf die Hauptanwendung verpasse, läuft alles reibungslos. Ich weiß nicht wo da der Wurm drin ist... Hoffe mir kann da jemand vllt die Augen öffnen^^

Grüße ViperNeo

20.08.2010 - 18:00 Uhr

okay und diese halbtransparenz ist nicht möglich, weil man das genaue mischverhältnis der grundfarbe und der dahinterliegenden farbe unmöglich berechnen kann und somit auch nicht auf die grundfarbe kommen kann?

20.08.2010 - 17:51 Uhr

okay, dann bleibt mir wohl nur ein nahezu perfektes berechnungsergebnis^^ aber wie macht das microsoft bei seinen icons mit magenta hintergrund? da wird einfach alles was magenta ist wahrscheinlich ersetzt mit alpha wie mrsparkle das gesagt hat. okay glaube ich habs langsam verstanden^^

20.08.2010 - 17:44 Uhr

hm... danke... ich hab etwas rumgespielt mit verschiedenen farben und ich bin der festen überzeugung, dass es doch irgendwie gehen muss...

folgendes habe ich ausprobiert. ich habe eine schwarze grundfläche mit den werten (A255 R0 G0 B0). Darüber habe ich eine Fläche gezeichnet mit den Werten (A100 R100 G100 B0). Die neue Farbe die durch die Überlagerung entsteht ist die (A255 R40 G40 B0). Nun frage ich mich, man müsste doch anhand dieser neuen Farbe eine konkruente Farbe berechnen können mit Alpha-Kanal, denn jede Farbe mit Alpha Kanal müsste sich doch zurückberechnen lassen über einen bestimmten Farbwert. Oder sehe ich da was falsch? Leider stoße ich bei meinen Berechnungsversuchen an meine mathematischen Grenzen. Aber irgendwie denke ich, dass wenn man die darunterliegende Farbe kennt, man doch den Rückweg berechnen können müsste. Irgendwie macht das GDI+ doch auch wenn ich was zeichne. Und Windows kann das mit Magenta auch sogar in Word.

20.08.2010 - 14:01 Uhr

okay, danke schonmal für das stichwort. welche farbe wäre denn für sowas interessant? ich dachte an magenta weil windows das auch nutzt in vielen grafiken (transparency key etc.).

okay das eine füllfarbe das beste ist, grün oder blau, habe ich nun rausgefunden... frage ist nun nur, wie man das genau berechnet... irgendwie werd ich aus der formel nicht so schlau...

20.08.2010 - 13:24 Uhr

Hallo Leute,

ich habe folgendes Problem. Ich habe Bitmaps mit halbtransparenten Grafiken beinhaltet. Hintergrundfarbe ist Magenta der Bitmaps.

So nun möchte ich jedoch in meiner Applikation die volle Transparenz nutzen und zwar ohne Boardmittel. Das heißt ich müsste anhand des Magenta Wertes irgendwie das Megenta entfernen. Ich hatte mir überlegt, dass man eventuell irgendeine Differenz der RGB Werte berechnen kann und damit den Alpha Kanal befüllt. Jedoch weiß ich nicht wie die Berechnung laufen müsste.

Wäre cool wenn sich ein Grafikgenie hier aus dem Forum der SAche mal kurz annehmen kann. Wahrscheinlich ist das eine ganz einfache Formel^^

Danke schonmal!

Grüße ViperNeo

18.08.2010 - 13:59 Uhr

wie debugge ich in dem moment das vs?

18.08.2010 - 13:51 Uhr

Hallo Leute,

ich habe für ein Projekt ein Control geschrieben. Dieses Control macht nichts anderes als ein übergebenes Array an Farben nebeneinander anzuzeigen.

Füge ich nun das Control in meinem Projekt auf eine Form, hängt sich das ganze Studio auf... In einem ganz neuen Projekt kann ich das exakt gleiche Control jedoch problemlos hinzufügen...

Hat hier jemand vllt einen Tip was man da machen kann?

DAnke!

Grüße
ViperNeo

17.08.2010 - 12:10 Uhr

Hallo Leute,

ich verzweifel noch... Ich lade in ein Canvas Control ein Bitmap folgendermaßen rein:


using (Bitmap bmp = (Bitmap)Bitmap.FromFile(path))
            {
                drawArea.BackgroundImage = (Image)bmp.Clone();
            }

Ich hatte gehofft, dass ich hierdurch das FileHandle das von Bitmap gebaut wird und somit die Datei für weitere Zugriffe sperrt, umgehen kann. Jedoch bekomme ich nach wie vor eine "Zugriff verweigert" Exception weil die Datei in Benutzung ist...

Gibt es einen sicheren Weg Bitmaps zu laden ohne die DAtei zu sperren?

DAnke schonmal!

Grüße
ViperNeo

13.08.2010 - 22:31 Uhr

Hallo Leute,

ich hab mal ein Bild angehängt. Dieses Bild ist mit der Anwendung Shape Collage erstellt und ich finde das höchst interessant wie die Anwendung aus einer Reihe von Bildern eine zufällige ANordnung generiert die auch noch so passabel aussieht.

Meine Frage die ich nun habe bezieht sich rein auf den Berechnungsalgorithmus für die Positionierung der Bilder. Gibts bei sowas einen besonderen Trick? Kennt jemand so einen Algorithmus?

Danke schonmal für Infos 😃

Grüße
ViperNeo

12.08.2010 - 10:07 Uhr

okay das probiere ihc mal aus.

12.08.2010 - 09:58 Uhr

Hallo,

ich suche eine Möglichkeit die Fensterhandle anderer Anwendung herauszubekommen. Wie man das über Prozesse realisiert hab ich mittlerweile rausgefunden, jedoch möchte ich das ganze mit der Maus machen.

Das bedeutet, ich fahre mit der Maus über meinen Bildschirm und sobald sich ein Fenster unter der Maus befindet möchte ich in meiner Applikation ein Event auslösen, dass mir das Fensterhandle übergibt?

Muss man das mit Global Mouse Hooks lösen oder gibt es da einfachere Lösungen?

Ich finde zurzeit keinen Ansatz für diese Geschichte.

Danke schonmal für HInweise und Tips 😃

Grüße
ViperNeo

05.08.2010 - 18:17 Uhr

ich denke das ich mit dem thread.sleep wohl leben muss. geht irgendwie nicht anders, jedenfalls bekomme ich es nicht anders hin.

ansonsten noch eine frage... ich habe mit ilmerge meine assemblys und die exe zu einer exe zusammengefasst. sobald ich das gemacht hbe und die exe ausführe funktioniert das remoting nicht mehr.

gibt es da infos drüber?

05.08.2010 - 17:18 Uhr

Hallo Leute,

ich versuche eine DLL über die Resourcen zu laden und zu verwenden.

Grundsätzlich habe ich die DLL in die globalen Resourcen reingehauen als Datei.

Über Assembly.Load(byte[]) kann ich das Teil bequem via ResourceManager aus den Resourcen laden.

Leider findet meine Anwendung beim ausführen diese Assembly trotzdem nicht. UNd ist es normal, dass ich zum kompilieren die Assembly trotzdem im Projekt als Referenz haben muss?

Danke schonmal für Tips, ich werde nicht schlau aus alten Beiträgen hier im forum und Google....

Grüße ViperNeo

05.08.2010 - 15:58 Uhr

Hallo Leute,

ich habe das Beispiel aus diesem Thread Dateiassoziation in meiner Applikation umgesetzt. Und zwar das untere Beispiel mit den IPC Channels.

Das funktioniert wunderbar, jedoch funktioniert es nicht, wenn meine Anwendung noch gar nicht offen ist.

Also folgendes:
Ich starte meine Applikation leer oder nur mit einer Datei. Sie öffnet. Starte ich nun noch weitere Dateien werden alle schön brav an die Hauptanwendung geschickt. So soll es sein.

Wähle ich nun aber ohne das das Programm gestartet ist mehrere Dateien aus und starte diese, bekomme ich jede Menge Fehler von Windows. Keine Exceptions sondern eeinfach nur Application Stopped Working, wollen sie nach Problemen suchen etc. pp. Windows Zeug halt.

Wisst ihr woran das liegen könnte?

//edit: habe dohc eine exception und zwar wenn ich mehrere files auswähle und starte ohne das das programm läuft kommt folgendes:

ImageResizer.NET

Fehler beim Lesen von einem IPC-Port: Die Pipe wurde beendet.


OK

Danach erscheint für jede weitere Instanz die vorhin beschriebene Windows Meldung.

//edit2: okay hab den fehler weg. nun mecker er aber wegen einem nullreference verweis. und zwar öffnet er mit der ersten datei die anwendung und mit den anderen kommt der nullreference fehler. wie gesagt wenn die anwendung bereits läuft kommt das nicht... kann es sein, dass die anderen zu schnell starten und die hauptanwendung noch hinterher hängt?

//edit3:
setze ich vor


                ArgsReceiver argrecv = new ArgsReceiver();
                argrecv.SetNewArgs(args);

ein Thread.Sleep(1000); funktioniert alles. also hängt tatsächlich die hauptform hinterher. gibt es einen eleganteren weg als mit Thread.Sleep?

Grüße
ViperNeo

05.08.2010 - 14:45 Uhr

Also ich nutz Windows 7 und habe mittlerweile rausgefunden woran es liegt. Mein code ist soweit richtig, jedoch ist es das gleiche problem wie in einem der posts von euch. und zwar hat meine anwendung über das studio höhere rechte als der rest, und man kann nicht zwischen zwei applikationen droppen die unterschiedliche berechtigungsstufen haben.

05.08.2010 - 11:04 Uhr

Hallo Leute,

ich habe eine ListView auf meiner Form und AllowDrop auf true gestellt.

Danach habe ich folgendes zum Test implementiert:


private void listPictures_DragDrop(object sender, DragEventArgs e)
        {
            string[] handles = (string[])e.Data.GetData(DataFormats.FileDrop, false);
            foreach (string s in handles)
            {
                if (File.Exists(s))
                {
                    MessageBox.Show(s);
                }
            }
        }

        private void listPictures_DragOver(object sender, DragEventArgs e)
        {
            if (e.Data.GetDataPresent(DataFormats.FileDrop))
                e.Effect = DragDropEffects.Copy;
        }

Irgendwie nimmt die ListView aber trotzdem keine Elemente an und die Methoden werden nie aufgerufen...

Habe ich etwas übersehen?

Danke!

Beste GRüße,
ViperNeo

03.08.2010 - 11:39 Uhr

Hallo Leute,

ich hab ein Riesenproblem und hoffe das man hier vllt gemeinsam eine gute Lösung erarbeiten kann, da ich zurzeit keinen richtigen Ansatz finde.

Und zwar geht es um ein größeres Projekt, dass unmengen an Controls von einem Fremdanbieter beherbergt. Da diese Controls nicht mehr zeitgemäß aussehen, möchte mein Arbeitgeber diese durch Standard WinForms Controls ersetzen.

Das Problem ist, dass es zuviele sind um das per Hand zu machen. Nun habe ich die Aufgabe diese Controls mithilfe eines Konveters zu ersetzen.

Dazu gleich die erste Frage: Gibt es Software die so etwas kann? (Ersetzen von Codezeilen)

Anforderungen sind folgende:

  • Ersetzen von den Deklarationen durch neue
  • Entfernen von bestimmten CodeZeilen in Bezug auf das deklarierte Objekt (Propertys)
  • Hinzufügen bestimmter CodeZeilen in Bezug auf das deklarierte Objekt (Propertys)

Bezüglich des ersetzens der Deklarationen, habe ich bereits eine Konverteranwendung geschrieben, die einfach auf die Hersteller.Lib.Control DEklarationen im Designer geht und diese durch System.Windows.Forms.IrgendeinControl ersetzen kann.

Nun soll das aber durch die beiden zuletzt genannten Punkte erweitert werden und ich finde dafür keinen richtigen Ansatz. HAt hier jemand eine Idee?

Das wäre wirklich super!

Danke!

Beste Grüße
ViperNeo

30.07.2010 - 00:20 Uhr

Hallo Leute,

ich versuche gerade ein Konzept zu entwickeln wie man am besten vorgeht.

Und zwar handelt es sich um eine Anwendung, die in unterschiedlichen Modi laufen kann.

  1. Modus: Konsument und Befehlsempfänger
    Die Anwendung stellt eine Oberfläche dar, über die diverse Medieninhalte abrufbar sind. Diese werden von einem Server bereitgestellt und über Netzpfade abgerufen.

  2. Modus: Fernsteuerung
    Dieser Modus ist der gleiche wie der vorgenannte, mit der Erweiterung, dass man im Modus 1 befindliche Anwendungen über das Netzwerk steuern können soll. Sprich diverse Programmteile ein und ausschalten, sowie Konsuminhalte auf Knopfdruck ändern.

  3. Modus: Dummer Modus
    In diesem Modus können nur Befehle eingehen von Anwendungen im Modus 2

Grundsätzlich hatte ich mir überlegt, einfach jeder Anwendung im Modus 1 einen TCP Listener zu verpassen und auf BEfehle von Modus 2 Anwendungen zu warten und diese dann auszuführen.

GIbt es da noch sinnvollere Varianten? Zum Beispiel alles zentral über einen Server schicken, der dann die entsprechenden Stellen informiert?

Ich steh ein wenig auf dem Schlauch zurzeit und hoffe das es Tips und ANregungen gibt die mir vllt auf einen geschickten Weg

Danke schonmal 😃

Grüße
ViperNeo

26.07.2010 - 09:03 Uhr

Hallo Leute,

auch mit dem bedenken, dass das eine absolute Grundlage ist, möchte ich hier kurz nachfragen, da ich irgendwie nicht weiter komme, als umfangreiche und komplizierte IF-Bedingungen zu schreiben.

Ich stehe vor dem folgenden Fall:

Ich habe 4 Textboxen, in denen Werte eingetragen werden müssen. Nun ist die Abhängigkeit aber so geregelt, dass wenn ich zum Beispiel das erste Feld befülle alles okay ist, befülle ich aber nur das zweite Feld, muss das erste noch mit ausgefüllt werden. Das gleiche gilt wenn ich die ersten beiden Ausfülle ist alles okay, wenn ich aber nur das Dritte ausfülle müssen die ersten beiden noch mit ausgefüllt werden.

Wie bereits erwähnt habe ich das aktuell mit einer ziemlich umfangreichen IF-Bedingung gelöst. Irgendwie finde ich das aber zu kompliziert und frage mich nun, ob es hierfür nicht einen einfachen Weg gibt?

Danke schonmal 😃

Grüße
ViperNeo

19.07.2010 - 10:58 Uhr

Hallo Leute,

ich möchte gerne bestimmte Tastenkombinationen in einer Textdatei abspeichern und die Kombination später daraus wieder laden.

Das Speichern der Information klappt soweit ganz gut. Dazu mach ihc einfach ein Keys-Object.ToString() und gut ist. Problematisch wird es nun beim zurückladen in ein Keys Object. Hat da jemand vielleicht einen super TIp für mich^^?

WÄre super danke!

Grüße ViperNEo

08.07.2010 - 13:47 Uhr

Die zeitgleiche Bearbeitung ist sehr sehr wahrscheinlich. Hier geht es um Abrechnungssysteme für das Bauwesen und da arbeiten verschiedene Leute an den gleichen Dingen rum.

08.07.2010 - 13:20 Uhr

hehe, ja das kann sehr gut sein 😉

also benötigt wird diese sperrfunktion, da die anwendung auf eine datenbank im netz zugreift und mehrere anwender mit der software darauf zugreifen, auch zeitgleich.

nun gibt es sensible bereiche (kontierung und projektplanungen etc.) wo nicht jeder beliebig änderungen machen soll. um nun dateninkonsistenz zu verhindern müssen die bereiche gesperrt werden solange ein user sich darin befindet und etwas bearbeitet. in diesem moment soll der rest lesezugriff erhalten, jedoch nichts ändern dürfen.

problematisch wird hierbei auch noch das wieder freigeben der gesperrten einträge. denn stürzt die anwendung ab aus irgendwelchen gründen auch immer kommt man ja selbst schlecht wieder an den eintrag ran, außer ich koppel das ganze an einen user... fragen über fragen^^

08.07.2010 - 10:43 Uhr

verwendetes Datenbanksystem: MSSQL, Oracle, Firebird

Hallo Leute,

ich stehe gerade vor einer neuen Aufgabe und zwar muss ich Sperreinträge realisieren für eine Software. Ziel ist es zu verhindern, dass mehrere Leute gleichzeitig an einem Datensatz der Datenbank arbeiten.

Grundsätzlich ist in der Software das ganze etwas unschön gelöst. Die Anwendung nutzt eine seperate Tabelle um dort Sperreinträge zu setzen. Das ganze ist allerdings nur für einen bestimmten Anwendungsfall programmiert und lässt sich daher schwer und schlecht erweitern.

Mein Vorschlag war an dieser Stelle direkt an die DAtenbanken zu gehen. Problem hierbei ist, können das alle genannten Systeme? Im SQL gibt es ja das Ding LOCK und UNLOCK um Datensätze zu sperren. Verhindert dieses LOCK auch den Lesezugriff? Weil das soll zugelassen sein.

Was gibt es denn hier für Ansätze?

Danke shconmal!

Grüße
ViperNeo

07.07.2010 - 16:07 Uhr

ich glaube das werde ich mal tun besser... wobei ich nun im laufe des tages etwas wärmer geworden bin mit dem chef entwickler... ihm gefällt mein stil und er ist bei weniger zeitdruck auch bereit über optimierungen zu sprechen.

mal schauen was das noch so gibt im laufe der zeit 😃

die programmierer welt ist wirklich verrückt^^

07.07.2010 - 14:55 Uhr

Nunja ich habe Hoffnung das bessere Zeiten kommen. Die Firma ist überschaubar und ihc habe Montag erst hier angefangen. Eingestellt wurde ich ja um neuerungen und innovationen in die bestehenden Produkte und kommenden Produkte einfließen zu lassen, weil hier sonst nur alte Hasen sitzen 😉

Grüße

07.07.2010 - 14:29 Uhr

@FZelle: Doch das tut er. Haste da tips oder erklärungen^^?

07.07.2010 - 13:55 Uhr

puh wahnsinns diskussion und großes interesse am theman... danke 😃

Also in meiner Ursprungsfrage geht es nicht darum überall Dispose zu implementieren. Der Sinn und Zweck war mir schon klar soweit eigentlich. Das Problem ist nur, dass es nicht mal bei Brushes, Pens etc. genutzt wird. Ihc war immer der Meinung, dass wenn eine .NET Klasse ein Dispose anbietet, ich diese auch mal aufrufen sollte wenn ich das Objekt nicht mehr brauche. Und genau dieser Sachverhalt wurde in allen Projekten einfach ignoriert. Die Jungs haben hier Software entwickelt, die durch Verbindungen mit Datenbanken und ein paar Bildgeschichten schnell in die 500-800MB Speicherauslastung hochschießen. Da kann und muss irgendwas nicht stimmen. Da war für mich ein erster Ansatz mal über das Disposen von entsprechenden Objekten nachzudenken, doch hier stellt man sich wie eingangs beschrieben sturr. WIe ich bereits angesprochen hatte ist das auch nur ein Teilbereich meiner langen Optimierungsliste für das Unternehmen, jedoch meiner Meinung war das ein wichtiger Aspekt um erstmal Performance und Speicherauslastung zu drücken.