Italian community of Lazarus and Free Pascal

Programmazione => Generale => Topic aperto da: bonmario - Febbraio 09, 2023, 02:35:06 pm

Titolo: [OT] Windows 11 e barra di avvio veloce
Inserito da: bonmario - Febbraio 09, 2023, 02:35:06 pm
Ciao a tutti,
mi hanno appena avvisato che sul PC del lavoro, settimana prossima mi installano Windows11.
Lo uso già, poco, a casa, e la cosa che proprio non mi va, è la mancanza della barra di avvio veloce.
Ho visto che cercando in giro si trovano alcuni programmi che la simulano, ma alcuni di loro sono stati poi dismessi, altri sono su siti di cui non mi fido, ecc..

Arrivo al dunque: qualcuno di voi ha qualcosa da consigliarmi?

Grazie, Mario
Titolo: Re:[OT] Windows 11 e barra di avvio veloce
Inserito da: DragoRosso - Febbraio 09, 2023, 02:40:01 pm
Barra di avvio veloce ? Intendi la classica barra in basso a sinistra ?

C'è ... il tutto è identico a Windows 10 ....

Ciao
Titolo: Re:[OT] Windows 11 e barra di avvio veloce
Inserito da: bonmario - Febbraio 09, 2023, 03:20:27 pm
No, in inglese, credo si chiami "Quich Launch bar".
Non ricordo se esiste da WinXP o da Win7

Una volta attivata, ci trascini dentro i collegamenti che ti interessano, oppure basta copiare i collegamenti in questa directory:

Codice: [Seleziona]
C:\Users\<IlTuoUtente>\AppData\Roaming\Microsoft\Internet Explorer\Quick Launch

Per ogni icona che compare nella barra, basta farci sopra un click, e parte l'applicativo.

Nell'allegato, in alto c'è la barra di avvio veloce, sotto quella di stato

Ciao, Mario
Titolo: Re:[OT] Windows 11 e barra di avvio veloce
Inserito da: DragoRosso - Febbraio 09, 2023, 03:36:58 pm
OK, ora è unificata. Hai l'icona della app da lanciare con un click e se passi sopra con il mouse ti fà vedere (e puoi eventualmente "switchare") le istanze delle app aperte.

Le icone con la barretta "sotto" indicano che c'è almeno una istanza della applicazione aperta.

Nel caso che ti ho postato c'è ThunderBird che è una "icona veloce" senza istanze attive, FireFox che è una icona veloce con istanze attive, esplora risorse icona veloce con istanze attive, notepad (non icona veloce) con istanze attive.

Trascina l'app che vuoi come avvio veloce nella barra delle applicazioni. Sinceramente non è che mi manchi la vecchia barra ...

Ciao
Titolo: Re:[OT] Windows 11 e barra di avvio veloce
Inserito da: bonmario - Febbraio 09, 2023, 03:48:49 pm
Sì, guarda, sicuramente è una cosa soggettiva. Io, per quel poco che lo uso a casa, non mi ci trovo proprio senza !!!

Il mio problema principale è questo: se guardi l'immagine che ho allegato, ho circa 30 applicazioni nella barra di avvio veloce, e tra le 5 e le 10 applicazioni nella barra di stato, perché aperte.
Quelle nella barra di avvio veloce, sono "fisse", e quando le cerco per lanciarle, so se sono all'inizio, in mezzo o in coda.
Essendo 2 barre separate, già a colpo d'occhio vedo quali sono aperte e quali no.
Con Windows 11, già il fatto di avere una quarantina di icone sulla stessa barra mi creerebbe problemi, poi non so se tu raggruppa o no lui quelle aperte da quelle che non lo sono.
Da non sottovalutare poi il fatto che oramai ho raggiunto l'età in cui qualsiasi cambiamento mi rompe le scatole, perché devo cambiare le mie abitudini  ;D ;D ;D

Stavo quasi pensando di farmene una in Lazarus che la simuli, nascondendola nella TrayArea, L'unico problema, sarebbe che invece di fare un click, dovrei farne 2: uno per aprire la mia barra, e l'altro per far partire il programma.

Titolo: Re:[OT] Windows 11 e barra di avvio veloce
Inserito da: DragoRosso - Febbraio 09, 2023, 05:23:58 pm
Da non sottovalutare poi il fatto che oramai ho raggiunto l'età in cui qualsiasi cambiamento mi rompe le scatole, perché devo cambiare le mie abitudini  ;D ;D ;D

Dai, che la pace dei sensi è ancora lontana, se non c'è qualche "movimento" nell'aria che vita è ... 8) 8) 8)
Titolo: Re:[OT] Windows 11 e barra di avvio veloce
Inserito da: giacomarko - Febbraio 09, 2023, 09:27:14 pm
Non è proprio la stessa cosa, servono 2 click,

ma potresti inserire una o più folder specializzati, cioè folder che contengono i link ai tuoi programmi che vuoi avere a portata di mano, sulla barra in basso, con un click apri la cartella e un secondo avii il programma che vuoi

io per lo stesso motivo ho fatto così

m
Titolo: Re:[OT] Windows 11 e barra di avvio veloce
Inserito da: bonmario - Febbraio 10, 2023, 08:07:22 am
Grazie @giacomarko, potrebbe essere un'idea ... l'unica cosa che mi mancherebbe, è quella di poter ordinare le icone a mio piacimento, ma prima preferisco comunque provare la tua idea.
Settimana prossima aggiorno, se poi non capisco come si fa, mi rifaccio vivo qui !!!

P.S. Che tu sappia si può fare anche in Windows 10? Se è così, mi porto avanti e ci provo subito!

Grazie, Mario
Titolo: Re:[OT] Windows 11 e barra di avvio veloce
Inserito da: giacomarko - Febbraio 10, 2023, 09:53:46 am
Ma figurati !!

ma in effetti potresti,

considera che i link alle applicazioni, possono essere rinominati come vuoi, paradossalmente anche 1,2,3,.. che ovviamente sarebbe poco utile ;)

oppure potresti iniziare il come con una codifica convenzionale per specializzazione, tipo:
Graph-Photoshop, Graph-Lightroom,
Dev01-Lazarus, Dev02-Delphi, Dev03-Basic...

o ancora in un ordine a te più congeniale secondo la frequenza d'uso:
01-Lazarus, 02-Illustrator, 03-Assembler, 04-PHPAdmin...
Titolo: Re:[OT] Windows 11 e barra di avvio veloce
Inserito da: giacomarko - Febbraio 10, 2023, 09:56:36 am
In Windows 10 è lo stesso, ma sono più semplici i passaggi, in quanto basta creare la cartella con i link e trascinarla sulla barra,

