Laden...

Forenbeiträge von red_dragon69 Ingesamt 56 Beiträge

13.12.2011 - 14:14 Uhr

Ich glaube ich verstehe dich nicht ganz.

Du möchtest einer bestehenden Mail Attachments hinzufügen?
Warum erstellst du dann ein neues Mail? Wäre es nicht besser das bereits gespeicherte Mail zu öffnen und dann ein weiteres Attachment hinzuzufügen?

Oder möchtest du, an ein neu erstelltes Mail mehrere Attachments anfügen?
Dazu musst du nur die Attachment.Add Funktion öfter hintereinander aufrufen.


oMail.Attachments.Add(Attachment1.FullName, Type.Missing, Type.Missing, Type.Missing);
oMail.Attachments.Add(Attachment2.FullName, Type.Missing, Type.Missing, Type.Missing);
oMail.Attachments.Add(Attachment3.FullName, Type.Missing, Type.Missing, Type.Missing);

Hoffe ich konnte dir weiterhelfen.

Gruß
Red_Dragon69

27.10.2011 - 14:35 Uhr

Hy,
ich denke mal hier werden die Basics ausreichend erklärt:
C# Excel Basics

Gruß
Red_Dragon69

PS: 1st Hit auf Google...

24.10.2011 - 13:43 Uhr

Wenn du über WLAN kommunizierst, könntest du es mit Funambol versuchen.
(eine plattformunabhängige Server- Client Open Source- Lösung)

Funambol

12.01.2011 - 10:05 Uhr

Hallo Nils,
entschuldige bitte erstmal die späte Antwort,
aber über die Weihnachtsfeiertage gings drunter und drüber. 😃

Danke für deinen Hinweis, habs genau so gelöst.
Hat echt super geklappt.

Gruß Red_Dragon69

23.12.2010 - 13:40 Uhr

Hy Leute,
ich schreibe gerade eine Anwendung mit der ich den Windows Media Player fernsteuern (also nicht direkt einbinden) will. Dazu brauche ich nur die Basisfunktionen Play, Pause und Stop.
Ich habe es der Windows API (mit FindWindow und SendMessage) umgesetzt.
Es ist mir schon gelungen die Pause und Stop Funktion zum Laufen zu bringen, aber wenn ich die Play Message abschicke, dann kriege ich immer einen Fehler und der Windows Media Player springt auf den nächsten Titel.
Ich habe euch die Fehlermeldung in einem Screenshot angehängt.

Hier noch mein Code:

Win32 Klasse


using System;
using System.Collections.Generic;
using System.Runtime.InteropServices;
using System.Linq;
using System.Text;

public class Win32
{
    public const int WM_COMMAND = 0x111;

    [DllImport("User32.dll")]
    public static extern int FindWindow(string strClassName,
                                             string strWindowName);

    [DllImport("User32.dll")]
    public static extern int FindWindowEx(int hwndParent,
        int hwndChildAfter, string strClassName, string strWindowName);

   
    [DllImport("User32.dll")]
    public static extern Int32 SendMessage(int hWnd, int Msg, int wParam, int lParam);

    ~Win32()
    {
    }
}

Das Main Form


using System;
using System.Collections.Generic;
using System.ComponentModel;
using System.Data;
using System.Drawing;
using System.Linq;
using System.Text;
using System.Windows.Forms;

namespace WindowsFormsApplication1
{
    public partial class Form1 : Form
    {
        private System.Int32 iHandle;

        public Form1()
        {
            InitializeComponent();
        }

        private void Form1_Load(object sender, EventArgs e)
        {
            iHandle = Win32.FindWindow("WMPlayerApp", "Windows Media Player"); 
        }

        private void PlayPause_Click(object sender, EventArgs e)
        {
            iHandle = Win32.FindWindow("WMPlayerApp", "Windows Media Player");
            Win32.SendMessage(iHandle, Win32.WM_COMMAND, 0x00004978, 0x00000000);
        }

        private void Stop_Click(object sender, EventArgs e)
        {
            iHandle = Win32.FindWindow("WMPlayerApp", "Windows Media Player");
            Win32.SendMessage(iHandle, Win32.WM_COMMAND, 0x00004979, 0x00000000);
        }
    }
}

Wenn ich bei der Fehlermeldung auf Webhilfe klicke, komme ich auf eine MSDN Seite auf der steht:
"Beim Verwenden von Windows Media Player ist die Fehlermeldung C00D11D4 aufgetreten. Derzeit stehen leider keine zusätzlichen Informationen zu diesem Fehler zur Verfügung."

