<?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[eine *.cmd öfnen?]]></title><description><![CDATA[<p>Also, ich hab hier nen kleines Prog geschrieben und das soll den rechner automatisch nach ner eingegebenen Zeit runterfahren:</p>
<pre><code>void CShutdownDlg::OnShutdown() 
{
	UpdateData(TRUE);
	FILE *dateistream;
	char datei[30]=&quot;shutdown -s -t&quot;;
	sprintf(datei,&quot;%s %d&quot;,datei, m_intsec);
	dateistream = fopen(&quot;C:\\Programme\\down.cmd&quot;, &quot;w+&quot;);
	fwrite(datei, sizeof(char), 25, dateistream);
	fclose(dateistream);
	system(&quot;C:\\Programme\\down.cmd&quot;);
}
</code></pre>
<p>Wenn ich das Programm in der entwicklungsumgebung mit F5 ausführe funktioniert es auch, aber die exe allein ausgeführt geht nicht, dann kommt nur die Konsole, die den shutdown-Befehl im aktuellen Verzeichnis auszuführen versucht, was natürlich fehlschlägt. Zur meiner Überraschung startet es sich dabei jedoch selbst erneut, also ein 2. mal.<br />
Warum?<br />
Ich hab das auch schon mit ShellExecute und Winexec ausprobiert..immer das selbe ergebnis.<br />
Und ja ich weiß, dass man auch gleich an cmd senden kann, ich möchte aber dem Umweg über diese Datei gehen.<br />
hat jemand ne ahnung?<br />
THX <img
      src="https://www.c-plusplus.net/forum/plugins/nodebb-plugin-emoji/emoji/emoji-one/1f603.png?v=ab1pehoraso"
      class="not-responsive emoji emoji-emoji-one emoji--grinning_face_with_big_eyes"
      title=":D"
      alt="😃"
    /></p>
]]></description><link>https://www.c-plusplus.net/forum/topic/141615/eine-cmd-öfnen</link><generator>RSS for Node</generator><lastBuildDate>Tue, 14 Jul 2026 19:35:18 GMT</lastBuildDate><atom:link href="https://www.c-plusplus.net/forum/topic/141615.rss" rel="self" type="application/rss+xml"/><pubDate>Thu, 23 Mar 2006 16:16:37 GMT</pubDate><ttl>60</ttl><item><title><![CDATA[Reply to eine *.cmd öfnen? on Thu, 23 Mar 2006 16:16:37 GMT]]></title><description><![CDATA[<p>Also, ich hab hier nen kleines Prog geschrieben und das soll den rechner automatisch nach ner eingegebenen Zeit runterfahren:</p>
<pre><code>void CShutdownDlg::OnShutdown() 
{
	UpdateData(TRUE);
	FILE *dateistream;
	char datei[30]=&quot;shutdown -s -t&quot;;
	sprintf(datei,&quot;%s %d&quot;,datei, m_intsec);
	dateistream = fopen(&quot;C:\\Programme\\down.cmd&quot;, &quot;w+&quot;);
	fwrite(datei, sizeof(char), 25, dateistream);
	fclose(dateistream);
	system(&quot;C:\\Programme\\down.cmd&quot;);
}
</code></pre>
<p>Wenn ich das Programm in der entwicklungsumgebung mit F5 ausführe funktioniert es auch, aber die exe allein ausgeführt geht nicht, dann kommt nur die Konsole, die den shutdown-Befehl im aktuellen Verzeichnis auszuführen versucht, was natürlich fehlschlägt. Zur meiner Überraschung startet es sich dabei jedoch selbst erneut, also ein 2. mal.<br />
Warum?<br />
Ich hab das auch schon mit ShellExecute und Winexec ausprobiert..immer das selbe ergebnis.<br />
Und ja ich weiß, dass man auch gleich an cmd senden kann, ich möchte aber dem Umweg über diese Datei gehen.<br />
hat jemand ne ahnung?<br />
THX <img
      src="https://www.c-plusplus.net/forum/plugins/nodebb-plugin-emoji/emoji/emoji-one/1f603.png?v=ab1pehoraso"
      class="not-responsive emoji emoji-emoji-one emoji--grinning_face_with_big_eyes"
      title=":D"
      alt="😃"
    /></p>
]]></description><link>https://www.c-plusplus.net/forum/post/1022469</link><guid isPermaLink="true">https://www.c-plusplus.net/forum/post/1022469</guid><dc:creator><![CDATA[HILFE!! ^^]]></dc:creator><pubDate>Thu, 23 Mar 2006 16:16:37 GMT</pubDate></item><item><title><![CDATA[Reply to eine *.cmd öfnen? on Thu, 23 Mar 2006 16:31:31 GMT]]></title><description><![CDATA[<p><a href="http://www.c-plusplus.net/forum/viewtopic-var-t-is-39051.html" rel="nofollow">http://www.c-plusplus.net/forum/viewtopic-var-t-is-39051.html</a></p>
]]></description><link>https://www.c-plusplus.net/forum/post/1022482</link><guid isPermaLink="true">https://www.c-plusplus.net/forum/post/1022482</guid><dc:creator><![CDATA[guenni81]]></dc:creator><pubDate>Thu, 23 Mar 2006 16:31:31 GMT</pubDate></item><item><title><![CDATA[Reply to eine *.cmd öfnen? on Thu, 23 Mar 2006 21:07:50 GMT]]></title><description><![CDATA[<p>Hmm, das ist eindeutig nicht, das wonach ich gesucht hab', aber ok, ich hab's selbst gelöst vielen Dank auch ^^<br />
Für die, die es wissen wollen:</p>
<pre><code>void CShutdownDlg::OnShutdown() 
{
	UpdateData(TRUE);
	char datei[30]=&quot;/C shutdown -s -t&quot;;
	sprintf(datei,&quot;%s %d&quot;,datei, m_intsec);
	HWND Handle;
    ShellExecute(0, &quot;open&quot;, &quot;cmd.exe&quot;, datei, &quot;C:\\&quot;, SW_HIDE); 

}
</code></pre>
<p>Mein Button-code... <img
      src="https://www.c-plusplus.net/forum/plugins/nodebb-plugin-emoji/emoji/emoji-one/1f603.png?v=ab1pehoraso"
      class="not-responsive emoji emoji-emoji-one emoji--grinning_face_with_big_eyes"
      title=":D"
      alt="😃"
    /></p>
]]></description><link>https://www.c-plusplus.net/forum/post/1022663</link><guid isPermaLink="true">https://www.c-plusplus.net/forum/post/1022663</guid><dc:creator><![CDATA[klar]]></dc:creator><pubDate>Thu, 23 Mar 2006 21:07:50 GMT</pubDate></item><item><title><![CDATA[Reply to eine *.cmd öfnen? on Thu, 23 Mar 2006 21:47:18 GMT]]></title><description><![CDATA[<p>Nein, war nicht ganz was du gesucht hast, aber der PC wird ebenfalls heruntergefahren.</p>
]]></description><link>https://www.c-plusplus.net/forum/post/1022680</link><guid isPermaLink="true">https://www.c-plusplus.net/forum/post/1022680</guid><dc:creator><![CDATA[guenni81]]></dc:creator><pubDate>Thu, 23 Mar 2006 21:47:18 GMT</pubDate></item><item><title><![CDATA[Reply to eine *.cmd öfnen? on Fri, 24 Mar 2006 06:52:28 GMT]]></title><description><![CDATA[<p>PS: *.cmd Dateien kann man auch mittels CreateProcess starten...</p>
]]></description><link>https://www.c-plusplus.net/forum/post/1022753</link><guid isPermaLink="true">https://www.c-plusplus.net/forum/post/1022753</guid><dc:creator><![CDATA[Jochen Kalmbach]]></dc:creator><pubDate>Fri, 24 Mar 2006 06:52:28 GMT</pubDate></item><item><title><![CDATA[Reply to eine *.cmd öfnen? on Fri, 24 Mar 2006 17:26:00 GMT]]></title><description><![CDATA[<p>Tja... kann mir mal einer erklären warum ihr das immer so &quot;dumm&quot; lösen müsst=! Warum hat die WinAPI mehr als eine Funktion zum Herunterfahren?! Und warum benutzt ihr dann die Console?!</p>
<p>hier mal zwei mögliche Lösungen:</p>
<pre><code class="language-cpp">// 1. Lösung
bool MySystemShutdown(void)
{
    ::HANDLE hToken; 
    ::_TOKEN_PRIVILEGES tkp; 

    if(!::OpenProcessToken(::GetCurrentProcess(), TOKEN_ADJUST_PRIVILEGES | TOKEN_QUERY, &amp;hToken)) 
        return false; 

    ::LookupPrivilegeValue(NULL, SE_SHUTDOWN_NAME, &amp;tkp.Privileges[0].Luid); 

    tkp.PrivilegeCount            = 1;
    tkp.Privileges[0].Attributes  = SE_PRIVILEGE_ENABLED; 

    ::AdjustTokenPrivileges(hToken, FALSE, &amp;tkp, 0, (PTOKEN_PRIVILEGES)NULL, 0); 

    if(::GetLastError() != ERROR_SUCCESS) 
        return false; 

    if(!::ExitWindowsEx(EWX_SHUTDOWN | EWX_FORCE, SHTDN_REASON_MAJOR_OPERATINGSYSTEM | SHTDN_REASON_FLAG_PLANNED)) 
        return false; 

    return true;
}
</code></pre>
<pre><code class="language-cpp">// 2. Lösung
bool SystemShutdown(LPTSTR lpszMessage)
{
    ::HANDLE hToken;
    ::_TOKEN_PRIVILEGES tkp;

    if(!::OpenProcessToken(::GetCurrentProcess(), TOKEN_ADJUST_PRIVILEGES | TOKEN_QUERY, &amp;hToken)) 
        return false; 

    ::LookupPrivilegeValue(NULL, SE_SHUTDOWN_NAME, &amp;tkp.Privileges[0].Luid); 

    tkp.PrivilegeCount		= 1;  
    tkp.Privileges[0].Attributes	= SE_PRIVILEGE_ENABLED; 

    ::AdjustTokenPrivileges(hToken, FALSE, &amp;tkp, 0, (PTOKEN_PRIVILEGES) NULL, 0); 

    if(::GetLastError() != ERROR_SUCCESS) 
        return false; 

    if(!::InitiateSystemShutdown(NULL, lpszMessage, 20, TRUE, FALSE);) 
        return false; 

    tkp.Privileges[0].Attributes = 0; 
    ::AdjustTokenPrivileges(hToken, FALSE, &amp;tkp, 0, (PTOKEN_PRIVILEGES) NULL, 0); 

    return true; 
}
</code></pre>
<p>So... die erste Methode fährt Windows ganz normal herunter... also als ob man selbst den herunterfahren Dlg geöffnet hätte und dort Herunterfahren bestätigthätte...</p>
<p>Das 2. zeigt einen Dlg, der eine Zeit lang dort ist... in diesesn Dlg kannst auch ne Message ausgeben... und nach der Zeit fährt er runter...</p>
<p>Das ist WinAPI <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/1023280</link><guid isPermaLink="true">https://www.c-plusplus.net/forum/post/1023280</guid><dc:creator><![CDATA[*D*Evil]]></dc:creator><pubDate>Fri, 24 Mar 2006 17:26:00 GMT</pubDate></item><item><title><![CDATA[Reply to eine *.cmd öfnen? on Sun, 26 Mar 2006 12:01:07 GMT]]></title><description><![CDATA[<p>Das Grundproblem bestand ja darin, dass ich das über 'ne 'cmd Datei machen wollte (Hat auch nen Grund <img
      src="https://www.c-plusplus.net/forum/plugins/nodebb-plugin-emoji/emoji/emoji-one/1f603.png?v=ab1pehoraso"
      class="not-responsive emoji emoji-emoji-one emoji--grinning_face_with_big_eyes"
      title=":D"
      alt="😃"
    /> )...<br />
Daher die Lösung über die Konsole <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>
]]></description><link>https://www.c-plusplus.net/forum/post/1024095</link><guid isPermaLink="true">https://www.c-plusplus.net/forum/post/1024095</guid><dc:creator><![CDATA[naja]]></dc:creator><pubDate>Sun, 26 Mar 2006 12:01:07 GMT</pubDate></item></channel></rss>