<?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[Programm auf neuem Desktop starten]]></title><description><![CDATA[<p>Hallo,<br />
ich verzweifel irgendwie daran auf meinem neu erstelltem Desktop ein Programm zu starten...<br />
Ich hab schon einige Posts hier und im I-Net gelesen aber leider nichts gefunden was mir hilft.<br />
Also unten seht ihr meinen Code und wenn die Funktion ThreadFunc aufgerufen wird soll eigentlich das Programm auf dem neuem Desktop starten.<br />
Dies klappt aber leider nicht. Da ich mich noch nicht soo gut auskenn weiß ich einfach nicht weiter. Ich muß irgendwo dem CreateProcess mitteilen, dass der den Process auf dem neuen Desktop anzeigen soll aber wie?<br />
Also wäre Top wenn mir jemand helfen könnte.</p>
<p>LG<br />
Sponky</p>
<pre><code class="language-cpp">//---------------------------------------------------------------------------

#include &lt;vcl.h&gt;
#pragma hdrstop

 DWORD dwThreadID;
 HANDLE hThread;
 HANDLE thread;

DWORD WINAPI ThreadFunc(LPVOID Data) 
{
 STARTUPINFO si;
 PROCESS_INFORMATION pi;
 ZeroMemory( &amp;si, sizeof(si) );
 si.cb = sizeof(si);
 ZeroMemory( &amp;pi, sizeof(pi) );
 CreateProcess(NULL, &quot;C:\\test.exe&quot;,  NULL, NULL, FALSE, dwThreadID, NULL, NULL, &amp;si, &amp;pi );
 return((DWORD)Data);
}

void main ()
{
  // Save original desktop
  HWND hOriginalThread = GetThreadDesktop(GetCurrentThreadId());
  HWND hOriginalInput = OpenInputDesktop(0, FALSE, DESKTOP_SWITCHDESKTOP);

  // Create a new Desktop and switch to it
  HWND hNewDesktop = CreateDesktop(&quot;NewDesktopName&quot;, NULL, NULL, 0, GENERIC_ALL, NULL);
  SetThreadDesktop(hNewDesktop);
  SwitchDesktop(hNewDesktop);

  // Execute thread/process in the new desktop
  Sleep(1000);
  thread = CreateThread( NULL, 0, ThreadFunc, NULL, 0, &amp;dwThreadID);

  Sleep(2500);
  // Restore original desktop
  SwitchDesktop(hOriginalInput);
  SetThreadDesktop(hOriginalThread);

  // Close the Desktop
  CloseDesktop(hNewDesktop);
}
</code></pre>
]]></description><link>https://www.c-plusplus.net/forum/topic/232083/programm-auf-neuem-desktop-starten</link><generator>RSS for Node</generator><lastBuildDate>Thu, 09 Apr 2026 13:14:49 GMT</lastBuildDate><atom:link href="https://www.c-plusplus.net/forum/topic/232083.rss" rel="self" type="application/rss+xml"/><pubDate>Mon, 19 Jan 2009 13:52:26 GMT</pubDate><ttl>60</ttl><item><title><![CDATA[Reply to Programm auf neuem Desktop starten on Mon, 19 Jan 2009 13:53:04 GMT]]></title><description><![CDATA[<p>Hallo,<br />
ich verzweifel irgendwie daran auf meinem neu erstelltem Desktop ein Programm zu starten...<br />
Ich hab schon einige Posts hier und im I-Net gelesen aber leider nichts gefunden was mir hilft.<br />
Also unten seht ihr meinen Code und wenn die Funktion ThreadFunc aufgerufen wird soll eigentlich das Programm auf dem neuem Desktop starten.<br />
Dies klappt aber leider nicht. Da ich mich noch nicht soo gut auskenn weiß ich einfach nicht weiter. Ich muß irgendwo dem CreateProcess mitteilen, dass der den Process auf dem neuen Desktop anzeigen soll aber wie?<br />
Also wäre Top wenn mir jemand helfen könnte.</p>
<p>LG<br />
Sponky</p>
<pre><code class="language-cpp">//---------------------------------------------------------------------------

#include &lt;vcl.h&gt;
#pragma hdrstop

 DWORD dwThreadID;
 HANDLE hThread;
 HANDLE thread;

