Bonjour les gens,

J'utilise le code suivant pour exécuter un programme externe:

Code : Sélectionner tout - Visualiser dans une fenêtre à part
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
 
function Run(hnd: hWnd; Filename: string; Parameters: string): Boolean;
var
  sei: TShellExecuteInfo;
begin
  ZeroMemory(@sei, SizeOf(sei));
  sei.cbSize := SizeOf(TShellExecuteInfo);
  sei.Wnd    := hnd;
  sei.fMask  := SEE_MASK_FLAG_DDEWAIT;
  sei.lpFile := PChar(Filename);
  if Parameters <> '' then
    sei.lpParameters := PChar(Parameters);
  sei.nShow := SW_SHOWNORMAL;
  Result := ShellExecuteEx(@sei);
end;
Le programme appelé est un exe fait avec Delphi Berlin auquel j'ai ajouté l'option "Activer les privilèges d'administrateur" dans les options d'application.

Problème : si j'exécute le programme depuis Windows, la fenêtre d'UAC demandant confirmation s'affiche bien en premier plan sur le bureau.
Si je l'exécute depuis mon exe principal (qui ne nécessite pas de droit admin), l'icône d'UAC s'affiche dans la barre des tâches et passe en surbrillance mais mon appli reste au premier plan. Je n'arrive pas à trouver l'astuce pour que la demande UAC se fasse au premier plan du bureau.
Une combinaison de différentes valeurs de nShow pourrait-elle résoudre ce problème ??