Bitte helft mir, ich verzweifle schon langsam....

Gruß Red_Dragon

02.12.2010 - 11:19 Uhr

Hallo Diana,
ich hatte dasselbe Problem. Ich denke es liegt daran, dass die Crystal Reports für VS 2010 noch im Beta-Stadium sind.
http://www.sdn.sap.com/irj/scn/weblogs?blog=/pub/wlg/20322

Alle Applikationen die Crystal Reports verwenden, werden deshalb von mir in VS 2008 weitergepflegt, bis die Crystal Reports für VS 2010 in einer fertigen Version vorliegen.

Gruß Red_Dragon69

13.08.2010 - 09:33 Uhr

Hy,
danke Skysurfer für den Vorschlag.
Mal kuggen ob ich es so schaffe.

@dN!3L: Das mit den Buttons war so gemint, dass die Schaltflächen einfach wie ein Button aussehen. Standardmäßig sehen die bei den Smart Devices, nämlich wie ein färbiges Rechteck aus. Also ganz ohne 3D Effekt.

Auf jeden Fall Danke für die Hilfe 😃

Gruß
Red_Dragon69

04.08.2010 - 13:14 Uhr

Hy Leute,
leider haben mir Onkel Google und die Forensuche nicht geholfen, deswegen wende ich mich jetzt mal an euch.

Ich erstelle ein Smart Devices WinForms-Projekt für Windows Mobile mit Visual Studio 2008 und wollte fragen ob es möglich ist, das Erscheinungsbild der Buttons so zu ändern, dass sie aussehen wie bei den normalen Windows Forms.

Danke schon mal im Vorraus.

Gruß
Red_Dragon69

17.06.2010 - 10:08 Uhr

Danke für den Tipp xxMUROxx.

Ich überprüfe einfach ob die Datei existiert und wenn nicht leg ich sie mit Standardwerten an. 😃

15.06.2010 - 12:59 Uhr

Hy Leute,
hab mein Problem jetzt so gelöst, dass ich einfach ein eigenes Settings.xml erstelle und diese bei den
gemeinsamen Dateien ablege. Bei Programmstart wird dieses File geladen und die Settings werden
in die Applicationsettings übertragen. Beim Schließen werden die Applicationsettings in das File geschrieben.

Falls jemand eine andere Antwort weis, immer her damit. 😁

01.06.2010 - 09:48 Uhr

So jetzt kann ich zwar meiner Anwedung Parameter übergben, aber trotzdem ist mein Problem immer noch vorhanden, wenn ich keine Internetverbindung habe.
Der appref-ms, kann ich ja trotzdem keine Parameter mitübergeben...

Langsam verzweifle ich echt...

31.05.2010 - 17:05 Uhr

Danke, das sieht sehr vielversprechend aus. Mal sehen ob ich damit weiterkomme. 😃

31.05.2010 - 16:25 Uhr

Das hat den ganz einfachen Grund, weil ich der appref-ms keine Kommandozeilen Parameter übergeben kann. Das ist der einzige Grund warum ich die exe verwende. 😕

Soviel ich bis jetzt weis, kann man der appref-ms auch parameter übergeben, aber das auch nur aus dem Programm und nicht über bat bzw. cmd Files.

Und der Aufruf mit Parametern ist einer der wichtigsten Punkte die ich umsetzen muss.
Weiters ist der Inhalt der Forms von diversen Einstellungen in den Settings abhängig.

Deshalb wollte ich auch wissen, ob man die Settings iwie synchronisieren kann...

Gruß
Red_Dragon69

31.05.2010 - 13:15 Uhr

Hallo xxMUROxx,

ich hab mich schlecht ausgedrückt, sry.
Also ich versuche es nochmal:

Ich starte meine ClickOnce Anwendung, wenn ich eine Internetverbindung habe
über die My.appref-ms und wenn ich keine habe dann My.exe über
den App-Pfad (C:\Users\red_dragon69\AppData\Local\Apps\2.0...)

Wenn ich die My.appref-ms starte habe ich andere Settings, als wenn ich
die My.exe starte. Woran liegt das? Es handelt sich doch um ein und dieselbe Anwendung,
oder irre ich mich da? Wenn nicht gibt es eine Möglichkeit die Settings zu synchronisieren?

Gruß
Red_Dragon69

31.05.2010 - 11:32 Uhr

