Laden...
Avatar #avatar-2643.jpg
wakestar myCSharp.de - Member
Software-Entwickler Luzern Dabei seit 15.11.2006 383 Beiträge
Benutzerbeschreibung

Forenbeiträge von wakestar Ingesamt 383 Beiträge

11.03.2014 - 15:41 Uhr

Hallo zusammen

Ich hab' ein Control Add-in für Dynamics NAV 2013 (Navision) erstellt, mit dem man direkt im NAV den Dateiinhalt (z.Bsp. PDF, Doc, XLS, etc...) sehen kann.

.NET resp. Winforms - Technisch handelt es sich um ein Control welches ein Panel hat. Auf diesem Panel sitzt ein PreviewHandlerHostControl

Das UserControl funktioniert grundsätzlich... d.h. wenn ich z.Bsp. eine Word-Datei auswähle... startet im Hintergrund autom. ein Winword-Prozess.
Wähle ich dann eine PDF - Datei aus, wird der Winword-Prozess sauber beendet und der PDF-Viewer-Prozess gestartet.

Das Problem:
Wenn ich die Dynamics NAV Page (Form) schliesse und ich eine Word-Datei in der Vorschau habe, dann bleibt mir der Winword - Prozess einfach hängen.
Ich bin nicht der Erste der dieses "Phänomen" hat...
Hosting Preview Handlers in Windows Forms Applications

Lösungvorschlag 1 aus den Blog-Kommentaren:

"I seem to have solved this problem by disposing the previewhandler in the “closing” event of the form –"

Was ich auch versucht habe... leider ohen Erfolg...


void Page_FormClosing(object sender, FormClosingEventArgs e)
        {
            if (previewHandlerHostControl != null)
            {
                previewHandlerHostControl.ReleaseCOMObject();
                previewHandlerHostControl.Dispose();
                previewHandlerHostControl = null;                
            }
        }

public void ReleaseCOMObject()        
        {                     
            if (_comInstance != null)
            {                
                ((IPreviewHandler)_comInstance).Unload();             
                Marshal.FinalReleaseComObject(_comInstance); //quits the handler
                _comInstance = null;
            }            
        }

Testhalber hab ich ein neues WinForm - Projekt erstellt, welches NICHTS mit Dynamics NAV zu tun hat... und siehe da... beim Beenden des Forms bleibt der Winword-Prozess NICHT hängen:


private void Form1_FormClosing(object sender, FormClosingEventArgs e)
        {
            if (previewHandlerHostControl != null)
            {
                previewHandlerHostControl.ReleaseCOMObject();
            }
        }

D.h. hat das Problem mit dem FormClosing-Event innerhalb der NAV - Applikation zu tun. (??)

Lösungvorschlag 2 aus den Blog-Kommentaren:

"Since altering my application to close down the Preview and then wait before calling PostQuitMessage(), the problem appears to have been completely resolved. I have really hammered it and so far the issue has not resurfaced, fingers-crossed."

Hat jemand eine Idee wie das mit C# umgesetzt werden kann?

Oder sonst eine Idee wie man das Problem lösen könnte?

10.12.2013 - 15:41 Uhr

Super, danke Euch beiden.

gruss
wakestar

10.12.2013 - 14:53 Uhr

Hallo Community

Folgenden VB6 Code versuche ich nach C# zu übernehmen:

Public Declare Function BC_FontTranslate Lib "BCXL32.dll" (ByVal nSymtype As Long, ByVal sHRA As String, ByVal nCheckFlag As Long, ByVal sOutString As String, ByVal nAllocSize As Long, nReturnSize As Long) As Long

Ich hab's wie folgt versucht:


[DllImport("BCXL32.dll")]
public static extern int BC_FontTranslate(int nSymtype, string sHRA, int nCheckFlag, string sOutString, int nAllocSize, ref int nReturnSize);

