<?xml version="1.0" encoding="UTF-8"?><rss xmlns:dc="http://purl.org/dc/elements/1.1/" xmlns:content="http://purl.org/rss/1.0/modules/content/" xmlns:atom="http://www.w3.org/2005/Atom" version="2.0"><channel><title><![CDATA[Datei öffnen mit eigenem Programm durch Windows Context &amp;quot;Öffnen mit&amp;quot;]]></title><description><![CDATA[<p>Hallo,</p>
<p>ich möchte wie in diesem Beitrag auch schon angesprochen: <a href="http://www.c-plusplus.net/forum/viewtopic-var-t-is-39306.html" rel="nofollow">http://www.c-plusplus.net/forum/viewtopic-var-t-is-39306.html</a> Dateien mit dem Windows Contextmenü &quot;Öffnen mit&quot; von meinem Programm öffnen lassen.</p>
<p>Da die Dateiart einem anderen Programm zugewiesen ist, soll hier nicht einen Voreinstellung auf mein Programm gemacht werden.<br />
Mir reicht einfaches anklicken von &quot;Öffnen mit&quot;.<br />
Wenn ich zZ &quot;Öffnen mit&quot; klicke öffnet sich zwar mein Programm, allerdings wird die Datei nicht eingelsen und angezeigt. Das Formular bleibt leer!<br />
Ausserdem startet sich mein Programm bei jedem &quot;Öffen mit&quot;, so das ich am Ende x offene und leere Versionen meines Programmes habe...<br />
Aus dem obigen Thread habe ich die zuletzt beschriebene if-Anweisung eingefügt in der Hoffnung, dass sie etwas bewirkt (ja ich weiß - das ist totaler Blödsinn).</p>
<pre><code class="language-cpp">__fastcall TFormMain::TFormMain(TComponent* Owner)
        : TForm(Owner)
{
  if (ParamStr(1) != &quot;&quot;)
    OpenHandle(ParamStr(1));
}
</code></pre>
<p>Beim öffnen erhalte ich dann die Meldung &quot;Datei untitled.poe kann nicht geöffnet werden&quot;. untitled.poe ist die Voreinstellung meines Öffnendialoges. Die Öffnen-Funktion sieht so aus:</p>
<pre><code class="language-cpp">void __fastcall TFormMain::OpenHandle(String openFileName)
{
tmpList-&gt;LoadFromFile(OpenDialog1-&gt;FileName); //wobei tmpList eine Stringliste ist
</code></pre>
<p>.</p>
<p>kurze Beschreibung meines bisheringen Öffnens:<br />
Mein Programm erzeugt beim Öffnen (Öffnendialog im Programm) zur Laufzeit dynamisch RichEdits in das die Dateiinhalte geschrieben werden. Um es weiter zu komplizieren <img
      src="https://www.c-plusplus.net/forum/plugins/nodebb-plugin-emoji/emoji/emoji-one/1f609.png?v=ab1pehoraso"
      class="not-responsive emoji emoji-emoji-one emoji--winking_face"
      title=";)"
      alt="😉"
    /> liegen diese RichEdits auf Seiten der Komponente PageControl, welche auch dynamisch erzeugt werden. <strong>Das alles funktioniert schon.</strong> Wer nun verwirrt ist kann sich das Programm ja mal angucken: <a href="http://www.PLCEdit.de.vu" rel="nofollow">http://www.PLCEdit.de.vu</a> (Installer 582kB).<br />
Meine Öffnenfunktion sieht folgendermaßen aus:</p>
<pre><code class="language-cpp">void __fastcall TFormMain::Oeffnen1Click(TObject *Sender)
{
if (OpenDialog1-&gt;Execute())
  OpenHandle(OpenDialog1-&gt;FileName);
} //Menu Open mit dem Funktionsaufruf OpenHandle der dann folgend die Datei einliest --&gt;
void __fastcall TFormMain::OpenHandle(String openFileName)
{
tmpList-&gt;LoadFromFile(OpenDialog1-&gt;FileName);
} //Öffnen in separater Funktion, da von Oeffnen1 und von TForm(Owner) aufgerufen
</code></pre>
<p>. Der Rest ist das Handling für die Erzeugung einer neuen PageControlseite + der RichEdits auf ihr (tmpList ist eine einfache Stringliste). Daher kein ellenlanger Quellcode zum Öffnendialog von mir, sondern nur der unten stehende Ablauf:</p>
<pre><code>Öffnendialog, Dateiinhalt in Strinliste laden --&gt; Routine für die neue Seite + RichEdits im PageControl 
--&gt; Routine zum füllen der RichEdits mit Dateiinhalt. --&gt; zerstören der Stringliste
</code></pre>
<p>Gibt es uU eine Einstellung, die man der Form oder dem Öffnendialog tätigen kann, damit das windowsinterne &quot;Öffnen mit&quot; funktioniert?<br />
Ich möchte dazu erreichen, dass bei einem &quot;Öffnen mit&quot; nicht eine neue Instanz meines Programmes gestartet wird sondern die Datei auf einer neuen PageControl Seite geöffnet wird. Hierzu würde dann ja sicher reichen auf die vorhandene Routine der dynamischen Seitenerstellung zuzugreifen.</p>
<p>Krönung wäre eine Drag&amp;Drop Funktion, also dass ich eine Datei auf mein Programm ziehe und sich diese im Programm auf einer neuen Seite öffnet. Hierbei wäre es vlt. problematisch, wenn ich die Datei auf ein RichEdit ziehe, ich aber für die Datei eine neue PageControl Seite mit RichEdit öffnen möchte.</p>
<p>Danke für eure Mühe im Voraus.</p>
<p>MfG Martin</p>
]]></description><link>https://www.c-plusplus.net/forum/topic/111734/datei-öffnen-mit-eigenem-programm-durch-windows-context-quot-öffnen-mit-quot</link><generator>RSS for Node</generator><lastBuildDate>Sun, 19 Jul 2026 08:40:59 GMT</lastBuildDate><atom:link href="https://www.c-plusplus.net/forum/topic/111734.rss" rel="self" type="application/rss+xml"/><pubDate>Sat, 04 Jun 2005 15:30:52 GMT</pubDate><ttl>60</ttl><item><title><![CDATA[Reply to Datei öffnen mit eigenem Programm durch Windows Context &amp;quot;Öffnen mit&amp;quot; on Sun, 05 Jun 2005 06:59:53 GMT]]></title><description><![CDATA[<p>Hallo,</p>
<p>ich möchte wie in diesem Beitrag auch schon angesprochen: <a href="http://www.c-plusplus.net/forum/viewtopic-var-t-is-39306.html" rel="nofollow">http://www.c-plusplus.net/forum/viewtopic-var-t-is-39306.html</a> Dateien mit dem Windows Contextmenü &quot;Öffnen mit&quot; von meinem Programm öffnen lassen.</p>
<p>Da die Dateiart einem anderen Programm zugewiesen ist, soll hier nicht einen Voreinstellung auf mein Programm gemacht werden.<br />
Mir reicht einfaches anklicken von &quot;Öffnen mit&quot;.<br />
Wenn ich zZ &quot;Öffnen mit&quot; klicke öffnet sich zwar mein Programm, allerdings wird die Datei nicht eingelsen und angezeigt. Das Formular bleibt leer!<br />
Ausserdem startet sich mein Programm bei jedem &quot;Öffen mit&quot;, so das ich am Ende x offene und leere Versionen meines Programmes habe...<br />
Aus dem obigen Thread habe ich die zuletzt beschriebene if-Anweisung eingefügt in der Hoffnung, dass sie etwas bewirkt (ja ich weiß - das ist totaler Blödsinn).</p>
<pre><code class="language-cpp">__fastcall TFormMain::TFormMain(TComponent* Owner)
        : TForm(Owner)
{
  if (ParamStr(1) != &quot;&quot;)
    OpenHandle(ParamStr(1));
}
</code></pre>
<p>Beim öffnen erhalte ich dann die Meldung &quot;Datei untitled.poe kann nicht geöffnet werden&quot;. untitled.poe ist die Voreinstellung meines Öffnendialoges. Die Öffnen-Funktion sieht so aus:</p>
<pre><code class="language-cpp">void __fastcall TFormMain::OpenHandle(String openFileName)
{
tmpList-&gt;LoadFromFile(OpenDialog1-&gt;FileName); //wobei tmpList eine Stringliste ist
</code></pre>
<p>.</p>
<p>kurze Beschreibung meines bisheringen Öffnens:<br />
Mein Programm erzeugt beim Öffnen (Öffnendialog im Programm) zur Laufzeit dynamisch RichEdits in das die Dateiinhalte geschrieben werden. Um es weiter zu komplizieren <img
      src="https://www.c-plusplus.net/forum/plugins/nodebb-plugin-emoji/emoji/emoji-one/1f609.png?v=ab1pehoraso"
      class="not-responsive emoji emoji-emoji-one emoji--winking_face"
      title=";)"
      alt="😉"
    /> liegen diese RichEdits auf Seiten der Komponente PageControl, welche auch dynamisch erzeugt werden. <strong>Das alles funktioniert schon.</strong> Wer nun verwirrt ist kann sich das Programm ja mal angucken: <a href="http://www.PLCEdit.de.vu" rel="nofollow">http://www.PLCEdit.de.vu</a> (Installer 582kB).<br />
Meine Öffnenfunktion sieht folgendermaßen aus:</p>
<pre><code class="language-cpp">void __fastcall TFormMain::Oeffnen1Click(TObject *Sender)
{
if (OpenDialog1-&gt;Execute())
  OpenHandle(OpenDialog1-&gt;FileName);
} //Menu Open mit dem Funktionsaufruf OpenHandle der dann folgend die Datei einliest --&gt;
void __fastcall TFormMain::OpenHandle(String openFileName)
{
tmpList-&gt;LoadFromFile(OpenDialog1-&gt;FileName);
} //Öffnen in separater Funktion, da von Oeffnen1 und von TForm(Owner) aufgerufen
</code></pre>
<p>. Der Rest ist das Handling für die Erzeugung einer neuen PageControlseite + der RichEdits auf ihr (tmpList ist eine einfache Stringliste). Daher kein ellenlanger Quellcode zum Öffnendialog von mir, sondern nur der unten stehende Ablauf:</p>
<pre><code>Öffnendialog, Dateiinhalt in Strinliste laden --&gt; Routine für die neue Seite + RichEdits im PageControl 
--&gt; Routine zum füllen der RichEdits mit Dateiinhalt. --&gt; zerstören der Stringliste
</code></pre>
<p>Gibt es uU eine Einstellung, die man der Form oder dem Öffnendialog tätigen kann, damit das windowsinterne &quot;Öffnen mit&quot; funktioniert?<br />
Ich möchte dazu erreichen, dass bei einem &quot;Öffnen mit&quot; nicht eine neue Instanz meines Programmes gestartet wird sondern die Datei auf einer neuen PageControl Seite geöffnet wird. Hierzu würde dann ja sicher reichen auf die vorhandene Routine der dynamischen Seitenerstellung zuzugreifen.</p>
<p>Krönung wäre eine Drag&amp;Drop Funktion, also dass ich eine Datei auf mein Programm ziehe und sich diese im Programm auf einer neuen Seite öffnet. Hierbei wäre es vlt. problematisch, wenn ich die Datei auf ein RichEdit ziehe, ich aber für die Datei eine neue PageControl Seite mit RichEdit öffnen möchte.</p>
<p>Danke für eure Mühe im Voraus.</p>
<p>MfG Martin</p>
]]></description><link>https://www.c-plusplus.net/forum/post/802199</link><guid isPermaLink="true">https://www.c-plusplus.net/forum/post/802199</guid><dc:creator><![CDATA[macsmac]]></dc:creator><pubDate>Sun, 05 Jun 2005 06:59:53 GMT</pubDate></item><item><title><![CDATA[Reply to Datei öffnen mit eigenem Programm durch Windows Context &amp;quot;Öffnen mit&amp;quot; on Sun, 05 Jun 2005 07:40:14 GMT]]></title><description><![CDATA[<p>Auch nach mehrmaligem Durchlesen bin ich mir nicht wirlich sicher, verstanden zu haben, was du machen willst, deshalb mal so auf Verdacht:<br />
<a href="http://www.bytesandmore.de/rad/cpp/snipp/sc06016.php" rel="nofollow">http://www.bytesandmore.de/rad/cpp/snipp/sc06016.php</a><br />
<a href="http://www.bytesandmore.de/rad/cpp/snipp/sc03026.php" rel="nofollow">http://www.bytesandmore.de/rad/cpp/snipp/sc03026.php</a></p>
]]></description><link>https://www.c-plusplus.net/forum/post/802517</link><guid isPermaLink="true">https://www.c-plusplus.net/forum/post/802517</guid><dc:creator><![CDATA[Jansen]]></dc:creator><pubDate>Sun, 05 Jun 2005 07:40:14 GMT</pubDate></item><item><title><![CDATA[Reply to Datei öffnen mit eigenem Programm durch Windows Context &amp;quot;Öffnen mit&amp;quot; on Sun, 05 Jun 2005 09:07:37 GMT]]></title><description><![CDATA[<p>Danke, danke, danke <img
      src="https://www.c-plusplus.net/forum/plugins/nodebb-plugin-emoji/emoji/emoji-one/1f642.png?v=ab1pehoraso"
      class="not-responsive emoji emoji-emoji-one emoji--slightly_smiling_face"
      title=":)"
      alt="🙂"
    /></p>