Hey Leute,

ich habe ein Programm das ich über ClickOnce auf einem Rechner installiere.
Diese Anwendung ist Online und Offline verfügbar und man Einstellungen tätigen
die als Benutzereinstellungen in den Settings gespeichert werden.

Das Problem ist aber, dass sich die Settings unterscheiden, je nachdem ob ich
meine Anwendung "Online" oder "Offline" starte. (Das entscheidet ja die
appref-ms, je nachdem ob eine Internetverbindung zur Verfügung steht, oder nicht???)

Gibts es eine Möglichkeit die Settings via Code zu synchronisieren??

vllt hat jemand schon mal mit diesem Problem zu tun gehabt.

Gruß
Red_Dragon69

04.05.2010 - 10:12 Uhr

Versuch mal die Windows Mobile 6.5 SDK zu installieren. Vllt funzt es dann. 🙂

27.04.2010 - 14:41 Uhr

Hallo,

also wenn ich beginne zu debuggen, erscheint eine Auswahlliste auf der man
"Windows Mobile 6 Device" auswählen kann. Wenn man diesen Eintrag auswählt, wird das Programm auf das angeschlossene Gerät gespielt und gestartet.

Gruß
red_dragon69

15.04.2010 - 16:15 Uhr

Hey,
nachdem das Thema eineige Zeit herumgelegen hat, bin ich doch
noch auf eine funktionierende Lösung gekommen.

Ich starte mit meinem .bat oder .cmd file nicht die .appref-ms sondern
die offline Version (.exe) meines Programmes.
Dann kann ich wie gewohnt meine Parameter weitergeben. 😃

Gruß
Red_Dragon69

02.04.2010 - 14:33 Uhr

Hab zumindest schon mal rausgefunden wie ich meine Anwedung starten kann.
Man muss den Pfad und das appref-ms File einzeln angeben.


cd C:\Users\reddragon69\Apps\
start WFA.appref-ms

Jetzt fehlt mir nur noch die Möglichkeit der Parameterübergabe. 😃

02.04.2010 - 14:06 Uhr

Hy Leute,
ich bin mal wieder auf eure Hilfe angewiesen.

Ich hab ne Windows Forms Anwendung geschrieben, die ich
über ClickOnce veröffentliche und updaten kann.

Aber wenn ich versuche die exe über ein cmd oder ein bat File zu
starten, funktioniert das nicht. Der Hintergrundgedanke wäre meiner
Anwendung einen Übergabeparameter mitzugeben.

z.b.

start C:\Users\reddragon69\Apps\WFA.exe 123

Es wird weder die Anwendung gestartet, noch krieg ich ne Fehlermeldung zurück.
Ich hoffe jemand kennt sich da aus. 😕

Gruß
Red_Dragon69

25.03.2010 - 14:55 Uhr

Hy Joey86,

hat ein bisschen gedauert, bis ich wieder im Lande war.
Urlaub ist schon was tolles. ^^

Jedenfalls hab ich grad nochmal das Forum durchsucht und was gefunden was dir helfen könnte.

Excel dynamisch auslesen (für Suche Range Object Cell )

Gruß
Red_Dragon69

Edit: Sorry, mein Fehler. Hab nicht geschnallt das du den selbst schon gefunden hattest. 😃

16.03.2010 - 15:26 Uhr

IRange.Activate()

ich glaube das könnte dir weiterhelfen. 😃

Gruß
Red_Dragon69

16.03.2010 - 12:49 Uhr

und wie soll die Bestimmung der Start- und endzelle erfolgen?
Gibst du die vorher ein, oder kommen die aus einer Datei, hast du Felder im Form definiert?

Um den Range zu bestimmen könntest du so verfahren:


    string beginCell = "A" + worksheet.Rows.Count;
    string endCell = "C" + worksheet.Rows.Count;
    int row = worksheet.get_Range(beginCell, 
        endCell).get_End(Excel.XlDirection.xlUp).Row;

So markierst du einen Variablen Bereich von Spalte A bis Spalte C.

Gruß
Red_Dragon69

16.03.2010 - 11:56 Uhr

Hallo Bernd.

Wenn du die Crystal Reports Runtime anklickst, ist diese
verm. nur für Visual Studio.
Um Reports auch via Setup weitergeben zu können musst du Runtime
manuell installieren bzw. das Runtime Setup mit deinem mitgeben und über
eine Routine aufrufen. Hier der Link zur Runtime:

