Comment lancer une application extérieure à partir d'ADA ?

Comment lancer une application extérieure à partir d'ADA ? - Ada - Programmation

Marsh Posté le 01-08-2004 à 15:38:24    

:jap:  
Comment lancer une application extérieure à partir d'ADA ?

Reply

Marsh Posté le 01-08-2004 à 15:38:24   

Reply

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 l’association 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 l’instruction 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.

Reply

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

Reply

Marsh Posté le 04-08-2004 à 17:49:27    

ce n'est pas ada.interfaces.c mais Interfaces.C tout cours

Reply

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.

Reply

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 !

Reply

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 ?

Reply

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 ?

Reply

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+

Reply

Sujets relatifs:

Leave a Replay

Make sure you enter the(*)required information where indicate.HTML code is not allowed