questa funzionalità in W11 è stata rimossa, per cui puoi raggiungere lo stesso risultato, ma devi brigare un filo in più,

si sà... con Microsoft, tre passi avanti e due indietro ;)

su google trovi tutto, ma se non vuoi sbatterti, te lo spiego in tre righe, è una scemata

ciaoo
Titolo: Re:[OT] Windows 11 e barra di avvio veloce
Inserito da: bonmario - Febbraio 10, 2023, 01:31:17 pm
Ho appena provato su Windows 10, e non mi convince molto ...
Settimana prossima la provo sull'11 e vediamo se riesco a farmela digerire !

Grazie, Mario
Titolo: Re:[OT] Windows 11 e barra di avvio veloce
Inserito da: giacomarko - Febbraio 10, 2023, 04:07:20 pm
Sicuramente non è il massimo, purtroppo

alternativa una taskbar in aggiunta alla standard, tipo Rocket..
ma è un'altro oggetto da mettere sul desktop.

Se trovi di meglio, sono interessato,  magari l'idea di implementare una applicazione "contenitore", da eseguire dalla taskbar che mostri a sua volta le applicazioni inserite, disponibili con un click... un "lanciatore" in pratica...

da valutare
Titolo: Re:[OT] Windows 11 e barra di avvio veloce
Inserito da: bonmario - Febbraio 10, 2023, 06:14:15 pm
Ho il progetto già pronto, lo devo solo duplicare ed adattare.
Nell'immagine allegata, il mio vecchio progetto. Qui è su Linux, ma funziona anche su Windows.

Questo progetto funziona così:
- c'è un file di testo, in cui inserisco il nome dell'eseguibile da associare ad ogni bottone, ed un "Hint"
- quando parte il programma, legge il file di testo, e crea un bottone per ogni eseguibile definito nel file di configurazione
- il form è nascosto, e nella TrayArea c'è quell'icona che si vede con una P nera su sfondo bianco.
- quando si clicca sul'icona nella Tray, esce il form con i vari bottoni
- cliccando sul bottone, parte l'eseguibile e nasconde il form


Il progetto duplicato, è praticamente identico, tranne che:
- i bottoni devono essere più piccoli
- ci deve essere solo l'immagine senza il testo
- la barra deve essere orizzontale e non verticale
- devo valutare se leggere l'elenco delle app facendo l'elenco dei files .lnk che ci sono nella diretory "Quick launch", o tenere il file di configurazione. Se tendo quest'ultimo, avrei il vantaggio di poter ordinare le icone come voglio io

Ciao, Mario
Titolo: Re:[OT] Windows 11 e barra di avvio veloce
Inserito da: giacomarko - Febbraio 10, 2023, 07:14:47 pm
Assolutamente niente male, anzi bellissima idea !!!
oltre che pratica è funzionale,
personalmente opterei per una cartella conenente i link, in caso di aggiunte o cancellazioni, sarebbe sufficiente lavorare sulla cartella, e riavviare il programma per la rilettura

seguo interessato gli sviluppi!

m
Titolo: Re:[OT] Windows 11 e barra di avvio veloce
Inserito da: bonmario - Febbraio 10, 2023, 08:08:22 pm
Grazie !!
L'idea che avevo in mente è questa: al primo avvio, se non c'è ancora il file di configurazione, vado a leggere l'elenco dei collegamenti dalla directory dell'avvio veloce, e con quello scrivo il file di configurazione. Da quella volta in poi, leggerò direttamente il file di configurazione.
In questo modo, potrò poi ordinare a piacimento le icone, semplicemente spostando le righe all'interno di questo file.

Ciao, Mario
Titolo: Re:[OT] Windows 11 e barra di avvio veloce
Inserito da: giacomarko - Febbraio 10, 2023, 11:04:33 pm
Domanda veloce... curiosità ;)

ma le icone sui pulsanti che si vedono nello screeshot che hai postato, le hai caricate da file immagini (png, bmp...)
o le hai prelevate direttamente dall'eseguibile ? sarei curioso di capire come hai fatto.

M
Titolo: Re:[OT] Windows 11 e barra di avvio veloce
Inserito da: bonmario - Febbraio 11, 2023, 07:30:00 am
Nella versione Linux, le carico da immagine (bmp, ico, jpg, ecc).
Nella versione Windows direttamente da eseguibile/link

Il codice che uso è questo:
Codice: [Seleziona]
function  EstraiIcona(const NomeFileExe: String; WrkIcona: TIcon; WrkDimIco:Integer): Boolean;
{$IFDEF MSWINDOWS}
  var SysStr: Widestring;
      FileInfo: SHFILEINFOw;
      HandleImageList:HIMAGELIST;
      IdxImg:Integer;
{$ENDIF}
begin
  Result:=False;

  {$IFDEF MSWINDOWS}
    HandleImageList:=ImageList_Create(WrkDimIco, WrkDimIco, ILC_COLOR32, 0, 1);
    try
      SysStr:=UTF8ToUTF16(NomeFileExe);
      IdxImg:=SHGetFileInfoW(PWideChar(SysStr), 0, FileInfo, SizeOf(FileInfo), SHGFI_ICON);
      if (IdxImg <> 0) then begin
        WrkIcona.Handle:=FileInfo.hIcon;

        //Carico l'icona in una struttura di appoggio che fa sì che non venga perso
        //il bit relativo alla trasparenza (a differenza di quanto succede con "EstraiIconaDaExe")
        IdxImg:=ImageList_AddIcon(HandleImageList, WrkIcona.Handle);
        if (IdxImg <> -1) then begin
          IdxImg:=ImageList_ReplaceIcon(HandleImageList, IdxImg, WrkIcona.Handle);
          if (IdxImg <> -1) then begin
            //Ora posso assegnare l'icona letta all'output della funzione, e comunicare
            //al chiamante che tutto è ok
            WrkIcona.Handle:=ImageList_GetIcon(HandleImageList, 0, ILD_TRANSPARENT + ILD_MASK + ILD_IMAGE);
            Result:=True;
          end;
        end;
      end;
    finally
      ImageList_Destroy(HandleImageList);
    end;
  {$ENDIF}
end;

Ora sono di fretta, e non riesco a verificare se è compilabile, o se gli serve qualcosa che prendo da altre unit.
provalo, ed eventualmente fammi sapere se e cosa manca