Das Problem ist dass die Variable sOutString leer ist nachdem die Funktion aufgerufen wurde. Wenn ich die sOutString Variable mit "ref" definiere, erhalte ich eine AccessViolationException.

Die Dokumentation zur DLL meint folgendes:

FUNCTION: BC_FontTranslate()
....
'// PARAMETERS :
'// sOutstring (OUTPUT, String) - Storage string for the translated output. This string
'// must be pre-allocated memory by the calling routine.
....

...was mich verwirrt, da ja der alte VB6 code funktioniert und dort ByVal verwendet wird.

Tipps??

Gruss
wakestar

05.11.2013 - 16:28 Uhr

...oder FileSeek...

http://www.fileseek.ca/Compare/

damit hab' ich bisher sehr gute Erfahrungen gemacht.

30.10.2013 - 09:09 Uhr

Hallo herbivore

Absolut richtig. Anhand von Debugging sehe ich schon welche Registry-Keys er sucht um sich die Preview Handler zu holen und ich sehe auch wo er rausfliegt. Damit weiss ich aber leider nicht wie ich den PreviewHandler für die Bilder finde.

Interessanterweise hab' ich bisher versch. C# -Beispiele mir angeschaut und ausprobiert und das mit den Bildern funktioniert in keinem der Beispiele.

Interessant wäre d.h. zu wissen, wie es der Windows Explorer macht.
Ich schätze mal die meisten sparen sich aber diesen Analyse-Aufwand und greifen zur PictureBox oder ähnlichem....

gruss
wakestar

28.10.2013 - 16:37 Uhr

Hallo zusammen

Ich bin zurzeit dran, eine Dateivorschau für die eigene Applikation zu erstellen.
Als Basis hab' ich das c4fDevKit (Preview Handlers) genommen:
http://c4fdevkit.codeplex.com/SourceControl/latest

Grundsätzlich funktioniert die Dateivorschau.
Ein Problem hab' ich aber bei den Bildern wie z.Bsp. Jpeg.
Offenbar wird kein Preview Handler gefunden. - Wieso ist mir aber nicht klar.

Die Bildvorschau im Windows Explorer funktioniert richtig. (Windows 7)

Auch das Installieren der Fotogallerie (Photo Gallery) hat nichts genützt.

Mir ist bewusst dass ich die Bilder auch ohne diese c4f Komponente anzeigen kann,
jedoch geht es mir mehr ums Versändnis für die PreviewHandler.

Hat jemand eine Idee?

gruss
wakestar

17.09.2013 - 11:44 Uhr

Hallo trib

Es freut mich zu hören, dass Du das Ganze nicht so problematisch siehst.

weshalb ist das RDLC Reporting für Belege eine Krücke?

wenn ich mich in den Navision - Foren und Blogs durchklicke, dann hab' ich den Eindruck dass man zwar das Meiste was man vorher schon mit den Classic Reports konnte auch mit RDLC hinkriegt... jedoch hat die RDLC Lösung meistens den Stempel "Workaround", "Hack" oder "Würg"... d.h. man frickelt sich was zusammen... hauptsache es funktioniert irgendwie. Und dann hoffen dass man es nie wieder anfassen muss.

Beispiele:

NAV2013: Reporting: Does (not) support fields in Header and Footers

Transfooter and Transheader warning

In Zusammenhang mit "Datenvolumen":
OutOfMemoryException when printing an RDLC report

Nun, so wie ich das sehe führt trotzdem kein Weg daran vorbei. Selber etwas bauen mit irgendwelchen OpenSource-Komponenten ist vermutlich auch nicht die bessere Lösung.

16.09.2013 - 17:47 Uhr

Hallo Community

Diese Frage ist an Navision oder .NET-Entwickler mit RDLC - Erfahrung gerichtet:

Seit NAV2013 gibt es je bekanntlich keine "Classic" - Reports mehr und neu muss man sich mit RDLC Reports herumschlagen.

