<?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[n00b @ ShellExecute]]></title><description><![CDATA[<p>hi, bin ein absoluter n00b in c++...</p>
<p>versuche mit der funktion ShellExecute eine Anwendung zu starten, funzt aber nicht:</p>
<pre><code>#include &quot;shellapi.h&quot;

ShellExecute(
             NULL,
             LPCWSTR(&quot;open&quot;),
             LPCWSTR(&quot;C:\\test2.txt&quot;),
             NULL,
             NULL,
             SW_SHOWNORMAL
             );
</code></pre>
<p>es öffnet sich einfach kein editor fenster, so wie ich das eigentlich will.</p>
<p>visual studio 2005</p>
<p>thx 4 help<br />
mfg<br />
imm0</p>
]]></description><link>https://www.c-plusplus.net/forum/topic/175963/n00b-shellexecute</link><generator>RSS for Node</generator><lastBuildDate>Fri, 17 Apr 2026 21:16:00 GMT</lastBuildDate><atom:link href="https://www.c-plusplus.net/forum/topic/175963.rss" rel="self" type="application/rss+xml"/><pubDate>Thu, 15 Mar 2007 20:04:21 GMT</pubDate><ttl>60</ttl><item><title><![CDATA[Reply to n00b @ ShellExecute on Thu, 15 Mar 2007 20:11:57 GMT]]></title><description><![CDATA[<p>hi, bin ein absoluter n00b in c++...</p>
<p>versuche mit der funktion ShellExecute eine Anwendung zu starten, funzt aber nicht:</p>
<pre><code>#include &quot;shellapi.h&quot;

ShellExecute(
             NULL,
             LPCWSTR(&quot;open&quot;),
             LPCWSTR(&quot;C:\\test2.txt&quot;),
             NULL,
             NULL,
             SW_SHOWNORMAL
             );
</code></pre>
<p>es öffnet sich einfach kein editor fenster, so wie ich das eigentlich will.</p>
<p>visual studio 2005</p>
<p>thx 4 help<br />
mfg<br />
imm0</p>
]]></description><link>https://www.c-plusplus.net/forum/post/1246310</link><guid isPermaLink="true">https://www.c-plusplus.net/forum/post/1246310</guid><dc:creator><![CDATA[imm0]]></dc:creator><pubDate>Thu, 15 Mar 2007 20:11:57 GMT</pubDate></item><item><title><![CDATA[Reply to n00b @ ShellExecute on Thu, 15 Mar 2007 20:14:13 GMT]]></title><description><![CDATA[<pre><code class="language-cpp">#include &lt;shellapi.h&gt;

::ShellExecute(NULL, TEXT(&quot;open&quot;), TEXT(&quot;C:\\test2.txt&quot;), NULL, NULL, SW_SHOWNORMAL);
</code></pre>
<p>so sollte das gehen <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/1246316</link><guid isPermaLink="true">https://www.c-plusplus.net/forum/post/1246316</guid><dc:creator><![CDATA[*D*Evil]]></dc:creator><pubDate>Thu, 15 Mar 2007 20:14:13 GMT</pubDate></item><item><title><![CDATA[Reply to n00b @ ShellExecute on Thu, 15 Mar 2007 20:31:49 GMT]]></title><description><![CDATA[<p>jo das funzt thx,</p>
<p>allerdings scheint das so jetzt nur mit textdokumenten zu gehen.</p>
<p>kannste du vllt auch noch kurz schreiben wie das geht, wenn man ein beliebiges dokument mit der standartanwendung öffnen will, so war das nämlich eigentlich gedacht.</p>
]]></description><link>https://www.c-plusplus.net/forum/post/1246332</link><guid isPermaLink="true">https://www.c-plusplus.net/forum/post/1246332</guid><dc:creator><![CDATA[imm0]]></dc:creator><pubDate>Thu, 15 Mar 2007 20:31:49 GMT</pubDate></item><item><title><![CDATA[Reply to n00b @ ShellExecute on Thu, 15 Mar 2007 20:42:30 GMT]]></title><description><![CDATA[<p>hmm kommt drauf an ... muss halt für den Dateitypen schon ne Anwendung hinterlegt sein ... aber dann gehts mit ShellExecute und open ...</p>
]]></description><link>https://www.c-plusplus.net/forum/post/1246337</link><guid isPermaLink="true">https://www.c-plusplus.net/forum/post/1246337</guid><dc:creator><![CDATA[*D*Evil]]></dc:creator><pubDate>Thu, 15 Mar 2007 20:42:30 GMT</pubDate></item><item><title><![CDATA[Reply to n00b @ ShellExecute on Thu, 15 Mar 2007 21:01:19 GMT]]></title><description><![CDATA[<p>aber es ist doch jeder datei eine standartanwendung hinterlegt und es wird überall so beschrieben wie ich es ganz oben auch gemacht hab, dass halt automatisch erkannt wird, was die standartanwendung ist...</p>
<p>wie lautet denn die anweisung anstelle von &quot;TEXT&quot; für editor für den internet explorer und für excel ??</p>
]]></description><link>https://www.c-plusplus.net/forum/post/1246348</link><guid isPermaLink="true">https://www.c-plusplus.net/forum/post/1246348</guid><dc:creator><![CDATA[imm0]]></dc:creator><pubDate>Thu, 15 Mar 2007 21:01:19 GMT</pubDate></item><item><title><![CDATA[Reply to n00b @ ShellExecute on Thu, 15 Mar 2007 21:29:20 GMT]]></title><description><![CDATA[<p>Arg jetzt weiß ich was du falsch verstanden hast ^^ Also ... du hattest in deinem Codeschnippsel einen Cast-Fehler drin. Du kannst nicht einen ANSI-String einfach in einen UNICODE-String casten.</p>
<p>Man verwendet, damit man die Anwendung sowohl UNICODE als auch ANSI Compilieren kann ein sogenanntes Makro, das nichts anderes macht als guckt ob UNICODE definiert ist ... wenn ja setzt es ein L davor und sonnst halt net...</p>
<pre><code class="language-cpp">#ifdef UNICODE
    #define TEXT(x) L##x