Ciao, Mario
Titolo: Re:[OT] Windows 11 e barra di avvio veloce
Inserito da: DragoRosso - Febbraio 11, 2023, 11:57:19 am
Codice: [Seleziona]
Uses Windows, ShellApi;
var   IconIndex: word;
var   IconHandle: HIcon;
        IconIndex := 0;
        IconHandle := ExtractAssociatedIcon(HInstance, nomedelifile, IconIndex);

Vado a memoria questo ti estrare l'Handle dell'icona "abbinata" di un qualsiasi file in Windows. Funziona su qualsiasi file, non solo gli eseguibili.

L'handle poi puoi assegnarlo oppure puoi salvarti l'immagine.

Ciao
Titolo: Re:[OT] Windows 11 e barra di avvio veloce
Inserito da: giacomarko - Febbraio 11, 2023, 02:53:54 pm
@DragoRosso,

ho provato il codice che hai postato ma non riesco a capire una cosa, l'ultimo parametro immagino sia l'indice dell'icona all'interno del file (exe o dll), l'ho settato a 0 ma in compilazione mi restituisce questo errore:

main.pas(196,99) Error: Incompatible type for arg no. 3: Got "Word", expected "LPWORD"

cosa non gli "piace" nella dichiarazione ?

Codice: [Seleziona]
procedure TTrayLauncher.ReadSettings;
var   IconIndex: word;
var   IconHandle: HIcon;   
...
...
..
          IconIndex := 0;
          IconHandle := ExtractAssociatedIcon(HInstance, appSpec[countTotalApp].appName, IconIndex);   


M
Titolo: Re:[OT] Windows 11 e barra di avvio veloce
Inserito da: DragoRosso - Febbraio 11, 2023, 04:57:54 pm
In effetti è errata la chiamata ..... (qui il riferimento Microsoft): https://learn.microsoft.com/it-it/windows/win32/api/shellapi/nf-shellapi-extractassociatediconw (https://learn.microsoft.com/it-it/windows/win32/api/shellapi/nf-shellapi-extractassociatediconw)

La chiamata corretta è:

Codice: [Seleziona]
IconHandle := ExtractAssociatedIcon(HInstance, appSpec[countTotalApp].appName, @IconIndex);

IconIndex (c'è la chioccciola in chiamata) e il nomefile vengono variati se il file è un eseguibile o una dll: nel nomefile la funzione scrive la path completa con il nomedelfile, e in IconIndex viene caricato l'indice dell'icona presente nel file eseguibile è che è associata a file stesso (non è detto sia la prima).

Per tutti gli altri file (ad esempio un collegamento a una pagina web) viene ritornato solo l'Handle all'icona abbinata al collegamento (potrebbe essere l'icona del browser standard oppure l'icona identificativa del sito web).

Occhio che la stringa nomedelfile potrebbe essere variata, quindi è meglio usare un buffer per passare il nomedelfile ... il chiamato sicuramente non và a testare l'allocazione della stringa e si rischia di avere LEAK.

Ti posto un esempio concreto ....
Titolo: Re:[OT] Windows 11 e barra di avvio veloce
Inserito da: DragoRosso - Febbraio 11, 2023, 07:01:25 pm
Posto un esempio con cui tra l'altro si abilita il DRAG&DROP, può essere utile per quello che state facendo ....

Fate partire il programma, trascinate una qualsiasi cosa (link, file) e oltre a visualizzare il nome completo cambierà l'icona dell'applicazione con quella abbinata al file trascinato.....

Ciao

P.S.: se trascinate più file, l'icona della vs. applicazione apparirà come abbinata all'ultimo dei file trascinati.
Titolo: Re:[OT] Windows 11 e barra di avvio veloce
Inserito da: giacomarko - Febbraio 11, 2023, 08:12:29 pm
Interessante, adesso lo guardo ;)

condivido lo stadio attuale del cosidetto Launcher, in pratica è iniziato un po come un gioco... tipo "vediamo che si può fare.."

ma tutto sommato penso che lo utilizzerò, eliminando così le cartelle con i link che avevo impostato per ovviare alle limitazioni della barra di WIndows.

Al momento leggo da un file di testo (il solito .ini) i dati necessari:
nome dell'applicazione,
percorso completo,
directory di esecuzione,
al momento anche l'icona, poi spero di riuscire a capire come prelevare quella dell'exe

carico il tutto in un record che gestisco con un array, non mi sono posto il problema di una struttura tipo List, ragionando sul fatto che: quanti programmi potrò mai mettere in questa struttura ? 20..30 ..40 !

Poi mentre ci lavoravo, dato che sono leggeremnte maniaco dell'ordine, ho pensato di dotare la barra anche di un PageControl, in modo da organizzare i programmi secondo la logica di TabSheet, chiaramente non è obbligatorio in quanto cartelle e programmi vengono letti da un file di inizializzazione, per cui se si vuole si divide, altrimenti tutto insieme, va da sè che l'ordine con cui appariranno, sarà quello definito nel file.

Sto anche lavorando su un semplice form di settaggio: posizione a schermo, dimensione iniziale...  si potrebbe anche pensare di utilizzare il Drag&Drop fornito da DragoRosso e poi costruire il file (che è quello che suggeriva Bonamario !).

allego qualche esempio, da considerare che ci lavoro da ieri, quindi siamo allo stato iniziale, poi andrà affinato, non fate caso ai programmi che vedete in lista, perchè per avere elementi sono andato giù di copia e incolla
Titolo: Re:[OT] Windows 11 e barra di avvio veloce
Inserito da: bonmario - Febbraio 11, 2023, 08:49:35 pm
Complimenti, veramente bello !
Titolo: Re:[OT] Windows 11 e barra di avvio veloce
Inserito da: giacomarko - Febbraio 11, 2023, 09:51:09 pm
Grazie del complimento !!!

il popup è ridimensionabile e a scorrimento se i pulsanti sono maggiori dello spazio mostrato, direi che ce ne stanno fin che mai
Titolo: Re:[OT] Windows 11 e barra di avvio veloce
Inserito da: DragoRosso - Febbraio 11, 2023, 11:40:10 pm
Anteprima video funzionalità base drag and drop, con simulazione quick bar.

SI VEDE SOLO CON VLC, no mediaplayer.