DWORD WINAPI ThreadFunc(LPVOID Data) 
{
 STARTUPINFO si;
 PROCESS_INFORMATION pi;
 ZeroMemory( &amp;si, sizeof(si) );
 si.cb = sizeof(si);
 ZeroMemory( &amp;pi, sizeof(pi) );
 CreateProcess(NULL, &quot;C:\\test.exe&quot;,  NULL, NULL, FALSE, dwThreadID, NULL, NULL, &amp;si, &amp;pi );
 return((DWORD)Data);
}

void main ()
{
  // Save original desktop
  HWND hOriginalThread = GetThreadDesktop(GetCurrentThreadId());
  HWND hOriginalInput = OpenInputDesktop(0, FALSE, DESKTOP_SWITCHDESKTOP);

  // Create a new Desktop and switch to it
  HWND hNewDesktop = CreateDesktop(&quot;NewDesktopName&quot;, NULL, NULL, 0, GENERIC_ALL, NULL);
  SetThreadDesktop(hNewDesktop);
  SwitchDesktop(hNewDesktop);

  // Execute thread/process in the new desktop
  Sleep(1000);
  thread = CreateThread( NULL, 0, ThreadFunc, NULL, 0, &amp;dwThreadID);

  Sleep(2500);
  // Restore original desktop
  SwitchDesktop(hOriginalInput);
  SetThreadDesktop(hOriginalThread);

  // Close the Desktop
  CloseDesktop(hNewDesktop);
}
</code></pre>
]]></description><link>https://www.c-plusplus.net/forum/post/1648220</link><guid isPermaLink="true">https://www.c-plusplus.net/forum/post/1648220</guid><dc:creator><![CDATA[Sponky]]></dc:creator><pubDate>Mon, 19 Jan 2009 13:53:04 GMT</pubDate></item><item><title><![CDATA[Reply to Programm auf neuem Desktop starten on Mon, 19 Jan 2009 15:16:23 GMT]]></title><description><![CDATA[<p>So jetzt hab ichs aber:</p>
<pre><code class="language-cpp">#include &lt;vcl.h&gt;
#pragma hdrstop

HANDLE OpenProc( TCHAR *CmdLine,TCHAR *Desktop)
{
    DWORD	dwExitCode;
	STARTUPINFO si;
	PROCESS_INFORMATION pi;
	BOOL ProcCreated;
	ZeroMemory(&amp;si,sizeof(si));
	si.cb			= sizeof(si);
	si.dwFlags		= STARTF_USESHOWWINDOW;
	si.wShowWindow	= SW_SHOWMAXIMIZED;
	ZeroMemory(&amp;pi,sizeof(pi));

	si.lpDesktop	=	Desktop;
	ProcCreated =CreateProcess( NULL,CmdLine,NULL,NULL,FALSE,0,NULL,NULL,&amp;si,&amp;pi );
	GetExitCodeProcess(pi.hProcess,&amp;dwExitCode);
	return pi.hProcess;
}
//---------------------------------------------------------------------------
void main ()
{
  // Save original desktop
  HWND hOriginalThread = GetThreadDesktop(GetCurrentThreadId());
  HWND hOriginalInput = OpenInputDesktop(0, FALSE, DESKTOP_SWITCHDESKTOP);

  // Create a new Desktop and switch to it
  HWND hNewDesktop = CreateDesktop(&quot;NewDesktopName&quot;, NULL, NULL, 0, GENERIC_ALL, NULL);
  SetThreadDesktop(hNewDesktop);
  SwitchDesktop(hNewDesktop);

  // Execute thread/process in the new desktop
  OpenProc(&quot;D:\\Program Files\\Mozilla Firefox\\firefox.exe&quot;,&quot;NewDesktopName&quot;);
  Sleep(10000);

  // Restore original desktop
  SwitchDesktop(hOriginalInput);
  SetThreadDesktop(hOriginalThread);
  // Close the Desktop
  CloseDesktop(hNewDesktop);
}
</code></pre>
<p>Danke trotzdem.<br />
LG<br />
Sponky</p>
]]></description><link>https://www.c-plusplus.net/forum/post/1648254</link><guid isPermaLink="true">https://www.c-plusplus.net/forum/post/1648254</guid><dc:creator><![CDATA[Sponky]]></dc:creator><pubDate>Mon, 19 Jan 2009 15:16:23 GMT</pubDate></item></channel></rss>