#else
    #define TEXT(x) x
#endif
</code></pre>
<p>So ist das in etwa definiert.</p>
<pre><code class="language-cpp">#include &lt;shellapi.h&gt;
ShellExecute(NULL, TEXT(&quot;open&quot;), TEXT(&quot;test1.bin&quot;), NULL, NULL, SW_SHOWNORMAL);
</code></pre>
]]></description><link>https://www.c-plusplus.net/forum/post/1246359</link><guid isPermaLink="true">https://www.c-plusplus.net/forum/post/1246359</guid><dc:creator><![CDATA[*D*Evil]]></dc:creator><pubDate>Thu, 15 Mar 2007 21:29:20 GMT</pubDate></item><item><title><![CDATA[Reply to n00b @ ShellExecute on Thu, 15 Mar 2007 21:41:18 GMT]]></title><description><![CDATA[<p>jo ok, es funzt jetzt auch!!</p>
<p>endlich^^</p>
<p>also nochmal thx</p>
]]></description><link>https://www.c-plusplus.net/forum/post/1246365</link><guid isPermaLink="true">https://www.c-plusplus.net/forum/post/1246365</guid><dc:creator><![CDATA[imm0]]></dc:creator><pubDate>Thu, 15 Mar 2007 21:41:18 GMT</pubDate></item><item><title><![CDATA[Reply to n00b @ ShellExecute on Mon, 14 May 2007 17:35:49 GMT]]></title><description><![CDATA[<p>Hallo auch,<br />
hab da ein ähnliches Problem und leider viel zu wenig Ahnung.</p>
<p>Solange ich den kompletten Pfad angebe, klappt es ja ohne Probleme.<br />
Ich will aber eine Textdatei im Programmverzeichnis öffnen und kenne den Pfad vorher noch nicht.</p>
<p>Wenn ich den Pfad einfach weglasse wird die Datei nicht gefunden und es passiert nichts.</p>
<pre><code>ShellExecute(NULL, TEXT(&quot;open&quot;), TEXT(&quot;log.txt&quot;), NULL, NULL, SW_SHOWNORMAL);
</code></pre>
<p>Und wenn ich den Pfad vorher als String definiere, hab ich den falschen Datentyp und bekomme nen Fehler.</p>
<pre><code>String^ Logfile = String::Concat(Application::StartupPath, &quot;\\log.txt&quot;);
ShellExecute(NULL, TEXT(&quot;open&quot;), Logfile, NULL, NULL, SW_SHOWNORMAL);
</code></pre>
<p>error C2664: 'ShellExecuteW': Konvertierung des Parameters 3 von 'System::String ^' in 'LPCWSTR' nicht möglich. <img
      src="https://www.c-plusplus.net/forum/plugins/nodebb-plugin-emoji/emoji/emoji-one/1f61e.png?v=ab1pehoraso"
      class="not-responsive emoji emoji-emoji-one emoji--disappointed_face"
      title=":("
      alt="😞"
    /></p>