Für Auswertungen / Listen usw. mag das ja alles OK sein...
aber wenn man Belege à la Offerte, Auftragsbestätigung, Rechnung erstellen / anpassen möchte, dann ist das Ganze.. harmlos ausgedrückt... eine KRÜCKE. 🙄

Wie seht Ihr das? Was gibts für Alternativen? Wie handhabt ihr das? Tipps ???

gruss
wakestar

23.11.2011 - 17:45 Uhr

warum kompliziert wenns auch einfach geht!?

danke!!

23.11.2011 - 15:26 Uhr

Hallo zusammen

Eigentlich eine einfache Aufgabe...

Via "Start / Ausführen" kann mit folgendem Befehl:
"DynamicsNAV:////runreport?report=3031205&filter=Contact.%22No.%22:11546"
eine externe Anwendung (hier Microsoft Dynamics NAV) gestartet / gesteuert werden.

Windows weiss anhand der Registry, wo die DynamicsNAV - Exe Datei liegt...

Nun würde ich gerne genau das gleiche mit C# ausführen
Ich hab' jetzt schon dutzende Varianten ausprobiert...

ProcessStartInfo mit "cmd" , "explorer", "DynamicsNAV" gefüttert....hat nicht geklappt... mit unterschiedlichen Fehlermeldungen.

Wie macht man's richtig? Im Netz finde ich tausende Beispiele ... aber genau den Fall, dass quasi via "URL" eine Anwendung gestartet werden muss finde ich nicht.

wakestar

17.05.2011 - 18:28 Uhr

Danke für die zahlreichen Beiträge.

Ich hab's nun mit Dos und Telnet gelöst. Funktioniert wunderbar 👍

Ernsthaft:
@Programmierhans: MS Dynamics NAV 5.x bis NAV 2009 R2

13.05.2011 - 16:26 Uhr

Hallo dN!3L

Ja, das siehst Du richtig. Vom Gerät her kommt für einen Lagermitarbeiter nur etwas robustes und mit richtiger Scanning-Hardware in Frage. Mir schwebte eine WP7 App auf einem solchen Gerät vor... naja... träumen darf man ja 😃

wakestar

13.05.2011 - 14:24 Uhr

Hallo Community

Welches Gerät und welches OS nimmt man heute, wenn man eine mobile Barcode Scanning Anwendung entwickeln will?

  • Anbindung mit ERP - System via Webservice soll möglich sein
  • Neben der Barcode-Erfassung sollen einfache Eingabe-Masken erstellt werden damit
    z.Bsp. die Menge eingegeben werden kann
  • Einsatzgebiet wäre primär im Lager, wo z.Bsp. Rüstprozesse erledigt werden

Spontan hätte ich auf Windows Phone 7 getippt... weil das gerade aktuell ist im mobilen Bereich. Allerdings gibts da auch Nachteile wie z.Bsp. den Marketplace.. und die Auswahl an Geräte ist noch gering.
Sehe ich das richtig dass nach wie vor Windows Mobile 6.5 das richtige ist?

wakestar

26.04.2010 - 17:35 Uhr

"GPS Tracks" ... erst kürzlich entdeckt, aber bereits zwei Mountainbike -Touren damit gemacht. Topo-Karten ab 1:25'000 Massstab für CH / D / A. Und das noch Free👍

09.04.2010 - 14:24 Uhr

in der Zwischenzeit hab' ich das Tool "Orca" gefunden, damit lässt sich ein MSI-File editieren:
http://www.brentnorris.net/blog/archives/319

... und hab den Eintrag REINSTALLMODE=amus gemacht:
http://www.codeproject.com/tips/54850/REINSTALLMODEequalsamus.aspx

so werden die Dateien ohne Rücksicht auf Version überschrieben...

08.04.2010 - 18:32 Uhr

Hallo Community

Visual Studio generiert ja z.T. automatisch Dateien, wenn man mit COM / ActiveX arbeitet. Diese sehen dann so aus: Interop.xxx.dll, AxInterop.xxx.dll, xxx.tlb
Dabei erhalten diese Dateien **immer **die Dateiversion 1.0.0.0