<p>Die Drag &amp; Drop Funktion ist wirklich sehr schön.<br />
Falls irgendwann mal jemand diesen Thread findet, man kann statt der ListBox auch bspw. die Form Main eintragen. Macht sich gut,wenn man viele Objekte hat, die kein Handle haben:</p>
<pre><code class="language-cpp">DragAcceptFiles(FormMain -&gt; Handle, true); //WM_DropFiles
</code></pre>
<p>Die &quot;Öffnen mit&quot; Funktionalität hat eine neue Qualität erreicht:<br />
Ich hatte zufällig in meiner Funktion</p>
<pre><code class="language-cpp">void __fastcall TFormMain::OpenHandle(String openFileName) 
//noch ein 
LoadFromFile(OpenDialog1-&gt;FileName) //drin, statt dem 
LoadFromFile(openFileName)
</code></pre>
<p>... daher auch die Message mit der untitled.poe (siehe 1. Posting).</p>
<p>Nun bekomme ich den Fehler &quot;EAccess Violation&quot;, wenn ich einen Datei mit dem Contextmenü &quot;Öffnen mit&quot; in meinem Programm öffnen will.<br />
Laut der Borland Hilfe handelt es sich um einen ungültigen Speicherzugriff.<br />
Ich habe die Routine</p>
<pre><code class="language-cpp">if (ParamStr(1) != &quot;&quot;)
    OpenHandle(ParamStr(1));