Poi posto il codice ...
Titolo: Re:[OT] Windows 11 e barra di avvio veloce
Inserito da: giacomarko - Febbraio 12, 2023, 09:43:09 am
Direi di un'altro livello, veramente una bella soluzione !!

io invece stò ancora cozzando con il problema di attribuire l'icona dell'applicazione al punsante di lancio...  :-\
ho provato l'esempio di Dragorosso e anche un'altro trovato in rete... ma non vanno, ho errori di attribuzione del oggetto ICON al pulsante...
Titolo: Re:[OT] Windows 11 e barra di avvio veloce
Inserito da: DragoRosso - Febbraio 12, 2023, 10:14:31 am
Tra poco posto il sorgente ... quick bar già funzionante in Delphi con drag&drop di riordino, sia in fase di inserimento che dopo.

Purtroppo Lazarus ha qualche problemino con la messagistica di Windows e quindi come ho fatto per l'altro esempio devo lavorare un pò per renderlo funzionante sotto FPC.

Ciao

P.S.: link al video (tasto destro del mouse e salva ....) https://cloud.dyn-o-saur.com/Video_20230212101731844.avi (https://cloud.dyn-o-saur.com/Video_20230212101731844.avi) SEMPRE DA APRIRE CON VLC.
Titolo: Re:[OT] Windows 11 e barra di avvio veloce
Inserito da: bonmario - Febbraio 12, 2023, 01:12:18 pm
ho provato l'esempio di Dragorosso e anche un'altro trovato in rete... ma non vanno, ho errori di attribuzione del oggetto ICON al pulsante...

Hai provato quello che ho postato io ieri?
A me funziona ...

Ciao, Mario
Titolo: Re:[OT] Windows 11 e barra di avvio veloce
Inserito da: DragoRosso - Febbraio 12, 2023, 02:28:57 pm
Posto il progetto completo.

Queste le note (sono anche dentro il progetto).

Citazione
Uso:
      - Fate il drag and drop di questo eseguibile sulla barra delle applicazioni.
                - Da questo momento potete cliccare sull'icona per fare apparire / scomparire la "barra".
      - Trascinate nella "barra" link, applicazioni, documenti o altro.
      - Tasto destro su un zona bianca per attivare / disattivare l'ordinamento.

Da fare:
         - Eliminare icone dalla barra;
         - Salvare su file (o registro di Windows)
         - Caricare da file (o registro di Windows) all'avvio
         - Trovare il drag point per il drag and drop fatto da Explorer

Problemi noti:

         - A differenza di Delphi dove tutte le icone di qualsiasi tipo vengono visualizzate,
           in Lazarus non tutte le icone vengono visualizzate (specialmente icone relative ad alcuni LINK)

Può essere uno spunto per fare qualcosa di più completo.

Ciao
Titolo: Re:[OT] Windows 11 e barra di avvio veloce
Inserito da: giacomarko - Febbraio 12, 2023, 04:21:12 pm
ho provato l'esempio di Dragorosso e anche un'altro trovato in rete... ma non vanno, ho errori di attribuzione del oggetto ICON al pulsante...

Hai provato quello che ho postato io ieri?
A me funziona ...

Ciao, Mario

si ma non riesco ad assegnare l'icona dell'eseguibile al BitBtn che lancerà l'applicazione, può essere che tu nel programma originario la assegnavi ad un TImage e non ad un BitBtn ?
Ad ogni modo ora riprova da capo.

grazie
Titolo: Re:[OT] Windows 11 e barra di avvio veloce
Inserito da: bonmario - Febbraio 12, 2023, 06:08:40 pm
Esatto:
Codice: [Seleziona]
WrkImage.Picture.Assign(WrkIcona);

Scusami, mi ero dimenticato di scriverlo !

Ciao, Mario
Titolo: Re:[OT] Windows 11 e barra di avvio veloce
Inserito da: giacomarko - Febbraio 13, 2023, 10:03:00 am
Figurati !!

lo avevo poi intuito osservando i metodi utilizzati, che non erano propri di un TBitBtn,

tra un po posto il risultato

Grazie
Titolo: Re:[OT] Windows 11 e barra di avvio veloce
Inserito da: bonmario - Febbraio 13, 2023, 01:01:39 pm
Posto il progetto completo.

Queste le note (sono anche dentro il progetto).

Citazione
Uso:
      - Fate il drag and drop di questo eseguibile sulla barra delle applicazioni.
                - Da questo momento potete cliccare sull'icona per fare apparire / scomparire la "barra".
      - Trascinate nella "barra" link, applicazioni, documenti o altro.
      - Tasto destro su un zona bianca per attivare / disattivare l'ordinamento.

Da fare:
         - Eliminare icone dalla barra;
         - Salvare su file (o registro di Windows)
         - Caricare da file (o registro di Windows) all'avvio
         - Trovare il drag point per il drag and drop fatto da Explorer

Problemi noti:

         - A differenza di Delphi dove tutte le icone di qualsiasi tipo vengono visualizzate,
           in Lazarus non tutte le icone vengono visualizzate (specialmente icone relative ad alcuni LINK)

Può essere uno spunto per fare qualcosa di più completo.

Ciao

Ciao,
scusa il ritardo, ma ogni volta che leggevo questo thread ero su Linux, e non avevo modo di provare !!!

Complimenti, veramente un bel lavoro.
Io alla fine ho fatto solo "un'emulazione" della barra di avvio veloce di Windows 10, quindi icone piccole senza testo.
L'unica cosa che mi manca, ma credo che quello sia impossibile, è il fatto di mettere la mia barra sopra a quella di stato di Windows11, e fare in modo che TUTTE le altre finestre abbiano il "top della mia" come limite invalicabile, ma questo credo proprio che sia impossibile da ottenere.

Ciao, Mario
Titolo: Re:[OT] Windows 11 e barra di avvio veloce
Inserito da: DragoRosso - Febbraio 13, 2023, 02:40:29 pm
Agganciarla alla barra delle applicazioni è fattibile, basta interrogare i dati della finestra "barra applicazioni" appunto (almeno penso).

Mantenerla invece esposta senza che le app la sovrappongono invece è un pò più complesso, perchè dovresti "dire" a Windows che sei anche tu una barra di stato .... però magari si può fare.

Più avanti vedrò delle due cose ...

Ciao
Titolo: Re:[OT] Windows 11 e barra di avvio veloce
Inserito da: giacomarko - Febbraio 15, 2023, 10:12:56 am
Sempre proseguendo nello sviluppo della task bar alternativa, mi sono posto questa domanda:

dato che creo runtime un numero indefinito di oggetti TTabSheet e TImage, sarebbe logico che li distruggessi in fase di chiusura... però non è vero che in fase di chiusura della applicazione, tutto ciò che è collegato ad essa viene distrutto ?

Secondo voi, quale approccio sarebbe il più corretto e come?

pensavo ad un loop tipo questo:
Codice: [Seleziona]
  for i := Self.ComponentCount-1 downto 1 do
  begin
    if Self.Components[i] is TImage then TImage(Self.Components[i]).Free;
  end;
Titolo: Re:[OT] Windows 11 e barra di avvio veloce
Inserito da: DragoRosso - Febbraio 15, 2023, 10:56:50 am
Tutti i componenti che vengono creati con il riferimento alla Form principale (generalmente pippo := Tpippo.Create(self)) vengono automaticamente liberati (ossia distrutti) alla chiusura della Form stessa (ossia dell'applicazione).

Questo vale per qualunque componente creato con un riferimento ad un altro componente (generalemnte chiamti componenti Padri e Figli, Parents and Childs).

Quale è la buona regola: implementare un distruttore per ogni componente personalizzato o creato a runtime se andiamo a creare / instanziare oggetti (ad esempio array dinamici). In tale metodo andremo a liberare tutti ciò che abbiamo creato a runtime (tale metodo verrà automaticamente chiamato dal componente padre).

dato che creo runtime un numero indefinito di oggetti TTabSheet e TImage, sarebbe logico che li distruggessi in fase di chiusura... però non è vero che in fase di chiusura della applicazione, tutto ciò che è collegato ad essa viene distrutto ?

Esatto, se sono componenti creati con xxxx.Create(self), verranno distrutti automaticamente. Ciò però non è vero con oggetti creati con xxxx.Create(nil) oppure se usi gli array dinamici, e in molte altre situazioni (occorre trattare il concetto di visibilità / vita / "count reference" degli oggetti).

Occhio anche all'uso dei puntatori, soprattutto con array statici: tutto ciò che è statico viene rilasciato dall'applicazione (non si può rilasciare a codice) PERO' IL CONTENUTO DEGLI ARRAY NO !!! se tale contenuto è un oggetto istanziato !!!!!

Esempio:

Codice: [Seleziona]
//TObject può essere un qualsiasi oggetto noto
var Pippo: array [0..9] of TObject;
     i: integer;

for i := low(Pippo) to High(Pippo) do
  Pippo[i] := TObject.Create(self);

//Questo array verrà liberato alla chiusura del programma (o all'uscita del metodo se dichiarato in un metodo) ma gli oggetti creati NO, anche se usano il "self" come parent. E' necessario liberare a mano ogni contenuto del singolo elemento dell'array alla chiusura (o quando necessita).

for i := low(Pippo) to High(Pippo) do
  begin
    if assigned(Pippo[i]) then
      begin
         Pippo[i].Free;
         Pippo[i] := nil;   <------------- RICORDARSI SEMPRE DI PORRE A NIL SE LIBERATE RISORSE A MANO !!!!!!!!!!
      end;

Secondo voi, quale approccio sarebbe il più corretto e come?

pensavo ad un loop tipo questo:
Codice: [Seleziona]
  for i := ComponentCount-1 downto 1 do
  begin
    //CORRETTO ........
    if Components[i] is TImage then
      begin
         (Components[i]) as TImage).Free;
         Components[i]) := nil;
      end;
  end;

Anche questo è corretto (anche se non necessario in questo particolare  caso), l'unica accortezza è di aggiungere l'assegnazione a "nil" dopo il FREE, questo perchè nel caso il "PADRE" (self) chiamasse il distruttore del "Figlio" (Image) andrebbe in AV senza il "nil".

Ciao
Titolo: Re:[OT] Windows 11 e barra di avvio veloce
Inserito da: giacomarko - Febbraio 15, 2023, 02:01:49 pm
Grazie DragoRosso,

domanda, perchè ottengo un errore di compilazione con il seguente codice...
Codice: [Seleziona]
  for i := Self.ComponentCount-1 downto 1 do
  begin
    if Self.Components[i] is TImage then
    begin
       (Self.Components[i] as TImage).Free;
       Self.Components[i] := nil;
    end;
  end;

ecco l'errore:
main.pas(174,27) Error: No member is provided to access property

Titolo: Re:[OT] Windows 11 e barra di avvio veloce
Inserito da: DragoRosso - Febbraio 15, 2023, 02:28:40 pm
Perchè Components è una proprietà che può essere solo "letta" e non assegnata. In questo caso ":= nil" non può essere effettuato lavorando direttamente con la proprietà "components".

Mi ero distratto scusa ...

Ciao
Titolo: Re:[OT] Windows 11 e barra di avvio veloce
Inserito da: giacomarko - Febbraio 15, 2023, 03:03:43 pm
Figurati !

Pefetto, ora oltre che eliminare tutto all'uscita (anche se non necessario), chiamo il metodo all'uscita del riordinio, aggiunta, eliminazione... di icone e cartelle, così faccio un refresh e ricreo la task bar ;)
Titolo: Re:[OT] Windows 11 e barra di avvio veloce
Inserito da: bonmario - Febbraio 20, 2023, 03:27:19 pm
L'unica cosa che mi manca, ma credo che quello sia impossibile, è il fatto di mettere la mia barra sopra a quella di stato di Windows11, e fare in modo che TUTTE le altre finestre abbiano il "top della mia" come limite invalicabile, ma questo credo proprio che sia impossibile da ottenere.

Alla fine, visto che:
- purtroppo in Windows11 le icone nella barra di stato sono sovrapposte
- la cosa potrebbe essere risolta usando app esterne che però qui al lavoro non mi fanno installare

sto provando una cosa alternativa: ma mia "barra di avvio veloce" sovrapposta alla barra di stato di windows. Allego un'immagine di esempio.
Ho ancora qualche problemino da risolvere, ma per il momento me la faccio andare bene così !!!

Ciao, Mario
Titolo: Re:[OT] Windows 11 e barra di avvio veloce
Inserito da: DragoRosso - Febbraio 20, 2023, 05:06:47 pm
Alla fine, visto che:
- purtroppo in Windows11 le icone nella barra di stato sono sovrapposte

In che senso ... le icone non sono sovfrapposte. Se parli della tua, disegnale lasciando un margine: se vedi nel mio allegato vedrai che ho imposto un margine e una dimensione, che per adesso è manuale, può essere automatica andando ad analizzare essenzialmente risoluzione e dpi awareness.

