Polaris ha scritto:
La questione funzionando da sempre negli SO precedenti a Win 11 doveva funzionare anche in win 11 e infatti così è stato.
[...]
Ho fatto una prova del codice che hai postato giusto per assicurarmi quali sono le cose che non ho compreso dello scenario presentato (visto che hai detto che funziona, e quindi evidentemente non ho compreso a fondo cosa intendevi).
Ho creato un prototipo di applicazione "host" e una "guest", visualizzando nella prima una finestra della seconda, con un risultato simile al seguente:
Al netto dell'aspetto "grezzo" e ad alcune feature probabilmente indesiderate (tipo il fatto di poter spostare la finestra), effettivamente si ottiene la visualizzazione della finestra all'interno del pannello.
Occorre però tenere presente che, come anticipato, il processo esterno non è propriamente "del tutto esterno" (questo per spiegare a cosa mi stavo riferendo nei messaggi precedenti); infatti nel Task Manager appare così:
Il processo secondario è quindi
incorporato come "figlio" del primario e la vita del primo è strettamente correlata al secondo. Non è quindi solo una questione di visualizzazione, ma esiste una condivisione di spazi tra i due, che in questo caso potrebbe anche risultare utile, ma è giusto precisare che
i processi non sono indipendenti, o almeno non come io l'avevo inteso dall'inizio, da cui il resto delle incomprensioni.
Detto questo, esiste tutta una gamma di effetti collaterali legati alla vita dell'applicazione Delphi in sé, il passaggio di messaggi tra componenti e controlli (che è un aspetto particolare di Delphi) e altri meccanismi che cessano di funzionare in questo contesto.
Voglio dire, gli esempi che sono stati presi a campione - vedi
Wordpad o il controllo
PDF Reader -
sono ben altra cosa rispetto a questo tipo di implementazione, e io a queste facevo riferimento.
Per riassumerla in due parole, al di là del "reparenting" della finestra dell'applicazione esterna all'interno di un altra finestra presente nel sistema, con tutta la serie di effetti collaterali che ne conseguono, non c'è un'altra forma reale di integrazione tra le due parti e la cosa non funziona globalmente se non per un'applicazione appositamente progettata per essere utilizzata in questo modo, con tutta una serie (indefinita) di limitazioni e restrizioni, o di accorgimenti da prendere affinché il gioco funzioni, con la possibilità che un domani poi cessi di farlo (non concordo sull'affermazione "ciò che funziona in W10 funziona anche in W11 e successive, intesa in termini globali, tant'è che - ad esempio - sul supporto MDI e su altre API molte cose sono cambiate da versione a versione). Io lo chiamo "accrocchio", e in ogni caso a un mio cliente non lo proporrei.
Però se questo era il risultato che si voleva raggiungere comunque, buono a sapersi perché onestamente non pensavo si potesse nemmeno realizzare (per i motivi indicati sopra), mentre evidentemente Windows "chiude un occhio" e lo tollera.
Grazie quindi per l'approfondimento e il chiarimento doveroso: ho scoperto una cosa in più.