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 ?