Nun erstelle ich im Visual Studio ein Setup-Projekt und binde meine Assembly ein. Dabei werden die von VS erzeugten Dateien (Interop, AxInterop, etc..) autom. miteingebunden, aufgelistet unter "Detected Dependencies".

Das Problem ist nun, dass bei der Ausführung des Setups die "generierten" Dateien auf dem Zielrechner nicht geschrieben werden, wenn sie bereits vorhanden sind, weil die Dateiversion die gleiche ist. --- > 1.0.0.0
... das ist meine Vermutung...
Default File Versioning: Both Files Have a Version

Testhalber hab' ich mit einem speziellen Tool die Version der Interop-Dateien auf 1.0.0.1 erhöht und die Installation hat die alte Version wie erwartet überschrieben.

Wie lässt sich das einfacher lösen?

17.12.2009 - 23:19 Uhr

Hallo talla

Als ich deinen Beitrag gelesen habe dachte ich: "shit, den_ muss_ man im 3D Kino sehen".
Jetzt, einige Stunden später, kann ich beruhigt sagen dass der Film auch ohne 3D der absolute Hammer ist.
Ich werde Avatar bestimmt noch ein zweites Mal im Kino schauen.

16.12.2009 - 11:48 Uhr

Hallo zusammen

Folgendes Szenario:

  • Entwicklungsumgebung ist auf einem Terminal - Server installiert
  • Entwicklungs-Projekte sind z.T. COM-Objekte (d.h. müssen registriert werden können)
  • Neue "Entwickler" sollen an Projekten mitentwickeln können.

Frage:
Wie löst ihr das mit den Windows-Berechtigungen für die neuen Entwickler?

Vergibt ihr individuell die Windows-Berechtigungen, je nachdem in welchem Projekt der Entwickler arbeitet? Oder vergibt ihr grundsätzlich alle Rechte, damit er ungehindert überall mitwirken kann?

Eine Lösung die allen passt wird es wohl nicht geben, aber mich würde es trotzdem interessieren wie das bei euch in der Praxis gelöst ist.

Gruss
Wakestar

31.07.2009 - 10:14 Uhr

@hebivore & schwermetaller

Ich hab' ja auch nicht gesagt dass das in irgendeiner Weise legitim ist.

Aus der Sicht von Microsoft ist es das "kleinere Übel".
Wenn die Leute auf Mac, Linux oder irgendwann auf Google umsteigen, verliert Microsoft nicht nur beim Betriebssystem, sondern evtl. auch gleich bei anderen Anwendungen wie Office z.Bsp. Und wenn die Leute anfangen, privat Microsoft Software rauszuschmeissen, ist es eine Frage der Zeit bis es in den Unternehmen auch der Fall ist.

31.07.2009 - 09:35 Uhr

Microsoft würde es zwar so nicht sagen, aber denen ist es lieber dass die Leute ein geknacktes Windows verwenden als ein anderes Betriebssystem.

30.07.2009 - 18:36 Uhr

Wenn Du eine .NET-Klasse "COM-sichtbar" machst, dann können nur "echte" COM-Clients darauf zugreifen...keine .NET - Clients.
Wieso muss es COM sein?

29.07.2009 - 23:27 Uhr

Im ersten Thread hast Du geschrieben, dass Du versch. Verweise im Visual Studio eingefügt hast... unter Anderem die Microsoft Access 11.0 Object Library. - Evtl. hat sich Visual Studio "verstrickt"

