<?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[Fenster anderer SW zur Anzeige bringen]]></title><description><![CDATA[<p>Hallo zusammen</p>
<p>Ich möchte in meiner Software eine andere Software zur Anzeige bringen. Dabei soll einfach bei Buttonevent die Software maximiert in die Anzeige gebracht werden (falls sie noch nicht läuft, wird diese gestaret). Allgemein klappt das auch schon bei mir.</p>
<p>Aber es gibt da ein Problem. Die Fremd-SW kann modale Fenster für Hinweise anzeigen. Wenn nun diese SW minimiert ist und ein modales Fenster anzeigt (auch minimiert), kann ich diese SW nicht richtig zur Anzeige bringen. Sobald ich über ShowWindow oder SetWindowPos das Fenster anzeigen will, erscheint nur das modale Fenster.</p>
<p>Gibt es in der WinAPI entsprechende Funktionen mit denen ich mein Problem lösen kann? Wenn ich die andere SW anzeigen lasse, soll diese maximiert dargestellt werden und den Focus bekommen. Falls diese ein modales Fenster beinhaltet, soll diese auch angezeigt werden und der Focus liegt dort.</p>
<p>Hier mal mein aktueller Code, damit ihr vielleicht direkt sehen könnt, ob ich da was falsch mache:</p>
<pre><code class="language-cpp">AnsiString DestSWName = &quot;.\\TestAppl.exe&quot;;
    AnsiString DestSWTitle = &quot;TestAppl&quot;;
    AnsiString Anzeigekommentar;
    AnsiString Startkommentar;
    HWND DestSWHandle = NULL;
    UINT error;
    bool IsErrorDetected;
    const UINT ErrorDetectionLevel = 31;

    DestSWHandle = FindWindow(NULL, DestSWTitle.c_str());
    if(NULL == DestSWHandle)
    {
        error = WinExec(DestSWName.c_str(), SW_SHOWMAXIMIZED);
        Startkommentar = &quot;Rückmeldung NBCInspector: &quot;;
        if(ErrorDetectionLevel &lt;= error)
            Startkommentar += &quot;Fehler aufgetreten. Fehlernummer: &quot; + AnsiString(error);
        else
            Startkommentar += &quot;Software gestartet.&quot;;
        MemoInfo-&gt;Lines-&gt;Add(Startkommentar + &quot;\n&quot;);
        DestSWHandle = FindWindow(NULL, DestSWTitle.c_str());
    }
    else
    {
        IsErrorDetected = ShowWindow(DestSWHandle, SW_SHOWMAXIMIZED);
        /*SetWindowPos(DestSWHandle,
                                        HWND_TOPMOST,
                                        0, 0, 0, 0,  //diese werden durch SWP_NOSIZE ingnoriert
                                        SWP_NOSIZE);
        IsErrorDetected = SetWindowPos(DestSWHandle,
                                        HWND_TOP,
                                        0, 0, 0, 0,  //diese werden durch SWP_NOSIZE ingnoriert
                                        SWP_NOSIZE);*/
        Anzeigekommentar = &quot;Fehler bei SetWindowPos: &quot;;
        if(IsErrorDetected)
            Anzeigekommentar += &quot;true&quot;;
        else
            Anzeigekommentar += &quot;false&quot;;
        Anzeigekommentar += &quot;\n&quot;;
        MemoInfo-&gt;Lines-&gt;Add(Anzeigekommentar);
    }
</code></pre>
<p>Die auskommentierten Bereich habe ich mal getestet. Leider ohne entsprechenden Erfolg.</p>
]]></description><link>https://www.c-plusplus.net/forum/topic/210291/fenster-anderer-sw-zur-anzeige-bringen</link><generator>RSS for Node</generator><lastBuildDate>Sun, 19 Apr 2026 12:24:14 GMT</lastBuildDate><atom:link href="https://www.c-plusplus.net/forum/topic/210291.rss" rel="self" type="application/rss+xml"/><pubDate>Wed, 09 Apr 2008 14:30:11 GMT</pubDate><ttl>60</ttl><item><title><![CDATA[Reply to Fenster anderer SW zur Anzeige bringen on Wed, 09 Apr 2008 14:30:11 GMT]]></title><description><![CDATA[<p>Hallo zusammen</p>
<p>Ich möchte in meiner Software eine andere Software zur Anzeige bringen. Dabei soll einfach bei Buttonevent die Software maximiert in die Anzeige gebracht werden (falls sie noch nicht läuft, wird diese gestaret). Allgemein klappt das auch schon bei mir.</p>
<p>Aber es gibt da ein Problem. Die Fremd-SW kann modale Fenster für Hinweise anzeigen. Wenn nun diese SW minimiert ist und ein modales Fenster anzeigt (auch minimiert), kann ich diese SW nicht richtig zur Anzeige bringen. Sobald ich über ShowWindow oder SetWindowPos das Fenster anzeigen will, erscheint nur das modale Fenster.</p>
<p>Gibt es in der WinAPI entsprechende Funktionen mit denen ich mein Problem lösen kann? Wenn ich die andere SW anzeigen lasse, soll diese maximiert dargestellt werden und den Focus bekommen. Falls diese ein modales Fenster beinhaltet, soll diese auch angezeigt werden und der Focus liegt dort.</p>
<p>Hier mal mein aktueller Code, damit ihr vielleicht direkt sehen könnt, ob ich da was falsch mache:</p>
<pre><code class="language-cpp">AnsiString DestSWName = &quot;.\\TestAppl.exe&quot;;
    AnsiString DestSWTitle = &quot;TestAppl&quot;;
    AnsiString Anzeigekommentar;
    AnsiString Startkommentar;
    HWND DestSWHandle = NULL;
    UINT error;
    bool IsErrorDetected;
    const UINT ErrorDetectionLevel = 31;

    DestSWHandle = FindWindow(NULL, DestSWTitle.c_str());
    if(NULL == DestSWHandle)
    {
        error = WinExec(DestSWName.c_str(), SW_SHOWMAXIMIZED);
        Startkommentar = &quot;Rückmeldung NBCInspector: &quot;;
        if(ErrorDetectionLevel &lt;= error)
            Startkommentar += &quot;Fehler aufgetreten. Fehlernummer: &quot; + AnsiString(error);
        else
            Startkommentar += &quot;Software gestartet.&quot;;
        MemoInfo-&gt;Lines-&gt;Add(Startkommentar + &quot;\n&quot;);
        DestSWHandle = FindWindow(NULL, DestSWTitle.c_str());
    }
    else
    {
        IsErrorDetected = ShowWindow(DestSWHandle, SW_SHOWMAXIMIZED);
        /*SetWindowPos(DestSWHandle,
                                        HWND_TOPMOST,
                                        0, 0, 0, 0,  //diese werden durch SWP_NOSIZE ingnoriert
                                        SWP_NOSIZE);
        IsErrorDetected = SetWindowPos(DestSWHandle,
                                        HWND_TOP,
                                        0, 0, 0, 0,  //diese werden durch SWP_NOSIZE ingnoriert
                                        SWP_NOSIZE);*/
        Anzeigekommentar = &quot;Fehler bei SetWindowPos: &quot;;
        if(IsErrorDetected)
            Anzeigekommentar += &quot;true&quot;;
        else
            Anzeigekommentar += &quot;false&quot;;
        Anzeigekommentar += &quot;\n&quot;;
        MemoInfo-&gt;Lines-&gt;Add(Anzeigekommentar);
    }
