<?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[File öffnen durch Doppelklick -&amp;gt;.exe starten -&amp;gt; Datei laden]]></title><description><![CDATA[<p>Hallo zusammen,</p>
<p>habe leider keinen passenderen und kürzeren Titel für mein Problem gefunden...</p>
<p>Folgendes Problem:</p>
<p>Ich schreibe eine .exe und die erzeugt Dateien, die auf die Festplatte gespeichert werden. Ich nehme Registry Einträge vor, das diesen Dateien die &quot;Öffnen mit...&quot; Eigenschaft verpasst und diese durch Doppelklick die .exe starten.</p>
<p>Wie kann das Programm jetzt so steuern, dass es unterscheiden kann, ob es durch Doppelklick auf die .exe oder durch Doppelklick auf die Datei geöffnet wurde?<br />
Falls durch Doppelklick auf .exe soll es nichts weiter machen, bei Doppelklick auf die Datei muss sie durch das Programm eingelesen werden.</p>
<p>Vielen Dank und liebe Grüße<br />
Todd</p>
]]></description><link>https://www.c-plusplus.net/forum/topic/187004/file-öffnen-durch-doppelklick-gt-exe-starten-gt-datei-laden</link><generator>RSS for Node</generator><lastBuildDate>Sun, 16 Aug 2026 16:55:53 GMT</lastBuildDate><atom:link href="https://www.c-plusplus.net/forum/topic/187004.rss" rel="self" type="application/rss+xml"/><pubDate>Sat, 14 Jul 2007 14:48:26 GMT</pubDate><ttl>60</ttl><item><title><![CDATA[Reply to File öffnen durch Doppelklick -&amp;gt;.exe starten -&amp;gt; Datei laden on Sat, 14 Jul 2007 14:48:26 GMT]]></title><description><![CDATA[<p>Hallo zusammen,</p>
<p>habe leider keinen passenderen und kürzeren Titel für mein Problem gefunden...</p>
<p>Folgendes Problem:</p>
<p>Ich schreibe eine .exe und die erzeugt Dateien, die auf die Festplatte gespeichert werden. Ich nehme Registry Einträge vor, das diesen Dateien die &quot;Öffnen mit...&quot; Eigenschaft verpasst und diese durch Doppelklick die .exe starten.</p>
<p>Wie kann das Programm jetzt so steuern, dass es unterscheiden kann, ob es durch Doppelklick auf die .exe oder durch Doppelklick auf die Datei geöffnet wurde?<br />
Falls durch Doppelklick auf .exe soll es nichts weiter machen, bei Doppelklick auf die Datei muss sie durch das Programm eingelesen werden.</p>
<p>Vielen Dank und liebe Grüße<br />
Todd</p>
]]></description><link>https://www.c-plusplus.net/forum/post/1325359</link><guid isPermaLink="true">https://www.c-plusplus.net/forum/post/1325359</guid><dc:creator><![CDATA[Todd]]></dc:creator><pubDate>Sat, 14 Jul 2007 14:48:26 GMT</pubDate></item><item><title><![CDATA[Reply to File öffnen durch Doppelklick -&amp;gt;.exe starten -&amp;gt; Datei laden on Sat, 14 Jul 2007 15:33:58 GMT]]></title><description><![CDATA[<p>Hallo</p>
<p>Siehe <a href="http://www.c-plusplus.net/forum/viewtopic-var-t-is-39306.html" rel="nofollow">FAQ</a>.</p>
<p>bis bald<br />
akari</p>
]]></description><link>https://www.c-plusplus.net/forum/post/1325386</link><guid isPermaLink="true">https://www.c-plusplus.net/forum/post/1325386</guid><dc:creator><![CDATA[akari]]></dc:creator><pubDate>Sat, 14 Jul 2007 15:33:58 GMT</pubDate></item><item><title><![CDATA[Reply to File öffnen durch Doppelklick -&amp;gt;.exe starten -&amp;gt; Datei laden on Sun, 15 Jul 2007 12:22:02 GMT]]></title><description><![CDATA[<p>Danke für den Link.</p>
<p>Ich hab jetzt folgendes in die Registry hineingeschrieben:</p>
<pre><code class="language-cpp">exepath=ExtractFilePath(Application-&gt;ExeName);
TRegistry* pReg = new TRegistry;
 try {pReg-&gt;RootKey = HKEY_CLASSES_ROOT;
      pReg-&gt;OpenKey(&quot;.tmat&quot;,true);
      pReg-&gt;WriteString(&quot;&quot;,&quot;tmatfile&quot;);
      pReg-&gt;CloseKey();
      pReg-&gt;OpenKey(&quot;.tmat\\OpenWithList\\tlab.exe&quot;,true);
      pReg-&gt;WriteString(&quot;&quot;,&quot;&quot;);
      pReg-&gt;CloseKey();
      pReg-&gt;OpenKey(&quot;tmatfile&quot;,true);
      pReg-&gt;WriteString(&quot;&quot;,&quot;tlab data file&quot;);
      pReg-&gt;CloseKey();
      pReg-&gt;OpenKey(&quot;tmatfile\\DefaultIcon&quot;,true);
      pReg-&gt;WriteString(&quot;&quot;,exepath+&quot;\\Symbole\\tmat.ico,0&quot;);
      pReg-&gt;CloseKey();
      pReg-&gt;OpenKey(&quot;tmatfile\\Shell\\open\\command&quot;,true);
      pReg-&gt;WriteString(&quot;&quot;,exepath +&quot;tlab.exe %1&quot;);
      pReg-&gt;CloseKey();}
 catch(...)
 {delete pReg;}
 delete pReg;
