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
Hy,
ich denke mal hier werden die Basics ausreichend erklärt:
C# Excel Basics
Gruß
Red_Dragon69
PS: 1st Hit auf Google...
Wenn du über WLAN kommunizierst, könntest du es mit Funambol versuchen.
(eine plattformunabhängige Server- Client Open Source- Lösung)
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
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
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
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
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
Wie wärs mit Dia?
Danke für den Tipp xxMUROxx.
Ich überprüfe einfach ob die Datei existiert und wenn nicht leg ich sie mit Standardwerten an. 😃
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. 😁
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...
Danke, das sieht sehr vielversprechend aus. Mal sehen ob ich damit weiterkomme. 😃
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
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
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
Versuch mal die Windows Mobile 6.5 SDK zu installieren. Vllt funzt es dann. 🙂
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
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
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. 😃
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
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. 😃
IRange.Activate()
ich glaube das könnte dir weiterhelfen. 😃
Gruß
Red_Dragon69
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
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
Danke für die schnelle Antwort.
Ich werd das sobald wie möglich versuchen umzusetzen. 😃
Gruß
Red_Dragon69
einfach mitten in den Bericht rein. Such dir ne Sektion aus. 😉
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
Versuchs mal mit Rechtsklick-->Entwurf-->Seite einrichten
Da kannst du die Seitenränder einstellen.
Gruß
Red_Dragon69
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
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. 😃
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
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
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
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;
}
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
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
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
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
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
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
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
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
Oke, danke für deine Antwort.
Gruß
red_dragon69
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
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
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
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
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
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