Ciao
Titolo: Re:[OT] Windows 11 e barra di avvio veloce
Inserito da: bonmario - Febbraio 20, 2023, 05:21:23 pm
Ho usato la parola sbagliata: le icone sono raggruppate.

In pratica, quello di cui si parla qui: https://answers.microsoft.com/it-it/windows/forum/all/raggruppamento-icone-barra-strumenti-windows-11/e7756dca-5ed8-4a47-be13-aeeaf060c326?page=1

Ciao, Mario
Titolo: Re:[OT] Windows 11 e barra di avvio veloce
Inserito da: DragoRosso - Febbraio 20, 2023, 06:03:00 pm
Non voglio certamente convincerti, ma il ragruppamento ha un senso: velocizzare ed avere un colpo d'occhio su quei programmi "ragruppati" aperti. Comunque senza ragruppamento non puoi vedere tutti i programmai aperti (ne generalmente ne puoi identificare l'istanza), mentre con il ragruppamento ti fà vedere le anterprime e puoi passare a quello che ti interessa senza "sfogliare tutte le icone" ...

Magari può non piacere, però io lo trovo comodo. Anche io comunque all'inizio avevo qualche remora poi però è decisamente più pratico rispetto a prima.

Sicuramente è solo un punto di vista.

Ciao
Titolo: Re:[OT] Windows 11 e barra di avvio veloce
Inserito da: bonmario - Febbraio 20, 2023, 06:26:09 pm
Al momento, è causa della mie maggiori perdite di tempo !!!

Quando ad esempio ho 4 sorgenti aperti,che per me sono anche pochi, con l'IDE che usiamo al lavoro, nella barra di stato ho un'icona unica, quindi devo prima cliccare sull'icona, capire quale delle anteprime che mi fa vedere è quella del sorgente che mi serve, e poi cliccarci sopra.
Con le icone non raggruppate, vedo direttamente nella barra di stato di windows il nome del sorgente che mi interessa, ci clicco sopra a colpo sicuro !!!

Le icone raggruppate, non mi sono mai piaciute. Mi sono costretto ad usarle per 6 mesi quando Ubuntu era passata ad Unity, ma poi ci ho rinunciato: non fanno per me
Titolo: Re:[OT] Windows 11 e barra di avvio veloce
Inserito da: DragoRosso - Febbraio 20, 2023, 07:28:37 pm
Al momento, è causa della mie maggiori perdite di tempo !!!

Quando ad esempio ho 4 sorgenti aperti,che per me sono anche pochi, con l'IDE che usiamo al lavoro, nella barra di stato ho un'icona unica, quindi devo prima cliccare sull'icona, capire quale delle anteprime che mi fa vedere è quella del sorgente che mi serve, e poi cliccarci sopra.
Con le icone non raggruppate, vedo direttamente nella barra di stato di windows il nome del sorgente che mi interessa, ci clicco sopra a colpo sicuro !!!

Le icone raggruppate, non mi sono mai piaciute. Mi sono costretto ad usarle per 6 mesi quando Ubuntu era passata ad Unity, ma poi ci ho rinunciato: non fanno per me

Su Windows 11 non devi cliccare sull'icona di ragruppamento, ti mostra le anteprime di tutte le app ragruppate immediatamente al passaggio del mouse. Su Windows 10 il nome visualizzato è parziale, fino a quando non ci "vai" sopra con il mouse (nel tuo post fai vedere che viene visualizzato "firefox" e basta e così nella macchina vrtuale Win10 che ho anche con altre APP).

Se il Vs. IDE mostra il nome direttamente sulla barra allora sei sicuramente più veloce con il sistema Win10.

Comunque  il problema principale è che tale situazione sembra non sarà modificato neanche in futuro, perchè si ritiene che il metodo di ragruppamento sia il migliore.

N.B.: io nel portatile ho normalmente 4 macchine virtuali aperte avendo 32 GB di memoria, Simil Word, Simil Excel, E-mail, normalmente due istanze IDE RAD Studio (Delphi e C++), un Simil Autocad, GIMP, un paio di FireFox, due cloud e devo dire che rispetto all'anno scorso quando usavo Windows 10 mi trovo generalmente meglio con Windows 11 (intanto Windows 11 tiene "su" più Virtual Machine rispetto a Win10).

Comunque è questione personale (ad esempio a mè piace Lazarus in versione Docked come Delphi, cosa che non mi pare invece sia così diffusa come scelta).

Ciao
Titolo: Re:[OT] Windows 11 e barra di avvio veloce
Inserito da: giacomarko - Febbraio 21, 2023, 02:43:32 pm
Premetto che anche io preferisco e uso Lazarus, in versione docked.... dopo 20 anni di delphi, difficile cambiare ;)

Giusto per dare un senso a questo thread e ad arrivare ad un dunque, posto alcuni dettagli della versione semi definitiva della taskbar:

- ho lasciato perdere il discorso drag & drop, devo chiarimi meglio le idee, eventualmente ne farò una versione alternativa, questa era già troppo avanti per ridisegnarla completamente, tanto vale rifarla come un nuovo progetto,

- ho tenuto come condizione imprescindibile, l'uso dei un PageController per organizzare le applicazioni secondo la logica personale (non amo il disordine), chiaramente non sono preimpostate ma uno ne crea fin che ci stanno sullo schermo,

- per la gestione ho utilizzato una struttura ad albero per simulare la barra delle applicazioni, sulla quale è possibile:
inserire cartelle e applicazioni, eliminare l'applicazione o l'intera cartella con tutto il suo contenuto, spostare prima o dopo sia cartelle intere che singole applicazioni come pure spostare applicazioni tra cartelle,

- per salvare i dati ho preferito non andare sul registro di windows, ma utilizzare un piccolo DB in SQLite, viene letto all'avvio e caricato in memoria, lo stesso file viene riletto una volta terminato di modificare la struttura per aggiornare la barra, lo stesso DB contiene una seconda tabella con i vari parametri di personalizzazione; orientamento, dimensioni, colore..  (ci sto ancora lavorando),

- alla barra ho dato un filo di trasparenza, non serve a nulla... ma mi piaceva così  :)

Se avete suggerimenti o perplessità... io non sono permaloso  ;)

buona giornata