</code></pre>
<p>Die auskommentierten Bereich habe ich mal getestet. Leider ohne entsprechenden Erfolg.</p>
]]></description><link>https://www.c-plusplus.net/forum/post/1489169</link><guid isPermaLink="true">https://www.c-plusplus.net/forum/post/1489169</guid><dc:creator><![CDATA[DarkGuardian]]></dc:creator><pubDate>Wed, 09 Apr 2008 14:30:11 GMT</pubDate></item><item><title><![CDATA[Reply to Fenster anderer SW zur Anzeige bringen on Thu, 10 Apr 2008 08:51:33 GMT]]></title><description><![CDATA[<p>Schon mal SW_RESTORE probiert?<br />
Was ist mit WM_SYSCOMMAND SC_RESTORE?</p>
<p>BTW: WinExec ist obsolete, verwende ShellExecute!</p>
]]></description><link>https://www.c-plusplus.net/forum/post/1489528</link><guid isPermaLink="true">https://www.c-plusplus.net/forum/post/1489528</guid><dc:creator><![CDATA[Martin Richter]]></dc:creator><pubDate>Thu, 10 Apr 2008 08:51:33 GMT</pubDate></item><item><title><![CDATA[Reply to Fenster anderer SW zur Anzeige bringen on Thu, 10 Apr 2008 12:02:28 GMT]]></title><description><![CDATA[<p>Sowohl mit SW_RESTORE als auch über die Nachrichtenschleife mit WM_SYSCOMMAND und SC_RESTORE hat es den gleichen Effekt. Leider bleibt das modale Fenster hinter dem Hauptfenster, so dass der Bediener blockiert ist.</p>
<p>Muss ich evtl. das modale Fenster manuell in den Vordergrund bringen? Dann müsste ich allgemein alle Children abrufen und nach vorne bringen, falls es mehrere gibt. Aber ansich sollte es doch auch möglich sein, einfach die Applikation mit allen zugeordneten Fenster wieder herzustellen, oder?</p>
<p>Danke für den Hinweis bzgl. WinExec. Das habe ich direkt umgebaut.</p>
]]></description><link>https://www.c-plusplus.net/forum/post/1489674</link><guid isPermaLink="true">https://www.c-plusplus.net/forum/post/1489674</guid><dc:creator><![CDATA[DarkGuardian]]></dc:creator><pubDate>Thu, 10 Apr 2008 12:02:28 GMT</pubDate></item></channel></rss>