Delphi / Pascal : Uac (user account control) - exécuter une application en tant

hfr11 Messages postés 20 Date d'inscription mardi 17 décembre 2002 Statut Membre Dernière intervention 8 octobre 2019 - 8 oct. 2019 à 00:41
 Yanb - 10 oct. 2019 à 09:12
Bonjour,
Je n'ai encore jamais eu l'occasion de me mettre au xml et maintenant, avec l'âge...
Je souhaiterais utiliser le fichier .res dont il est question mais sans le paragraphe référençant XPMan.
Je suis sous Win 10 et quand je mets tout le fichier je perds tout un tas d'effets visuels que je me suis decarcassé à produire. J'ai essayé des tas de trucs sur ce code mais alors la compilation échoue lamentablement, je ne sais pas supprimer le noeud <dependency>. (Je me fais tout petit)
Merci et bon courage, Patrice.

1 réponse

Salut,
Exemple si fichier .xml à adapter...
procedure TForm1.Button1Click(Sender: TObject);
const
  AXmlFileName1 = 'Project1.xml';
  AXmlFileName2 = 'Project1Modif.xml';
var
  I: Integer;
  MyNode: IXMLNode;
begin
  XMLDocument1.LoadFromFile(AXmlFileName1);
  MyNode := XMLDocument1.ChildNodes.Nodes[1];
  for I := MyNode.ChildNodes.Count -1 downto 0 do
    if MyNode.ChildNodes[I].NodeName = 'dependency' then
        MyNode.ChildNodes.Delete(I);
  XMLDocument1.SaveToFile(AXmlFileName2);
end;

Exemple si fichier .xml dans .res à adapter...
procedure TForm1.Button2Click(Sender: TObject);
  function ReadStrFromStream(Stream: TStream): AnsiString;
  var
    C: AnsiChar;
  begin
    Result := '';
    repeat
      Stream.Read(C, 1);
      Result := Result + C;
    until Stream.Position >= Stream.Size;
  end;
const
  CFilename1 = 'Project1.res';
  CFilename2 = 'Project1Modif.res';
var
  OldFileStream: TFileStream;
  NewFileStream: TFileStream;
  S: AnsiString;
begin
  OldFileStream := TFileStream.Create(CFilename1, fmOpenRead);
  try
    NewFileStream := TFileStream.Create(CFilename2, fmCreate);
    try
      S := '';
      S := ReadStrFromStream(OldFileStream);
      OldFileStream.Position := 0;
      if Pos('<dependency>', S) <> 0 then
      begin
        NewFileStream.CopyFrom(OldFileStream, Pos('<dependency>', S) -1);
        OldFileStream.Position := Pos('</dependency>', S) + Length('</dependency>') +1;
        NewFileStream.CopyFrom(OldFileStream, OldFileStream.Size - OldFileStream.Position);
      end
      else
        NewFileStream.CopyFrom(OldFileStream, OldFileStream.Size);
    finally
      NewFileStream.Free;
    end;
  finally
    OldFileStream.Free;
  end;
end;

@+
0
Rejoignez-nous