</code></pre>
<p>nun in das Ereignis OnActivate meiner FormMain geschrieben. Frage mich aber wo das Problem ist, wenn Du (Jansen) doch in dem o.g. Thread</p>
<pre><code class="language-cpp">__fastcall TForm1::TForm1(TComponent* Owner) 
  : TForm(Owner) 
//...
</code></pre>
<p>vorschlägst.<br />
Naja, jedenfalls funktionierts erst mal so wie ich es mir gewünscht hatte, danke.</p>
<p>MfG Martin</p>
]]></description><link>https://www.c-plusplus.net/forum/post/802546</link><guid isPermaLink="true">https://www.c-plusplus.net/forum/post/802546</guid><dc:creator><![CDATA[macsmac]]></dc:creator><pubDate>Sun, 05 Jun 2005 09:07:37 GMT</pubDate></item><item><title><![CDATA[Reply to Datei öffnen mit eigenem Programm durch Windows Context &amp;quot;Öffnen mit&amp;quot; on Sun, 05 Jun 2005 09:31:18 GMT]]></title><description><![CDATA[<p>Offenbar ist ein in deiner OpenHandle-Funktion verwendetes Element (die StringList?) beim Aufruf aus dem Form-Konstruktor heraus noch nicht initialisiert bzw. dafür kein entsprechender Speicher reserviert.</p>
]]></description><link>https://www.c-plusplus.net/forum/post/802560</link><guid isPermaLink="true">https://www.c-plusplus.net/forum/post/802560</guid><dc:creator><![CDATA[Jansen]]></dc:creator><pubDate>Sun, 05 Jun 2005 09:31:18 GMT</pubDate></item><item><title><![CDATA[Reply to Datei öffnen mit eigenem Programm durch Windows Context &amp;quot;Öffnen mit&amp;quot; on Sun, 05 Jun 2005 09:54:11 GMT]]></title><description><![CDATA[<p>Ja, genau das habe ich mir ebend auch gedacht, da es mit einem schon vorhandenem Objekt, bspw. der ListBox funktioniert.</p>
<p>MfG Martin</p>
]]></description><link>https://www.c-plusplus.net/forum/post/802576</link><guid isPermaLink="true">https://www.c-plusplus.net/forum/post/802576</guid><dc:creator><![CDATA[macsmac]]></dc:creator><pubDate>Sun, 05 Jun 2005 09:54:11 GMT</pubDate></item></channel></rss>