M
Titolo: Re:[OT] Windows 11 e barra di avvio veloce
Inserito da: bonmario - Febbraio 21, 2023, 03:01:01 pm
Io avrei 2 suggerimenti:
- il primo, è quello di tradurre le voci in italiano  ;D ;D ;D
- il secondo, dal nome del programma, credo che tu abbia l'icona nella "Tray", di fianco all'orologio (nell'immagine non si vede). Se è così, potresti nascondere l'icona dell'app dalla barra di stato di windows.

Ciao, Mario
Titolo: Re:[OT] Windows 11 e barra di avvio veloce
Inserito da: giacomarko - Febbraio 21, 2023, 05:49:47 pm
Come barra di stato intendi quella a cui si accede con la freccia su, prima di connessioni, volumi e batteria?
Titolo: Re:[OT] Windows 11 e barra di avvio veloce
Inserito da: bonmario - Febbraio 21, 2023, 05:54:58 pm
Ciao,
adesso sono su Ubuntu, e non riesco a fare screenshot, intendo "le icone che ci sono dopo il tasto Start, e prima della Tray"

Se non mi fossi spiegato, dimmelo che appena sono su Windows, ti faccio un screenshot per spiegarmi meglio.

Ciao, Mario
Titolo: Re:[OT] Windows 11 e barra di avvio veloce
Inserito da: bonmario - Febbraio 27, 2023, 08:27:50 am
Ciao,
sapete se c'è modo di non far rientrare l'applicativo tra quelli raggiungibili premendo "ALT + TAB"?
Il problema è questo: sto provando una versione in cui la barra è sempre visibile. Supponiamo che io sia su Firefox, e clicco sull'icona della barra per aprire Chrome. se premo "ALT + TAB", i va sulla barra e non su Firefox.

Spero di essere riuscito a spiegarmi ....

Ciao, Mario
Titolo: Re:[OT] Windows 11 e barra di avvio veloce
Inserito da: DragoRosso - Febbraio 27, 2023, 11:38:19 am
Era parzialmente fatto con  l'esempio che avevo riportato:

La FORM deve avere il bordo di tipo "bsToolWindow", e poi devi aggiungere queste righe nel FORMCREATE:

Codice: [Seleziona]
procedure TFMain.FormCreate(Sender: TObject);
var
  iStyle: Integer;
begin
    iStyle:= GetWindowLong( Application.Handle, GWL_EXSTYLE );
    SetWindowLong( Application.Handle, GWL_EXSTYLE, iStyle or WS_EX_TOOLWINDOW );
end;

Ciao
Titolo: Re:[OT] Windows 11 e barra di avvio veloce
Inserito da: bonmario - Febbraio 27, 2023, 01:13:42 pm
La FORM deve avere il bordo di tipo "bsToolWindow"

Grazie, ma già questo mi frega: io disegno la form con "bsNone"

Ciao, Mario
Titolo: Re:[OT] Windows 11 e barra di avvio veloce
Inserito da: DragoRosso - Febbraio 27, 2023, 01:25:08 pm
Ho fatto una prova e ..... funziona pure con bsNone, almeno su Windows 11.

Ciao
Titolo: Re:[OT] Windows 11 e barra di avvio veloce
Inserito da: bonmario - Febbraio 27, 2023, 01:34:42 pm
Probabilmente c'è altro: pure io su Windows 11, con bsToolWindow funziona, con bsNone no

Ciao, Mario
Titolo: Re:[OT] Windows 11 e barra di avvio veloce
Inserito da: DragoRosso - Febbraio 27, 2023, 10:13:07 pm
 :o :o :o
Titolo: Re:[OT] Windows 11 e barra di avvio veloce
Inserito da: DragoRosso - Marzo 01, 2023, 09:25:45 am
Ho fatto la prova con il "bsNone" su molti PC con Windows 11 (Home, Pro) e su tutti il programma non appare con "ALT TAB".

Questo è il link al progetto sorgente con l'eseguibile nella sottodirectory LIB: https://cloud.dyn-o-saur.com/QuickLaunch.zip (https://cloud.dyn-o-saur.com/QuickLaunch.zip)

Non cliccate sopra il link, ma salvatelo con il tasto destro del mouse. (ho sistemato il problema lato server).

@bonmario se vuoi provalo così vedi se c'è qualcosa a livello di codice che sfugge.

Ciò che può influire su "ALT TAB" dovrebbe essere in "IMPOSTAZIONI/SISTEMA/MULTITASKING" dal menu impostazioni di Windows.

Ciao
Titolo: Re:[OT] Windows 11 e barra di avvio veloce
Inserito da: bonmario - Marzo 01, 2023, 06:12:21 pm
Ciao,
dal lavoro non me lo faceva scaricare.
L'ho scaricato adesso, ma il mio windows è ko ... domani lo provo sul lavoro e ti faccio sapere.

Grazie, Mario
Titolo: Re:[OT] Windows 11 e barra di avvio veloce
Inserito da: bonmario - Marzo 02, 2023, 08:05:12 am
Ho fatto la prova con il "bsNone" su molti PC con Windows 11 (Home, Pro) e su tutti il programma non appare con "ALT TAB".

Ciao,
ho provato il tuo codice, e funziona bene anche da me.
Probabilmente nel mio progetto c'è qualcosa che va in conflitto, e fa sì che non funzioni.
Non fa niente, sarebbe solo stata una finezza in più !

Ciao, Mario
Titolo: Re:[OT] Windows 11 e barra di avvio veloce
Inserito da: giacomarko - Marzo 05, 2023, 09:13:41 pm
Ho provato a scaricare, ma non funziona... Errore di rete
Titolo: Re:[OT] Windows 11 e barra di avvio veloce
Inserito da: DragoRosso - Marzo 05, 2023, 10:42:05 pm
Ho provato a scaricare, ma non funziona... Errore di rete

Si, scusa ma ho aggiornato tutto il server con il nuovo TLSv1_3 (il TLSv1_2 và in downgrade per i browser più vecchi) e i nuovi certificati e alias.

Ora è e rimarrà in linea.

Ciao
Titolo: Re:[OT] Windows 11 e barra di avvio veloce
Inserito da: bonmario - Marzo 06, 2023, 08:23:29 am
Ho fatto la prova con il "bsNone" su molti PC con Windows 11 (Home, Pro) e su tutti il programma non appare con "ALT TAB".

Ciao,
ho provato il tuo codice, e funziona bene anche da me.
Probabilmente nel mio progetto c'è qualcosa che va in conflitto, e fa sì che non funzioni.
Non fa niente, sarebbe solo stata una finezza in più !

Ciao, Mario

Trovato !!!
Nel file .lpr, prima della creazione del form, avevo aggiunto questo:

Codice: [Seleziona]
Application.MainFormOnTaskBar:=True;

Serve per nascondere l'icona del programma dalla taskbar di Windows. Disabilitando questa istruzione, adesso il tuo codice funziona !

Grazie ancora, Mario
Titolo: Re:[OT] Windows 11 e barra di avvio veloce
Inserito da: DragoRosso - Marzo 06, 2023, 02:50:24 pm
 ;D Nel codice che ti ho postato l'istruzione era a FALSE, ... sottovalutazione mia nel non segnalarlo.

Comunque come si dice ..... tutto è bene se si risolve ..... più o meno  ;D ;D ;D

Ciao
Titolo: Re:[OT] Windows 11 e barra di avvio veloce
Inserito da: giacomarko - Marzo 06, 2023, 06:01:01 pm
Scaricato, tutto ok..

domanda, ma secondo voi, il componente TTabSheet, potrebbe essere abilitato per ricevere le icone con il drag & Drop?

ci ho provato, ma senza risultato... fallito anche Chat GPT 😀😀
Titolo: Re:[OT] Windows 11 e barra di avvio veloce
Inserito da: DragoRosso - Marzo 06, 2023, 09:12:13 pm
Scaricato, tutto ok..

domanda, ma secondo voi, il componente TTabSheet, potrebbe essere abilitato per ricevere le icone con il drag & Drop?

ci ho provato, ma senza risultato... fallito anche Chat GPT 😀😀

Il problema del Drag & Drop in Windows è che gestito in una maniera molto particolare. Lazarus nasconde (almeno che non si vada dei meandri dei sorgenti di FPC) molto, in effetti facilitando ma contemporaneamente anche limitando il suo uso.

Provo sotto Delphi, poi vedo come fare sotto Lazarus.
Ciao
Titolo: Re:[OT] Windows 11 e barra di avvio veloce
Inserito da: DragoRosso - Marzo 06, 2023, 11:31:31 pm
Programma aggiornato.

Se come settato nel codice postato usi TTabsheet, devi adattare parte del codice per ampliare la larghezza del controllo (si deve ampliare il TPageControl).

https://cloud.dyn-o-saur.com/QuickLaunch.zip (https://cloud.dyn-o-saur.com/QuickLaunch.zip)

P.S.: puoi usare diversi controlli, ma alcuni di quelli che ho provato non gestiscono correttamente il drag and drop, oppure la visualizzazione o gli eventi ....

Nel controllo che userai come DROP devono essere impostati gli eventi (vedi allegato):

Codice: [Seleziona]
//Questi eventi devono essere impostati dall'Object Inspector e non a Run TIME !!!!!!
//Alcuni controlli li espongono come Protected, quindi bisognerebbe derivare una classe per
//poterli gestire a runtime.
// OnDragDrop -> FormDragDrop
// OnDragOver -> FormDragOver
Titolo: Re:[OT] Windows 11 e barra di avvio veloce
Inserito da: giacomarko - Marzo 07, 2023, 09:29:10 am
Potrebbe essere che l'ultima versione postata (quella di ieri) sia la stessa della precedente?

Te lo chiedo perchè vedo nel tuo post, lo screenshoot del componente TTabSheet, che però non trovo in quella scaricata, tra l'altro anche la data di ultima modifica del file UMain è del 1/3/2023, cioè di settimana scorsa... ;-)

Chiaramento l'ho aggiunto io, e modificato gli eventi (vedi img allegate)... ma senza effetto, sicuramente perchè manca il tuo aggiornamento.

buona giornata

M
Titolo: Re:[OT] Windows 11 e barra di avvio veloce
Inserito da: DragoRosso - Marzo 07, 2023, 11:47:45 am
... ehm ... mio errore non avevo aggiornato il file sul server ... sono troppo vecchio per fare lavori a quelle ore ...  ;D

Ora il link è OK.

Ciao
Titolo: Re:[OT] Windows 11 e barra di avvio veloce
Inserito da: giacomarko - Marzo 07, 2023, 08:42:07 pm
Grazie, ora tutto ok,

me lo studio e vedo cosa riesco a fare

 :)