Ich würde mal ein frisches Projekt anlegen und NUR die Sage - DLL referenzieren, welche Du effektiv brauchst. Visual Studio wird sich dann schon melden, wenn etwas fehlt (hast ja auch schon Erfahrung damit gemacht 😃

29.07.2009 - 15:43 Uhr

... ansonsten auf der "produktiven" Umgebung an der Access - Lösung anhängen und nach "OLAbfBasic40" suchen

29.07.2009 - 15:05 Uhr

Nur wie finde ich denn jetzt raus, was mir fehlt?

Versuchs mal mit dem Process Monitor:
http://technet.microsoft.com/de-de/sysinternals/bb896645(en-us).aspx

einfach am Visual Studio anhängen und schauen was da File- und Registrymässig abläuft, bevor der Fehler gespuckt wird.

29.07.2009 - 14:49 Uhr

Entwickelst Du die .NET - Lösung auf der gleichen Maschine wie die Access-Lösung?

28.07.2009 - 16:52 Uhr

Ja ok, aber so wäre es doch reiner Zufall welcher Browser installiert wird.

Und? Die EU wäre dann glücklich... und der Benutzer... dem is es eh egal, Hauptsache Internet

28.07.2009 - 16:14 Uhr

ok, hier noch meinen ursprünglichen Vorschlag, aber etwas überarbeitet:

Auswahlmöglichkeiten:

  • (Internet) Chrome
  • Internet Explorer
  • (Internet) Firefox
  • (Internet) Opera

Wichtig:

  • Reihenfolge wird nach dem Zufallsprinzip bestimmt!
  • keine Logo's!
  • keine spez. Schriftarten!
  • keine Farben!
    und:
  • wenn der Benutzer IE wählt muss er 3x bestätigen, ob er wirklich den IE installieren will, bei allen anderen Browsern wird sofort und ohne Rückfrage installiert!

Yes We Can!

24.07.2009 - 15:24 Uhr

....
IE, Chrome, Opera, Firefox.
Das wäre ersten eine extreme Verwirrung für viele Kunden. Denn die Wissen dann nicht mehr wo sie ins Internet kommen.

dann muss halt etwas auf die Sprünge helfen, damit die Kundschaft das versteht....

  • Internet Explorer
  • Internet Chrome
  • Internet Opera
  • Internet Firefox

und überhaupt...

Was ist ein Browser?

Thank God it's Friday

21.07.2009 - 20:25 Uhr

Ich hab' das für mich auch schon gemacht, aber ich hab' das Ganze wie folgt gelöst:

  • Console App

  • Autom. Login mit HttpWebRequest

  • Erstelle CookieContainer

  • Navigiere auf die richtige Webpage und erzeuge HTMLDocument - Objekt

  • Parse HTMLDokument und hole die "korrekten" (bestimmte Logik) Download-Links für die PDF's (bei mir gibts pro Zeitungs-Seite ein PDF-Download-Link)

  • Ziehe PDF-Seiten in MemoryStream und speichere als PDF-Datei auf Disk.

  • Merge alle PDF-Dateien in eine PDF-Datei.

  • Fertig

Bei diesem Projekt war der "Fiddler" unverzichtbar.

edit:
sorry, zur "rechts-maus-klicki-dings-bums" Frage weiss ich leider keine Antwort 😃

29.06.2009 - 19:05 Uhr

Hoi flo

Ich hab' damals die Funktionalität bei einer Datei gelassen und hab' nicht weiter recherchiert.

gruss
wakestar

25.06.2009 - 17:24 Uhr

Autsch, das hab' ich auch schon mal versucht, bin aber glücklos gescheitert.

Wenn ich mich recht erinnere bin ich nur an die Header-Informationen der E-Mail rangekommen... aber nicht die E-Mail selber.

Was funktioniert hat war das Lesen der E-Mail - Attachments aus der Zwischenablage... via MemoryStream.

17.06.2009 - 15:33 Uhr

Installiere mal die
>
...

wobei MS sagt:

When should you not use ADPlus?
Do not use ADPlus in the following situations:

* If you must troubleshoot a program or process that quits unexpectedly during startup. You can only use ADPlus for processes that start successfully.
04.02.2009 - 18:04 Uhr

japp, diese und ähnliche Fragen werde ich dem Entwickler der Lösung stellen müssen ... denn ich wars nicht 😃

Man hat mich mehr oder weniger gefragt, obs da nützliche Tools gibt um auf SQL-Tabellen-Ebene das Ganze sinnvoll zu protokollieren.

04.02.2009 - 16:29 Uhr

Villeicht zum eigentlichen Problem: bei einem Kunden kommt es zu falschen Daten und zwar total willkürlich und völlig unregelmässig. Manchmal passiert wochenlang nichts und dann sind plötzlich 500 Datensätze falsch. SQL-Profiler wochenlang laufen lassen ist nicht so optimal. Evtl. gibts bessere Ansätze?

04.02.2009 - 14:48 Uhr

und was muss man machen, damit man nicht mit overhead zugemüllt wird? D.h. nur tabelle x und sql anweisung y anzeigen?

04.02.2009 - 14:42 Uhr

Hallo zusammen

Kennt jemand ein gutes Tool, um beim SQL-Server 2005 bestimmte SQL - Anweisungen für eine bestimmte Tabelle zu tracen? Gibts sowas überhaupt?

Z.Bsp. will ich herausfinden, welcher Client die Tabelle XY mit UPDATE aktualisiert hat.

Oder kriegt man das bereits mit dem SQL-Profiler hin?

15.01.2009 - 11:39 Uhr

such mal im Forum nach Signer.exe

04.11.2008 - 12:01 Uhr
04.11.2008 - 11:59 Uhr

Du kannst mich gerne im November nochmal erinnern, wenn sich bis dahin nichts getan hat.

*hust, hust* 🙂

23.10.2008 - 14:55 Uhr

Tandemsprung aus 4000m .... ist unvergesslich ... mit Garantie.

08.09.2008 - 22:26 Uhr

Hallo Community

Mit einer Console - Anwendung generiere ich ein *.html - File.
Dazu verwende ich die HtmlTextWriter - Klasse.

Frage:

Gibt es eine elegante Lösung um eine Doctype-Deklaration ins File zu schmeissen?

<!DOCTYPE html PUBLIC "-//W3C//DTD XHTML 1.0 Strict//EN"
         "http://www.w3.org/TR/xhtml1/DTD/xhtml1-strict.dtd">

gruss
wakestar

28.08.2008 - 13:22 Uhr

Auch wenn Du dich mit dem Arbeitgeber auf eine Summe einigst, würde ich kommunizieren dass Du z.Bsp. nach 6 - 9 Monaten noch einmal ein Lohngespräch haben möchtest. Mit der Begründung dass Du erst danach weisst, wieviel Leistung (Umsatz) Du für diese Firma erbringst / erbringen kannst. - Halt eine "leistungsgerechte" Entlöhnung.

26.08.2008 - 14:36 Uhr

Bevor man den Bewerber ins Büro kommen lässt kann man auch ein "Telefoninterview" mit ihm führen (ca. 45 min.)
Bereits da erkennt man (im Normalfall) ob der Bewerber überhaupt nicht in Frage kommt.

20.08.2008 - 15:38 Uhr

hm... also ich musste erstmal wikipedia fragen was VisualStyles überhaupt sind... und dort sind ein paar Programme aufgelistet... villeicht ist das was du suchst auch dort....

http://de.wikipedia.org/wiki/Visual_Style

13.08.2008 - 21:02 Uhr

Wenn jemand böse Absichten hat, dann hat er böse Absichten und er wird früher oder später herausfinden wie es funktioniert, vor allem wenn es um Software-(Entwicklung) geht.

Wenn man codeproject.com durchstöbert, dann findet man extrem viel Code (inkl. schönen Grafiken und Erklärungen) mit dem man alles mögliche anstellen kann. - Ich verzichte nun darauf, die "gefährlichen" Artikel hier zu posten.

Wenn aber mycsharp.de sich gegen solchen (potenziell bösen) Stoff ausspricht, dann ist das einfach so und man muss es einfach akzeptieren.

just my 2 cents