<p>Kann mir vielleicht jemand sagen, wie ich davon nen LPCWSTR mache oder ob man das irgendwie anders lösen kann ?<br />
Ist auch VS2005.</p>
<p>Danke.<br />
Gruß superfrog</p>
]]></description><link>https://www.c-plusplus.net/forum/post/1284851</link><guid isPermaLink="true">https://www.c-plusplus.net/forum/post/1284851</guid><dc:creator><![CDATA[superfrog]]></dc:creator><pubDate>Mon, 14 May 2007 17:35:49 GMT</pubDate></item><item><title><![CDATA[Reply to n00b @ ShellExecute on Mon, 14 May 2007 21:49:53 GMT]]></title><description><![CDATA[<p>Ich verwende für sowas immer GetModuleFileName, inetwa so:</p>
<pre><code class="language-cpp">TCHAR buffer[MAX_PATH+16];
::GetModuleFileName(GetModuleHandle(), buffer, MAX_PATH);
*_tcsrchr(buffer, '\\') = 0;
_tcscat(buffer, TEXT(&quot;\\log.txt&quot;));
// in buffer steht jetzt der absolute Pfad zu &quot;log.txt&quot; im gleichen Verzeichnis wo die .exe liegt die gerade läuft.

::ShellExecute(0, TEXT(&quot;open&quot;), buffer, 0, 0, SW_SHOWNORMAL);
</code></pre>
<p>Mit C++/CLI kenn ich mich nicht aus, also kann ich dir auch nicht sagen wie man von einem &quot;String^&quot; nen char Pointer bekommt. Ich nehme aber mal an du wirst den String &quot;pinnen&quot; müssen oder sowas (kann aber leicht sein ich täusche mich da jetzt...).</p>
]]></description><link>https://www.c-plusplus.net/forum/post/1284999</link><guid isPermaLink="true">https://www.c-plusplus.net/forum/post/1284999</guid><dc:creator><![CDATA[hustbaer]]></dc:creator><pubDate>Mon, 14 May 2007 21:49:53 GMT</pubDate></item><item><title><![CDATA[Reply to n00b @ ShellExecute on Tue, 15 May 2007 07:35:19 GMT]]></title><description><![CDATA[<p>hustbaer schrieb:</p>
<blockquote>
<p>Ich verwende für sowas immer GetModuleFileName, inetwa so:</p>
<pre><code class="language-cpp">::GetModuleFileName(GetModuleHandle(), buffer, MAX_PATH);
</code></pre>
</blockquote>
<p>Dann tut es auch:</p>
<pre><code class="language-cpp">::GetModuleFileName(NULL, buffer, MAX_PATH);
</code></pre>
<p>@superfrog:<br />
Willst Du wirklich C++/CLI verwenden?<br />
Wenn keine Not da ist solltest Du es vermeiden oder das ganze ganz in der Managed Welt mit C# schreiben, oder purem C++/CLI!</p>
<p>Ansonsten zu String aus C++/CLI:<br />
<a href="http://support.microsoft.com/kb/311259/en-us" rel="nofollow">http://support.microsoft.com/kb/311259/en-us</a></p>
<p>Ohne</p>
]]></description><link>https://www.c-plusplus.net/forum/post/1285097</link><guid isPermaLink="true">https://www.c-plusplus.net/forum/post/1285097</guid><dc:creator><![CDATA[Martin Richter]]></dc:creator><pubDate>Tue, 15 May 2007 07:35:19 GMT</pubDate></item><item><title><![CDATA[Reply to n00b @ ShellExecute on Tue, 15 May 2007 15:20:59 GMT]]></title><description><![CDATA[<p>Martin Richter schrieb:</p>
<blockquote>
<p>hustbaer schrieb:</p>
<blockquote>
<p>Ich verwende für sowas immer GetModuleFileName, inetwa so:</p>
<pre><code class="language-cpp">::GetModuleFileName(GetModuleHandle(), buffer, MAX_PATH);
</code></pre>
</blockquote>
<p>Dann tut es auch:</p>
<pre><code class="language-cpp">::GetModuleFileName(NULL, buffer, MAX_PATH);
</code></pre>
</blockquote>
<p>Sicher? Bekomme ich da wenn der Code in einer DLL steht nicht den Pfad auf die DLL? Die Doku sagt &quot;current module&quot;, das wäre für mich eben die DLL und nicht die EXE (und ich will in dem Fall ja den Pfad zur exe haben).</p>
]]></description><link>https://www.c-plusplus.net/forum/post/1285488</link><guid isPermaLink="true">https://www.c-plusplus.net/forum/post/1285488</guid><dc:creator><![CDATA[hustbaer]]></dc:creator><pubDate>Tue, 15 May 2007 15:20:59 GMT</pubDate></item><item><title><![CDATA[Reply to n00b @ ShellExecute on Tue, 15 May 2007 16:11:23 GMT]]></title><description><![CDATA[<p>Solange Du bei GetModuleHandle keinen Namen angibst bekommst Du immer den der EXE und nie den der DLL!</p>
<p>Deshalb immer hInstance aus WinMain und DllMain speichern!</p>
]]></description><link>https://www.c-plusplus.net/forum/post/1285543</link><guid isPermaLink="true">https://www.c-plusplus.net/forum/post/1285543</guid><dc:creator><![CDATA[Martin Richter]]></dc:creator><pubDate>Tue, 15 May 2007 16:11:23 GMT</pubDate></item><item><title><![CDATA[Reply to n00b @ ShellExecute on Tue, 15 May 2007 20:20:09 GMT]]></title><description><![CDATA[<p>Danke allerseits, funktioniert jetzt.</p>
<p>Martin Richter schrieb:</p>
<blockquote>
<p>Willst Du wirklich C++/CLI verwenden?<br />
Wenn keine Not da ist solltest Du es vermeiden oder das ganze ganz in der Managed Welt mit C# schreiben, oder purem C++/CLI!</p>
</blockquote>
<p>Nein, wollte ich (wenn ich drüber nachdenke) eigentlich nicht und das scheint auch das eigentliche Problem zu sein. <img
      src="https://www.c-plusplus.net/forum/plugins/nodebb-plugin-emoji/emoji/emoji-one/1f615.png?v=ab1pehoraso"
      class="not-responsive emoji emoji-emoji-one emoji--confused_face"
      title=":confused:"
      alt="😕"
    /><br />
