<?xml version="1.0"?>
<rss version="2.0">
	<channel>
		<title>shell to executable</title>
		<link>http://www.allegro.cc/forums/view/586546</link>
		<description>Allegro.cc Forum Thread</description>
		<webMaster>matthew@allegro.cc (Matthew Leverton)</webMaster>
		<lastBuildDate>Fri, 21 Jul 2006 09:37:41 +0000</lastBuildDate>
	</channel>
	<item>
		<description><![CDATA[<div class="mockup v2"><p>[center]I need my program to open a executable in the same directory.[/center]<br />How can i do this. I am running windows xp and<br />using mingw32 and allegro. Some source code would be<br />nice. </p><p>Thank you in advance...
</p></div>]]>
		</description>
		<author>no-reply@allegro.cc (BamBam)</author>
		<pubDate>Wed, 19 Jul 2006 12:51:39 +0000</pubDate>
	</item>
	<item>
		<description><![CDATA[<div class="mockup v2"><p>One way is to change to that directory and the execute the executable. There&#39;s probably a nicer way but this should work (I think) :-</p><div class="source-code snippet"><div class="inner"><pre><span class="k1">char</span> buf<span class="k2">[</span><span class="n">200</span><span class="k2">]</span><span class="k2">;</span>

<a href="http://www.allegro.cc/manual/get_executable_name" target="_blank"><span class="a">get_executable_name</span></a><span class="k2">(</span>buf, <span class="k1">sizeof</span><span class="k2">(</span>buf<span class="k2">)</span><span class="k2">)</span><span class="k2">;</span>   <span class="c">// get the app full path</span>
<a href="http://www.allegro.cc/manual/replace_filename" target="_blank"><span class="a">replace_filename</span></a><span class="k2">(</span>buf, buf, <span class="s">""</span>, <span class="k1">sizeof</span><span class="k2">(</span>buf<span class="k2">)</span><span class="k2">)</span><span class="k2">;</span> <span class="c">// strip everything but the path</span>
<a href="http://www.delorie.com/djgpp/doc/libc/libc_92.html" target="_blank">chdir</a><span class="k2">(</span>buf<span class="k2">)</span><span class="k2">;</span>
<a href="http://www.delorie.com/djgpp/doc/libc/libc_802.html" target="_blank">system</a><span class="k2">(</span><span class="s">"my.exe"</span><span class="k2">)</span><span class="k2">;</span> <span class="c">// or shell_exec("my.exe");</span>
</pre></div></div><p>

edit:<br />or just
</p><div class="source-code snippet"><div class="inner"><pre><a href="http://www.allegro.cc/manual/replace_filename" target="_blank"><span class="a">replace_filename</span></a><span class="k2">(</span>buf, buf, <span class="s">"my.exe"</span>, <span class="k1">sizeof</span><span class="k2">(</span>buf<span class="k2">)</span><span class="k2">)</span><span class="k2">;</span>
<a href="http://www.delorie.com/djgpp/doc/libc/libc_802.html" target="_blank">system</a><span class="k2">(</span>buf<span class="k2">)</span><span class="k2">;</span>
</pre></div></div><p>
but you probably want the chdir to read other relative filenames
</p></div>]]>
		</description>
		<author>no-reply@allegro.cc (kikabo)</author>
		<pubDate>Wed, 19 Jul 2006 16:39:36 +0000</pubDate>
	</item>
	<item>
		<description><![CDATA[<div class="mockup v2"><p><a href="http://www.codeproject.com/threads/consolepipe.asp">This is at least the fourth time</a> I&#39;ve posted this, I wonder what everyones working on....  <img src="http://www.allegro.cc/forums/smileys/tongue.gif" alt=":P" />
</p></div>]]>
		</description>
		<author>no-reply@allegro.cc (nonnus29)</author>
		<pubDate>Wed, 19 Jul 2006 17:04:17 +0000</pubDate>
	</item>
	<item>
		<description><![CDATA[<div class="mockup v2"><p>Or #include &lt;windows.h&gt; and do this:
</p><div class="source-code snippet"><div class="inner"><pre>ShellExecute<span class="k2">(</span>NULL, <span class="s">"open"</span>, <span class="s">"c:/path_to_exe/program.exe"</span>, NULL, <span class="s">"c:/path_to_execute_from/"</span>, SW_SHOWNORMAL<span class="k2">)</span><span class="k2">;</span>
</pre></div></div><p>

You should use get_executable_name for the full path (3rd argument), and a combination of get_executable_name and replace_filename for the path to execute from (5th argument) to work as I expect you want it to. See kikabo&#39;s post for that.</p><p>You could also use WinExec(&quot;path&quot;, SW_SHOWNORMAL) if you do not need it to be executed from the path. I still recommend ShellExecute, though.
</p></div>]]>
		</description>
		<author>no-reply@allegro.cc (Elverion)</author>
		<pubDate>Wed, 19 Jul 2006 18:57:32 +0000</pubDate>
	</item>
	<item>
		<description><![CDATA[<div class="mockup v2"><div class="source-code snippet"><div class="inner"><pre><span class="p">#include &lt;stdlib.h&gt;</span>

<span class="k1">int</span> main<span class="k2">(</span><span class="k1">int</span> argc, <span class="k1">char</span><span class="k3">*</span><span class="k3">*</span> argv<span class="k2">)</span>
<span class="k2">{</span>
 <span class="k1">if</span> <span class="k2">(</span>argc <span class="k3">!</span><span class="k3">=</span> <span class="n">2</span><span class="k2">)</span>
    <span class="k1">return</span> EXIT_FAILURE<span class="k2">;</span>

  <a href="http://www.delorie.com/djgpp/doc/libc/libc_802.html" target="_blank">system</a><span class="k2">(</span>argv<span class="k2">[</span><span class="n">1</span><span class="k2">]</span><span class="k2">)</span> <span class="k2">;</span> <span class="c">//file name to execute (relative to the "working"directory aka this directory...</span>
 <span class="c">// see also exec() etc. </span>
<span class="k2">}</span>
</pre></div></div><p>
</p></div>]]>
		</description>
		<author>no-reply@allegro.cc (Goalie Ca)</author>
		<pubDate>Thu, 20 Jul 2006 10:26:49 +0000</pubDate>
	</item>
	<item>
		<description><![CDATA[<div class="mockup v2"><p>Many thanks to you all for your help.<br />Problem solved...
</p></div>]]>
		</description>
		<author>no-reply@allegro.cc (BamBam)</author>
		<pubDate>Fri, 21 Jul 2006 09:37:41 +0000</pubDate>
	</item>
</rss>