Titolo: Re:[OT] Windows 11 e barra di avvio veloce
Inserito da: bonmario - Marzo 15, 2023, 12:25:03 pm

L'unica cosa che mi manca, ma credo che quello sia impossibile, è il fatto di mettere la mia barra sopra a quella di stato di Windows11, e fare in modo che TUTTE le altre finestre abbiano il "top della mia" come limite invalicabile, ma questo credo proprio che sia impossibile da ottenere.

Ciao, Mario


Sono riuscito ad aggirare il problema, grazie al codice qui sotto:
Codice: [Seleziona]
function IsMyFormCovered(const MyForm: TForm): Boolean;
var
   MyRect: TRect;
   MyRgn, TempRgn: HRGN;
   RType: Integer;
   hw: HWND;
begin
  MyRect := MyForm.BoundsRect;            // screen coordinates
  MyRgn := CreateRectRgnIndirect(MyRect); // MyForm not overlapped region
  hw := GetTopWindow(0);                  // currently examined topwindow
  RType := SIMPLEREGION;                  // MyRgn type

// From topmost window downto MyForm, build the not overlapped portion of MyForm
  while (hw<>0) and (hw <> MyForm.handle) and (RType <> NULLREGION) do
  begin
    // nothing to do if hidden window
    if IsWindowVisible(hw) then
    begin
      GetWindowRect(hw, MyRect);
      TempRgn := CreateRectRgnIndirect(MyRect);// currently examined window region
      RType := CombineRgn(MyRgn, MyRgn, TempRgn, RGN_DIFF); // diff intersect
      DeleteObject( TempRgn );
    end; {if}
    if RType <> NULLREGION then // there's a remaining portion
      hw := GetNextWindow(hw, GW_HWNDNEXT);
  end; {while}

  DeleteObject(MyRgn);
  Result := RType = NULLREGION;
end;

function IsMyFormVisible(const MyForm : TForm): Boolean;
begin
  Result:= MyForm.visible and
           isWindowVisible(MyForm.Handle) and
           not IsMyFormCovered(MyForm);
end;

In pratica, ho messo un timer che ogni secondo controlla se il miò form è "not IsMyFormVisible", se è così, lo riporto in primo piano !!!

Ora il mio programma dovrebbe essere completo !!!
Ciao, Mario