http://resources.businessobjects.com/support/additional_downloads/runtime.asp

Bei mir funktioniert das wunderbar. ClickOnce oder normales Setup erstellen,
Runtime Setup + Setup ausführen und die notwendigen dlls befinden sich im
Setup Packet.

Gruß
Red_Dragon69

10.03.2010 - 14:31 Uhr

Danke für die schnelle Antwort.

Ich werd das sobald wie möglich versuchen umzusetzen. 😃

Gruß
Red_Dragon69

09.03.2010 - 12:35 Uhr

einfach mitten in den Bericht rein. Such dir ne Sektion aus. 😉

09.03.2010 - 12:11 Uhr

Hallo Leute,

vllt könnt ihr mir helfen, da Google und die Forumsuche mich nicht
weitergebracht haben.

Also, ich möchte einen Crystal Report mit mehreren Seiten erstellen.
Genauer gesagt, habe ich eine SQL-Query die mir jeweils eine unterschiedliche
Anzahl von Ergebnissen zurückliefert. (z.B. 8 Ergebnisse)

Und für jedes Ergebnis möchte ich nun eine Seite in meinem Report haben.
Jetzt stellt sich mir die Frage ob, und wenn ja wo, es eine Option bzw. einen
Parameter gibt wo ich die Anzahl der Seiten einstellen kann.

Gruß
Red_Dragon69

09.03.2010 - 12:07 Uhr

Versuchs mal mit Rechtsklick-->Entwurf-->Seite einrichten

Da kannst du die Seitenränder einstellen.

Gruß
Red_Dragon69

08.03.2010 - 12:51 Uhr

Hallo Daiserja,

versuchs mal mit diesem Code:


private void myDataToReport()
{
    DataSet myData = new DataSet();

    OleDbCommand cmd = new OleDbCommand();
    OleDbDataAdapter myAdapter = new OleDbDataAdapter();

    connLOC.Open();

    cmd.CommandText = "SELECT TabName, Feldname FROM tStruktur ";
    cmd.Connection = connLOC;

    myAdapter.SelectCommand = cmd;
    myAdapter.Fill(myData, "tStruktur");
    
    //CrystalReport1 ist der Report den du in deinem Projekt hast
    CrystalReport1 objRpt = new CrystalReport1();
    
    //Als Datenquelle reicht das Dataset. Du muss nicht noch extra 
    //die Tabelle angeben
    objRpt.SetDataSource(myData);

    ReportViewer CRViewer = new ReportViewer();
    CRViewer.Report = objRpt;

    connLOC.Close();
}

Gruß
Red_Dragon69

25.02.2010 - 09:54 Uhr

Dann bleibt dir nur die Möglichkeit ein Tool zu suchen mit dem man Zertifikate editieren kann. Leider weis ich selbst keines, aber ich denke mal Google kann dir da weiterhelfen. 😃

22.02.2010 - 13:03 Uhr

Hallo LuckyStrike,

jetzt hab ichs endlich herausgefunden, nachdem mein letzter Beitrag ja für die Katz war. 😕

Wenn du die Microsoft Framework SDK installierst, befindet sich im Ordner (z.B.: C:\Programme\Microsoft SDKs\Windows\v6.0A\bin) eine Datei mit Namen makecert.exe
Diese Datei ist ein textbasiertes Tool um eigene Zertifikate zu erstellen.

Hier eine Anleitung, die dir zeigt, welche Befehle du in der Eingabeaufforderung eingeben musst. http://msdn.microsoft.com/de-de/library/bfsktky3.aspx

Einfach den Namen und die Gültigkeitsperiode des Zertifikats ändern, registrieren und in dein Projekt einbauen. Geht in den Projekteigenschaften/Signierung/Aus Speicher wählen...
Schon hast du ein gültiges Zertifikat für deine Anwendung. 😃

Gruß
Red_dragon69

22.12.2009 - 10:30 Uhr

Hallo Tschebbe,

nach ... kommt eine ID die deine Applikation kennzeichnet.
Bin grad nicht bei mir zuhause, deswegen kann ich dir nicht sagen wo diese Nummer im Programm zu finden ist.

Und in diesem Ordner befinden sich die Teilordner deines veröffentlichten Programmes.
Anzumerken ist ebenfalls noch das sich dort die aktuelle und die vorherige Version befinden.
Also nicht wundern wenn du auf einmal Ordner doppelt siehst. 😉

Gruß
Red_Dragon69

14.12.2009 - 15:39 Uhr

