Comment lancer une application extérieure à partir d'ADA ? - Ada - Programmation
Marsh Posté le 04-08-2004 à 17:43:02
Salut voila qui pourra peut etre t'aider. 
C'est un extrait du cours d'un prof de l'iut d'Aix Danniel feneuille. 
 
with Ada.Interfaces.C ; 
-- permet lassociation déléments Ada et des éléments compatibles C 
 
use Ada.Interfaces.C ; 
-- pour éviter de préfixer ! 
procedure C_System (Chaine : in Char_Array); 
-- profil Ada de C_System donc déclaration de C_System 
-- cette procédure sera « léquivalente » de linstruction system de C 
pragma Import (C, C_System, system) ; 
-- réalisation de C_System avec la procédure C notée system 
 
begin 
.. 
C_System(To_C(chaîne Ada illustrant la commande)) ; 
-- utilisation de C_System avec transformation de la chaîne Ada 
-- en son équivalent en C grâce à la fonction de conversion To_C 
 
Revoyons sur cet exemple, facilement généralisable, les trois phases (déclaration, réalisation et utilisation) de la 
procédure Ada qui est écrite en C.
Marsh Posté le 04-08-2004 à 17:43:43
le cours est disponible a cette adresse: http://libre.act-europe.fr/french_courses/main.html 
Marsh Posté le 04-08-2004 à 17:49:27
ce n'est pas ada.interfaces.c mais Interfaces.C tout cours
Marsh Posté le 06-08-2004 à 22:42:03
Salut à tous. 
Merci pour vos réponses. 
On m'a indiqué que je pouvais utiliser "Spawn" dans GNAT.OS_Lib  . 
 
Celà donne :  
.................................... 
with GNAT.OS_Lib; 
use GNAT.OS_Lib; 
 
procedure a  
is 
b:boolean; 
arg : Argument_List ( 1..1 ); 
dir : aliased string := "http://www.free.fr"; 
begin 
      arg(1) := dir'unchecked_access; 
   Spawn ("C:\Program Files\Internet Explorer\IEXPLORE.EXE",arg,b); 
end a; 
........................................ 
 
Je cherche maintenant comment contrôler la taille de la fenêtre et aussi comment réactualiser automatiquement cette fenêtre.
Marsh Posté le 07-08-2004 à 14:18:28
ce truc est vraiment pas mal. j'avais entendu parler de Spawn mais je ne savais pas comment l'utiliser. merci !
Marsh Posté le 11-08-2004 à 13:58:08
Salut ! 
J'ai trouvé comment controler la taille de la fenetre: 
Celà donne: 
... 
Spawn ("C:\Program Files\Internet   
                    Explorer\IEXPLORE.EXE -k",arg,b);  
... 
 
Celà affiche la page web en mode plein écran. 
Réactualisation automatique ?
Marsh Posté le 11-08-2004 à 15:08:24
En fait, j'utilise Windows98 mais sour XP, j'ai vu qu'on pouvait utiliser "taskkill" pour tuer un processus (donc la possibilité de recréer une fenetre après). 
Existe-t-il un équivalent sous 98 ?
Marsh Posté le 29-08-2004 à 22:10:17
Salut à tous ! 
 
Milles excuses à ceux auxquels j'ai oublié de répondre auparavant. 
J'ai trouvé ce que je cherchais. 
Petit exemple : 
 
with System; 
with ada.text_io; use ada.text_io; 
 
procedure z   
is   
   type tableau is array (0..800,0..600) of integer; 
   t:tableau; 
   pragma Linker_Options ("-luser32 -lgdi32" ); 
   subtype HDC is System.Address; 
   subtype HWND is System.Address; 
   my_hdc:HDC; 
   my_hwnd:HWND; 
   c:integer; 
   bool:boolean; 
   function GetDC (my_hwnd0 : HWND) return HDC; 
   pragma Import (Stdcall, GetDC,"GetDC" ); 
   function GetPixel (my_hdc0:HDC;x:integer;y:integer) return integer; 
   pragma Import (Stdcall, GetPixel,"GetPixel" ); 
   function setPixelv (my_hdc0:HDC;x:integer;y:integer;c:integer) return boolean; 
   pragma Import (Stdcall, SetPixelV,"SetPixelV" ); 
begin 
   my_hdc:=getdc (System.Null_Address); 
   for i in 0..800 
   loop 
      for j in 0..600 
      loop 
         c:=getpixel (my_hdc,i,j); 
         t(i,j):=c;               
      end loop; 
   end loop; 
   for i in 0..800 
   loop 
      for j in 0..600 
      loop 
         bool:=setpixelv (my_hdc,i,j,t(i,j)+200);          
      end loop; 
   end loop; 
end z; 
 
A+
Marsh Posté le 01-08-2004 à 15:38:24
Comment lancer une application extérieure à partir d'ADA ?