</code></pre>
<p>Und mir folgende Zeilen ausgeben lassen:</p>
<pre><code class="language-cpp">__fastcall TForm1::TForm1(TComponent* Owner)
        : TForm(Owner)
{
 if (ParamStr(1)!=&quot;&quot;)
    {for (int i=0;i&lt;=ParamCount();i++)
          Memo1-&gt;Lines-&gt;Add(ParamStr(i));}
}
</code></pre>
<p>und bekomme als Resultat:</p>
<p>C:\Dokumente und Einstellungen\Todd\Desktop\Diplomarbeit\C++ Builder\x\tlab.exe<br />
C:\DOKUME<sub>1\Todd\Desktop\DIPLOM</sub>1\C__BUI<sub>1\x\WORKSP</sub>1\C674B~1.TMA</p>
<p>Die Datei, die ich öffne heisst: c.tmat</p>
<p><strong>Meine Frage:</strong> Wie bekomme ich jetzt den Namen dieser Datei extrahiert? &quot;c&quot;</p>
<p>Hab schon alles versucht, aber mit der zweiten Ausgabe von oben, d.h. ParamStr(1) komme ich nicht weiter</p>
<p>Vielen Dank und liebe Grüße<br />
Todd</p>
]]></description><link>https://www.c-plusplus.net/forum/post/1325798</link><guid isPermaLink="true">https://www.c-plusplus.net/forum/post/1325798</guid><dc:creator><![CDATA[Todd]]></dc:creator><pubDate>Sun, 15 Jul 2007 12:22:02 GMT</pubDate></item><item><title><![CDATA[Reply to File öffnen durch Doppelklick -&amp;gt;.exe starten -&amp;gt; Datei laden on Sun, 15 Jul 2007 12:38:17 GMT]]></title><description><![CDATA[<p>Hallo</p>
<p>Nein die Datei die du mit deinen Programm öffnest heißt <strong>C674B~1.TMA</strong></p>
<p>/Edit : Wenn das die Windows-übliche zusammenfassung in 8.3 Namen ist dann kannst du diesen Dateinamen auch weiterverwenden, Windows weiß schon welche Datei damit gemeint ist.</p>
<p>bis bald<br />
akari</p>
]]></description><link>https://www.c-plusplus.net/forum/post/1325807</link><guid isPermaLink="true">https://www.c-plusplus.net/forum/post/1325807</guid><dc:creator><![CDATA[akari]]></dc:creator><pubDate>Sun, 15 Jul 2007 12:38:17 GMT</pubDate></item><item><title><![CDATA[Reply to File öffnen durch Doppelklick -&amp;gt;.exe starten -&amp;gt; Datei laden on Sun, 15 Jul 2007 12:53:38 GMT]]></title><description><![CDATA[<p>Ja du hast Recht, Windows weiss welche Datei gemeint ist. Das Öffnen ist ja auch kein Problem, das funktioniert reibungslos. Ich hab aber eine ListBox, wo die Datei mit Namen gelistet wird.</p>
<p>D.h. im Ordner liegt eine Datei namens c.tmat...<br />
Bei Doppelklick auf c.tmat öffnet tlab.exe die Datei und liest sie ein (Matrix).<br />
ParamStr(1) liefert mit als Namen &quot;C674B~1&quot;<br />
Mit diesem Namen kann ich allerdings nicht viel Anfangen, weil ich den Namen der Datei anzeigen muss, in der ListBox und als Überschrift eine TStringGrids. Da kann ich doch nicht &quot;C674B~1&quot; anzeigen lassen...</p>
<p>Auf jeden Fall decken sich die ersten Zeichen des &quot;ParamStr-Namens&quot; -&gt;C... mit denen, die im Ordner angezeigt werden &quot;C&quot;.</p>
<p>Jetzt fehlt mir nur noch eine Information, ob es eine Regel gibt, bei der Vergabe des von ParamStr angezeigten Namens und dem, der im Ordner angezeigt wird.</p>
<p>Dann könnte man ja den ersten Teil extrahieren und den rest löschen. Nur weiss ich nicht bis zu welchem...</p>
<p>Liebe Grüße<br />
Todd</p>
]]></description><link>https://www.c-plusplus.net/forum/post/1325829</link><guid isPermaLink="true">https://www.c-plusplus.net/forum/post/1325829</guid><dc:creator><![CDATA[Todd]]></dc:creator><pubDate>Sun, 15 Jul 2007 12:53:38 GMT</pubDate></item><item><title><![CDATA[Reply to File öffnen durch Doppelklick -&amp;gt;.exe starten -&amp;gt; Datei laden on Sun, 15 Jul 2007 14:00:26 GMT]]></title><description><![CDATA[<p>Hallo</p>
<p>Aus der MSDN zu GetShortFileName :</p>
<blockquote>
<p>You can obtain the long name of a file from the short name by calling the FindFirstFile function.</p>
</blockquote>
<p>Du kannst auch die VCL-Funktion FindFirst nehmen.</p>
<p>bis bald<br />
akari</p>
]]></description><link>https://www.c-plusplus.net/forum/post/1325876</link><guid isPermaLink="true">https://www.c-plusplus.net/forum/post/1325876</guid><dc:creator><![CDATA[akari]]></dc:creator><pubDate>Sun, 15 Jul 2007 14:00:26 GMT</pubDate></item><item><title><![CDATA[Reply to File öffnen durch Doppelklick -&amp;gt;.exe starten -&amp;gt; Datei laden on Sun, 15 Jul 2007 14:54:49 GMT]]></title><description><![CDATA[<p>Danke für deine Hilfe...</p>
<p>Habe es jetzt folgendermaßen gelöst:</p>
<pre><code class="language-cpp">AnsiString filename;
GetLongPathName(ParamStr(1).c_str(),filename.c_str(),500);
</code></pre>
<p>jetzt ist in filename.c_str() folgendes gespeichert:</p>
<p>C:\Dokumente und Einstellungen\Todd\Desktop\Diplomarbeit\C++ Builder\x\workspace\c.tmat</p>
<p>Nochmals vielen Dank für deine Hilfe und liebe Grüße</p>
<p>Todd</p>
]]></description><link>https://www.c-plusplus.net/forum/post/1325921</link><guid isPermaLink="true">https://www.c-plusplus.net/forum/post/1325921</guid><dc:creator><![CDATA[Todd]]></dc:creator><pubDate>Sun, 15 Jul 2007 14:54:49 GMT</pubDate></item><item><title><![CDATA[Reply to File öffnen durch Doppelklick -&amp;gt;.exe starten -&amp;gt; Datei laden on Mon, 16 Jul 2007 08:40:06 GMT]]></title><description><![CDATA[<p>So darfst du das nicht machen, du schreibst in uninitialisierten Speicher, da der AnsiString vor Aufruf der Funktion leer ist.<br />
Du nimmst am besten ein char-Array und kopierst anschließend die Daten in einen AnsiString.</p>
<pre><code class="language-cpp">char cLongName[MAXPATH];
GetLongPathName(ParamStr(1).c_str(), cLongName, MAXPATH); 
AnsiString filename(cLongName);
</code></pre>
]]></description><link>https://www.c-plusplus.net/forum/post/1326337</link><guid isPermaLink="true">https://www.c-plusplus.net/forum/post/1326337</guid><dc:creator><![CDATA[Th]]></dc:creator><pubDate>Mon, 16 Jul 2007 08:40:06 GMT</pubDate></item><item><title><![CDATA[Reply to File öffnen durch Doppelklick -&amp;gt;.exe starten -&amp;gt; Datei laden on Mon, 16 Jul 2007 11:53:02 GMT]]></title><description><![CDATA[<p>Th schrieb:</p>
<blockquote>
<p>So darfst du das nicht machen..</p>
</blockquote>
<p>Doch, kann er, wenn folgendes macht:</p>
<pre><code class="language-cpp">[code]
  AnsiString filename = String::StringOfChar(' ',500); 
  GetLongPathName(ParamStr(1).c_str(),filename.c_str(),500);