Hallo Tschebbe.

Bist du auch sicher das du das PDF-File eingebunden hast?
Wenn du im VS auf die Eigenschaften des Files schaust, gibt es einen Punkt mit Namen "Buildvorgang".

Diesen Wert setzt du auf "Inhalt" und stellt danach bei den Eigenschaften des Projektes, unter dem Reiter "Veröffentlichen" bei den "Anwendungsdateien" den Veröffentlichungsstatus auf "Einschließen".

Gruß
Red_Dragon69

10.12.2009 - 17:15 Uhr

Hallo Leute,
ich hoffe jemand von euch kennt sich mit Crystal Reports aus.
Ich verzweifle schon langsam.

Also kurz zu meinem Problem:
Ich habe einen Mainreport und einen Subreport.
In dem Mainreport fülle ich Daten aus einem Listview und ein Parameterfeld.
Das funktioniert soweit. 😃

Aber, in den Subreport müssen Bilder aus einem bestimmten Ordner
gezeigt werden. Die Anzahl dieser Bilder kann variieren, aber das kommt erst später. Jetzt wäre es wichtig mal ein Bild anzuzeigen.

Und jetzt zu meiner Frage:
Wie kann ich ein Bild an den Subreport übergeben? Eine Tabelle mit der Spalte Picture (als IBlobFieldObject) wurde bereits angelegt.
Ich denke ich bin ca auf dem richtigen Weg.


//Report erstellen
    public void btnPrint_Click(object sender, EventArgs e)
    {
        DataSet dsMain = new DataSet();
        DataSet dsSub = new DataSet();
        DataRow rowMain;
        DataRow rowSub;
        int i,j;
            
        //Tabelle zu Dataset hinzufügen
        dsMain.Tables.Add("ListviewData");

        for (j = 0; j < Listview.Items.Count; j++)
        {
            //Neue Zeile
            rowMain = dsMain.Tables[0].NewRow();
            for (i = 0; i < Listview.Columns.Count; i++)
            {
                //Als erstes die Spalten anlegen
                if (j == 0)
                {
                    dsMain.Tables[0].Columns.Add(Listview.Columns[i].Text);
                }
                //Werte in Dataset 
                rowMain[i] = Listview.Items[j].SubItems[i].Text;
            }
            dsMain.Tables[0].Rows.Add(rowMain);
        }

        //Dataset als Datenquelle
        CrystalReport1 rpt = new CrystalReport1();
        rpt.SetDataSource(dsMain);

        //Prüfen ob Bildmaterial angehängt werden soll
        if (chkBilder.Checked == true)
        {
            //Alle fertigen .bmps ermitteln
            string[] strBMP = Directory.GetFiles(Directory.GetCurrentDirectory() + "\\Bilder", "Pic*");

            //Tabelle und Spalte zu Dataset hinzufügen
            dsSub.Tables.Add("Picture");
            dsSub.Tables[0].Columns.Add("Picture", Type.GetType("System.Byte[]"));

            //Neue Zeile
            rowSub = dsSub.Tables[0].NewRow();

            //Alle .bmps in Dataset schreiben
            for (i = 0; i < strBMP.Length; i++)
            {
                FileStream fs = new FileStream(strBMP[0], System.IO.FileMode.Open, System.IO.FileAccess.Read);
                byte[] picture = new byte[fs.Length];
                fs.Read(picture, 0, Convert.ToInt32(fs.Length));
                fs.Close();

                rowSub[0] = picture;
            }
            //Werte in Dataset 
            dsSub.Tables[0].Rows.Add(rowSub);
        }

        //Subreport
        rpt.Subreports["Subreport"].SetDataSource(dsSub);

        //Parameterfelder befüllen
        CrystalDecisions.Shared.ParameterDiscreteValue param = new CrystalDecisions.Shared.ParameterDiscreteValue();
        CrystalDecisions.Shared.ParameterValues val = new CrystalDecisions.Shared.ParameterValues();

        //Paramterfeld
        param.Value = txtParameter.Text;
        val.Add(param);
        rpt.DataDefinition.ParameterFields["Paramter"].ApplyCurrentValues(val);

        ReportViewer CRViewer = new ReportViewer();
        CRViewer.Report = rpt;
    }

09.12.2009 - 10:23 Uhr

Hallo Jack30lena,
danke für deine Antwort. Hab aber jetzt den Fehler gefunden.
Es lag nicht am Aufruf sondern an der Codierung vom Webservice selbst.