War eigentlich pures Unwissen und zeigt nur wieder das ich noch echt viel lernen muß.</p>
<p>Vielleicht auch ne Idee wie/wo man sich da als Anfänger diesbezüglich reinlesen kann, wenn man nicht dumm sterben will?</p>
]]></description><link>https://www.c-plusplus.net/forum/post/1285777</link><guid isPermaLink="true">https://www.c-plusplus.net/forum/post/1285777</guid><dc:creator><![CDATA[superfrog]]></dc:creator><pubDate>Tue, 15 May 2007 20:20:09 GMT</pubDate></item><item><title><![CDATA[Reply to n00b @ ShellExecute on Tue, 15 May 2007 21:54:46 GMT]]></title><description><![CDATA[<p>Martin Richter schrieb:</p>
<blockquote>
<p>Solange Du bei GetModuleHandle keinen Namen angibst bekommst Du immer den der EXE und nie den der DLL!</p>
<p>Deshalb immer hInstance aus WinMain und DllMain speichern!</p>
</blockquote>
<p>Ich meinte ja auch GetModuleFileName und nicht GetModuleHandle. Bei GetModuleHandle ist die Doku klar (&quot;the file used to create the calling process&quot;), bei GetModuleFileName aber eben nicht.</p>
]]></description><link>https://www.c-plusplus.net/forum/post/1285815</link><guid isPermaLink="true">https://www.c-plusplus.net/forum/post/1285815</guid><dc:creator><![CDATA[hustbaer]]></dc:creator><pubDate>Tue, 15 May 2007 21:54:46 GMT</pubDate></item><item><title><![CDATA[Reply to n00b @ ShellExecute on Tue, 15 May 2007 22:30:23 GMT]]></title><description><![CDATA[<p>Martin Richter schrieb:</p>
<blockquote>
<p>Solange Du bei GetModuleHandle keinen Namen angibst bekommst Du immer den der EXE und nie den der DLL!</p>
<p>Deshalb immer hInstance aus WinMain und DllMain speichern!</p>
</blockquote>
<p>oder <a href="http://winapi.net/index.php?inhalt=s12" rel="nofollow">http://winapi.net/index.php?inhalt=s12</a></p>
]]></description><link>https://www.c-plusplus.net/forum/post/1285821</link><guid isPermaLink="true">https://www.c-plusplus.net/forum/post/1285821</guid><dc:creator><![CDATA[hack]]></dc:creator><pubDate>Tue, 15 May 2007 22:30:23 GMT</pubDate></item></channel></rss>