[/code]
</code></pre>
<p>Aber deine Lösung ist natürlich auch ok. <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="😉"
    /></p>
]]></description><link>https://www.c-plusplus.net/forum/post/1326476</link><guid isPermaLink="true">https://www.c-plusplus.net/forum/post/1326476</guid><dc:creator><![CDATA[Burkhi]]></dc:creator><pubDate>Mon, 16 Jul 2007 11:53:02 GMT</pubDate></item><item><title><![CDATA[Reply to File öffnen durch Doppelklick -&amp;gt;.exe starten -&amp;gt; Datei laden on Mon, 16 Jul 2007 13:41:26 GMT]]></title><description><![CDATA[<p>Dadurch verhinderst du zwar, dass in nicht initialisierten Speicher geschrieben wird. Zulässig ist das aber nicht. Die Funktion c_str() ist const. Man darf also nicht da rein schreiben. In der Hilfe gibt es auch ein Beispiel mit einer entsprechenden Warnung.</p>
]]></description><link>https://www.c-plusplus.net/forum/post/1326574</link><guid isPermaLink="true">https://www.c-plusplus.net/forum/post/1326574</guid><dc:creator><![CDATA[Braunstein]]></dc:creator><pubDate>Mon, 16 Jul 2007 13:41:26 GMT</pubDate></item><item><title><![CDATA[Reply to File öffnen durch Doppelklick -&amp;gt;.exe starten -&amp;gt; Datei laden on Tue, 17 Jul 2007 09:18:53 GMT]]></title><description><![CDATA[<p>Okay, danke für die Hinweise...</p>
<p>Es funktioniert zwar wie ich es geschrieben habe, aber falls es doch unschön, bzw. zu Konflikten führen kann, werde ich den Vorschlag von TH aufgreifen und es so ausprobieren...</p>
<p>Danke für eure Hilfe und Liebe Grüße</p>
<p>Todd</p>
]]></description><link>https://www.c-plusplus.net/forum/post/1327039</link><guid isPermaLink="true">https://www.c-plusplus.net/forum/post/1327039</guid><dc:creator><![CDATA[Todd]]></dc:creator><pubDate>Tue, 17 Jul 2007 09:18:53 GMT</pubDate></item></channel></rss>