Hatte dummerweise einen Stringreader, anstatt eines Strings eingebaut.
Jetzt funktioniert es reibungslos.

Gruß
Red_Dragon69

30.11.2009 - 17:02 Uhr

Hy Leute,
ich brauch mal wieder eure Hilfe.

Ich versuche einem VB .Net Webservice einen C#-String der XML-Daten enthält zu übergeben. Aber beim Aufruf des Webservices kommt eine SOAP-Exception.
"Illegales Zeichen im Pfad."

Also es läuft wie folgt ab:


string XMLData;

//XML-Daten ermitteln und in String speichern
XMLData = File.ReadAllText(Directory.GetCurrentDirectory() + "\\File.xml");

//Webservice aufrufen
internet.Webservice(XMLData);

Am Webservice kanns auch nicht liegen, da es wenn es mit nem VB Programm angesprochen wird funzt.

Gruß
red_dragon69

16.11.2009 - 14:44 Uhr

Hy jacki,

versuchs mal so:


//Datenquelle für Report
CrystalReport1 cr1 = new CrystalReport1();
cr1.SetDataSource(dtRechnungsdaten);

//Report Viewer den Report übergeben
crystalReportViewer1.Report = cr1;

Natürlich musst du auch vorher die Tabelle im Report selbst richtig einstellen um
die gewünschten Daten richtig anzuzeigen.

Gruß
Red_Dragon69

13.11.2009 - 10:08 Uhr

Hallo Leute,

ich hoffe ihr könnt mir mal wieder helfen.

Ich habe mich in der letzten Zeit mit ClickOnce auseinandergesetzt und es geschafft meine Anwendung über einen Updatebutton mit ClickOnce und einem FTP auf eine neue Version zu aktualisieren.

Nun stell ich mir die Frage, ob es möglich ist, mehrere Programme gleichzeitig updaten zu können. Mit einem selbst geschriebenen Updateprogramm vlt?

Hat da schon mal jemand was in der Richtung gemacht bzw. irgendwelche Informationen dazu?

Gruß
Red_Dragon69

12.11.2009 - 12:46 Uhr

Hallo Belzaharas

Es kommt ganz darauf an wie die Daten ausgewertet werden.
Soll der User die Karte lokal und offline betrachten können, mit diversen Eintragungen und Statistiken, dann JA. Jeder User muss zb Google Earth installieren.

Ansonsten würde ich eine zentrale Lösung voschlagen, bei der mittels User Login Daten bereitgestellt, auf dem Server berechnet und zum jeweiligen User geschickt werden können. Als Email mit Screenshot oÄ.

Möglich wäre auch eine Webapplikation. So wie Google Maps oder so. Aber dafür müsste man sich mit dem Anbieter des jeweiligen Online-Kartenmaterials unterhalten.

Gruß
Red_Dragon69

12.11.2009 - 11:33 Uhr

Hallo Belzaharas

Bei vielen Mapviewern gibt es die Möglichkeit Overlays zu erstellen.
Das sind Dateien, die du mit dem Editor öffnen und dann die jeweiligen Eigenschaften bearbeiten kannst.

Und der Ansatz wäre dieser, dass du solche Overlay Dateien mit deinem Programm schreibst.
Also du erstellst Textfiles, speicherst diese mit der jeweiligen Erweiterung ab und diese Overlay Dateien werden dann mit einem Mapviewer geöffnet.

Als Beispiel wäre Google Earth zu nennen, dessen KartenOverlays .kml Dateien sind, wenn ich mich nicht täusche.

Gruß
Red_Dragon69

29.10.2009 - 17:11 Uhr

Hy Leute,

wie kann ich ein Setup Projekt von mir über ne Verknüpfung wieder deinstallieren?
So wie bei den Standard Programmen, wo im Startmenü ne Verknüpfung zum Deinstallieren ist.

Ich habs zur Zeit so gelöst das ich einfach ne Uninstall.bat erstelle und dort folgendes reinschreibe:

C:\WINDOWS\system32\MsiExec.exe /i{ProduktCode der Anwendung}

Diese .bat binde ich dann in mein Projekt ein und lege die Verknüpfung in den anzulegenden Startmenü Eintrag.
Das funktioniert, is aber unsauber, da immer das Fenster der Eingabeaufforderung aufpoppt und bis zum Ende des Uninstallvorganges im Hintergrund angezeigt wird.

Gibt es da eine andere Lösung oder ist das schon ein guter Weg?

