Groups | Search | Server Info | Login | Register


Groups > it.comp.lang.delphi > #18135

Re: Richiamare un programma "minimizzato" da un altro programma

From Daniele <daniele.xxxx@yyyyy.ww>
Newsgroups it.comp.lang.delphi
Subject Re: Richiamare un programma "minimizzato" da un altro programma
Date 2025-06-25 12:07 +0200
Organization A noiseless patient Spider
Message-ID <103ghpg$2ms3t$1@dont-email.me> (permalink)
References <1036jpb$14suq$1@dont-email.me>

Show all headers | View raw


Il 21/06/2025 17:40, Daniele ha scritto:
> Ciao a tutti,
>    come posso fare per rendere visibile un programma minimizzato nella 
> barra delle applicazioni o nella traybar da un altro programma?
> 
> Qualsiasi tentativo non va a buon fine ...
> 
> situazione:
> Nella onshow della form del programma chiamante controllo che le 
> condizioni per la visualizzazione siano coerenti.
> Se no, controllo se il secondo programma e' in esecuzione, se si lo mostro.
> 
> Ecco il codice che uso per capire se il programma e' in esecuzione e poi 
> per visualizzare la sua form.
> 
> if ProcessExists('Applicazione.EXE',False) then
> begin
>    ProgramHandle:=FindWindowByTitle('Titolo form');
>    If ProgramHandle>0 Then ShowWindow(ProgramHandle, WM_ACTIVATEAPP);
> // WM_SHOW, WM_RESTORE ecc.. non funzionano ...
> End;
> 
> Ma non viene mai visualizzata.
> 
> Dove
> 
> function ProcessExists(exeFileName: string; FullString: Boolean = True): 
> Boolean;
> var
>    ContinueLoop: BOOL;
>    FSnapshotHandle: THandle;
>    FProcessEntry32: TProcessEntry32;
>    S1, S2 : String;
> begin
>    FSnapshotHandle := CreateToolhelp32Snapshot(TH32CS_SNAPPROCESS, 0);
>    FProcessEntry32.dwSize := SizeOf(FProcessEntry32);
>    ContinueLoop := Process32First(FSnapshotHandle, FProcessEntry32);
>    Result := False;
>    while Integer(ContinueLoop) <> 0 do
>    begin
>      if fullstring then
>      begin
>        if ((UpperCase(ExtractFileName(FProcessEntry32.szExeFile)) =
>          UpperCase(ExeFileName)) or (UpperCase(FProcessEntry32.szExeFile) =
>          UpperCase(ExeFileName))) then
>        begin
>          Result := True;
>        end;
>        ContinueLoop := Process32Next(FSnapshotHandle, FProcessEntry32);
>      end
>      else
>      begin
>        S1:=UpperCase(ExtractFileName(FProcessEntry32.szExeFile));
>        S2:=UpperCase(FProcessEntry32.szExeFile);
>        if ( (Pos(UpperCase(ExeFileName), S1)>0) or
>             (Pos(UpperCase(ExeFileName), S2)>0) )then
>        begin
>          Result := True;
>        end;
>        ContinueLoop := Process32Next(FSnapshotHandle, FProcessEntry32);
>      end;
>    end;
>    CloseHandle(FSnapshotHandle);
> end;
> 
> function FindWindowByTitle(WindowTitle: string): Hwnd;
> var
>     NextHandle: Hwnd;
>     NextTitle: array[0..260] of char;
> begin
>     // Get the first window
>     NextHandle := GetWindow(Application.Handle, GW_HWNDFIRST);
>     while NextHandle > 0 do
>     begin
>       // retrieve its text
>       GetWindowText(NextHandle, NextTitle, 255);
>       if Pos(WindowTitle, StrPas(NextTitle)) <> 0 then
>       begin
>         Result := NextHandle;
>         Exit;
>       end
>       else
>         // Get the next window
>         NextHandle := GetWindow(NextHandle, GW_HWNDNEXT);
>     end;
>     Result := 0;
> end;
> 
> Qualche idea ??
> 
> Grazie
> 
> Ciao
> Daniele

Ciao Alessandro,
   sembra che sia proprio cosi' ....
Nel senso che se l'handle e' preso con il nome del titolo della form 
(form caption) allora quell'handle e' valido e funziona il tutto.
Se invece l'handle vie preso dal suo processo, allora non fuonziona 
niente. Ho provato a guardare il valore dell'handle ottenuto che il 
processexist e con il tiitolo della form; Sono diversi e quello che 
funziona (pe questa necessita') e' quello ottenuto con il titolo della form.

Grazie, a tutti, per l'aiuto

Ciao
Daniele

Back to it.comp.lang.delphi | Previous | NextPrevious in thread | Find similar


Thread

Richiamare un programma "minimizzato" da un altro programma Daniele <daniele.xxxx@yyyyy.ww> - 2025-06-21 17:40 +0200
  Re: Richiamare un programma "minimizzato" da un altro programma Roberto <dash@dominus.net> - 2025-06-23 16:16 +0200
    Re: Richiamare un programma "minimizzato" da un altro programma "Alessandro B." <bobbo@tecnosoft.it> - 2025-06-24 06:33 +0200
  Re: Richiamare un programma "minimizzato" da un altro programma Daniele <daniele.xxxx@yyyyy.ww> - 2025-06-25 12:07 +0200

csiph-web