Domanda

In un evento DDE il mio programma carica un file e dovrebbe apparire in primo piano. Stavo usando

show;

Sembra funzionare solo come allora quando ho nascosto la finestra.

Quindi ho aggiunto

bringtofront;

Anche in questo caso ha funzionato se era nascosto, chiuso, ridotto a icona o nella barra delle icone ma non se era aperto appena sotto un'altra finestra.

Ho anche provato alcune cose confuse come

windowstate:=wsminimized;
windowstate:=wsnormal;

per provare a forzarlo per mostrare, ma invano. So che il codice è in esecuzione poiché ho stampe su entrambi i lati di questo blocco e non ci sono dichiarazioni condizionali in cui potrebbe essere bloccato.

È stato utile?

Soluzione

Hai provato SetForegroundWindow e / o SetActiveWindow? Vedi anche informazioni MSDN su questo argomento.

Altri suggerimenti

SetForegroundWindow non funzionerà sempre. In effetti, al giorno d'oggi è abbastanza improbabile che funzioni, poiché le applicazioni non dovrebbero attirare l'attenzione, possono solo darlo via. La SM ha cercato per anni di impedire alle applicazioni di rubare il focus dell'input. Leggi i commenti su questo voce di blog di Raymond Chen per un po 'di storia.

Quindi, se sei tu l'app in primo piano, puoi impostare SetForegroundWindow su un'altra app e tutto sarà perfetto. Se non sei l'app in primo piano, è probabile che accada solo un pulsante della barra delle applicazioni che inizierà a lampeggiare.

Solo per aggiungere un po 'di confusione, il comportamento preciso dipende dalla versione di Windows, quindi ciò che accade dipende da quale razza di Windows stai eseguendo - hanno fatto casino con questo per molto tempo: -).

Autorizzato sotto: CC-BY-SA insieme a attribuzione
Non affiliato a StackOverflow
scroll top