Gruß
Red_Dragon69

29.10.2009 - 14:14 Uhr

Hallo,

willst du beides gleichzeitg haben, d.h. entweder Folder oder Dateien in einem Fenster auswählen zu können, oder basiert die Entscheidung was ausgewählt werden soll auf einem Ereignis das vorher stattfindet?

zu 1.:
Keine Ahnung, ob es überhaupt möglich ist, dass in einem Dialog zu lösen.
Vlt wenn du dir selber eine Dialog Klasse erstellst.

zu 2.:
Basierend auf dem vorhergehenden Ereignis, kannst du entweder einen OpenFile- oder einen FolderBrowserDialog öffnen.

Gruß
Red_Dragon69

20.10.2009 - 13:52 Uhr

Oke, danke für deine Antwort.

Gruß
red_dragon69

19.10.2009 - 15:50 Uhr

Hy Leute,

leider haben mich Google bzw. die Forumsuche nicht weitergebracht.

Vlt weis jemand ob es möglich ist die Columnheader von einem Listview 2-zeilig zu machen, bzw. Subheader zu definieren?!

Möglicherweise mit der ColumnHeaderCollection-Klasse, oder bin ich da auf dem Holzweg??

Gruß
red_dragon69

02.10.2009 - 11:50 Uhr

Wie wärs wenn du es über die Windows API versuchst?


using System.Diagnostics;               // Damit wir mit Prozessen arbeiten können
using System.Runtime.InteropServices;   // Um DLLs importieren zu können

[DllImport("User32")]
private static extern int ShowWindow(int hwnd, int nCmdShow);

private Process[] processes;

//Alles Prozesse auf den Namen des ausführenden Programmes überprüfen
processes = Process.GetProcessesByName("EXCEL");

//Unter allen Instanzen den Prozess suchen
foreach (Process proc in processes)
{
    ShowWindow(proc.MainWindowHandle.ToInt32(), 1);  //Fenster normal anzeigen
}

Und dann irgendwie das Excel Fenster auswählen und mit nem Excel Object verknüpfen. Wieder mal kein VS zum testen, sry. 😕

Gruß
red_dragon69

01.10.2009 - 16:05 Uhr

Hy Alex,

du könntest es über die laufenden Prozesse versuchen.


private Process[] processes;

//Alles Prozesse auf den Namen des ausführenden Programmes überprüfen
processes = Process.GetProcessesByName("EXCEL");

//Unter allen Instanzen den Prozess suchen
foreach (Process proc in processes)
{
    //Code um Prozess auszuwählen und Excelfenster aktiv zu setzen
}

Ungetestet!!! Hab grad nix zum Testen am Rechner...

Gruß
Red_Dragon69

31.08.2009 - 13:25 Uhr

Hallo

und Danke Gila. Funktioniert einwandfrei. 😁

hier noch mein Code:


Word.Application wordApp = new Word.Application();
Word.Document document = new Word.Document();

//Parameter für die Erzeugung des Worddokumentes
object Dateiname = "normal.dot";
object neueVorlage = false;
object Dokumententyp = 0;
object sichtbar = true;

document = wordApp.Documents.Add(ref Dateiname, ref neueVorlage, ref Dokumententyp, ref sichtbar);

wordApp.Visible = true;

string[] strGIF = Directory.GetFiles(Dateipfad() + @"\Bilder", "Bild*");

for (i = 0; i < strGIF.Length; i++)
{
    //Tabelle erstellen
    Word.Table datatable = document.Tables.Add(wordApp.Selection.Range, 5, 2, ref missing, ref missing);

    //Gitternetzlinien innen und außen anzeigen
    datatable.Borders.InsideLineStyle = Microsoft.Office.Interop.Word.WdLineStyle.wdLineStyleSingle;
    datatable.Borders.OutsideLineStyle = Microsoft.Office.Interop.Word.WdLineStyle.wdLineStyleSingle;

    //Tabelle befüllen
    ...

    //Parameter für das Einfügen eines Bildes
    string strDateipfad = strGIF[i];
    object position = wordApp.Selection.Range;
    object LinkToFile = false;
    object SaveWithDocument = true;

    //Bild einfügen
    document.InlineShapes.AddPicture(strDateipfad, ref LinkToFile, ref SaveWithDocument, ref position);

    //Ein Zeichen nach rechts, um ans Ende zu gelangen
    object einheit = Word.WdUnits.wdCharacter;
    object anzahl = 1;
    wordApp.Selection.MoveRight(ref einheit, ref anzahl, ref missing);
}

Gruß
Red_Dragon69

27.08.2009 - 14:18 Uhr

Hallo Communitiy,

wieder mal ein Problem bei dem ich eure Hilfe brauche.

Also, ich füge in ein Word Dokument eine Tabelle ein und möchte direkt danach eine Grafik einfügen. Aber nachdem ich die Tabelle eingefügt habe und die Grafik eingefügt werden soll, wird diese immer in die erste Zelle der Tabelle eingefügt statt darunter.

Mittlerweile weis ich das ich das über den "position" Parameter steuern kann, nur welchen Wert ich ihm zuweisen muss weis ich leider noch nicht.

Kann ich vlt irgendwie die Position des Cursors ändern/steuern? vlt mit Koordinaten oder so ähnlich?

Code:


string[] strGIF = Directory.GetFiles(Dateipfad() + @"\Bilder", "Bild*");

for (i = 0; i < strGIF.Length; i++)
{
    //Tabelle erstellen
    Word.Table datatable = document.Tables.Add(wordApp.Selection.Range, 5, 2, ref missing, ref missing);

    //Gitternetzlinien innen und außen anzeigen
    datatable.Borders.InsideLineStyle = Microsoft.Office.Interop.Word.WdLineStyle.wdLineStyleSingle;
    datatable.Borders.OutsideLineStyle = Microsoft.Office.Interop.Word.WdLineStyle.wdLineStyleSingle;

    //Tabelle befüllen
    ...

    //Parameter für das Einfügen eines Bildes
    string strDateipfad = strGIF[i];
    object position = wordApp.Selection.Range;
    object LinkToFile = false;
    object SaveWithDocument = true;

    //Bild einfügen
    document.InlineShapes.AddPicture(strDateipfad, ref LinkToFile, ref SaveWithDocument, ref position);
}

Gruß
Red_Dragon69

27.08.2009 - 09:17 Uhr

Hallo Leute.

Jetzt muss ich einen alten Beitrag wieder aufwärmen, weils bei mir einfach nicht hinhaut.
Der Prozess "Excel.exe" wird einfach nicht beendet.

Weis jemand an was das liegen könnte? Benutze Vista Enterprise und Office 2007.

Folgend noch mein code:


private void button1_Click(object sender, EventArgs e)
{
    object missing = Type.Missing;
    string PosX, PosY;
    int i;

    //.xml-File mit Excel öffnen und Daten auslesen um die ovl Dateien zu erzeugen
    Excel.Application excelApp = new Excel.Application();
    Excel.Workbook workbook = excelApp.Workbooks.Open(Dateipfad() + @"\File.xml", missing, missing, missing, missing, missing, missing, missing, missing, missing, missing, missing, missing, missing, missing);
    Excel.Worksheet worksheet = (Excel.Worksheet)workbook.Worksheets["wks-Name"];

    excelApp.Visible = true;

    //Anzahl der Zeilen ermitteln
    string beginCell = "A" + worksheet.Rows.Count;
    string endCell = "AA" + worksheet.Rows.Count;

    int row = worksheet.get_Range(beginCell, endCell).get_End(Excel.XlDirection.xlUp).Row;

    for (i = 2; i <= row; i++)
    {
        //Daten aus Excelfile ermitteln
        Excel.Range Xrng = worksheet.get_Range("A"+i, "F"+i);
        Excel.Range Yrng = worksheet.get_Range("P"+i, "S"+i);

        PosX = (string)Xrng.get_Value(missing);
        PosY = (string)Yrng.get_Value(missing);

        //Textdatei erstellen, Daten eintragen und Text speichern
        StreamWriter Writer = new StreamWriter(Dateipfad() + ".txt", false, Encoding.Default);
                
        //Daten für Markierung eintragen
        Writer.WriteLine("TextTextText");

        Writer.Close();
    }

    //Excel schließen
    workbook.Close(false, missing, missing);
    excelApp.Application.Quit();
    excelApp.Quit();

    //COM Objekte freigeben um EXCEL.exe zu schließen
    Marshal.FinalReleaseComObject(worksheet);
    Marshal.FinalReleaseComObject(workbook);
    Marshal.FinalReleaseComObject(excelApp);

    //Variablen auf Null setzen
    PosX = null;
    PosY = null;
    worksheet = null;
    workbook = null;
    excelApp = null;
}

Gruß
Red_Dragon69