FORUM DE DISCUSSION SUR LE LANGAGE PANORAMIC
Vous souhaitez réagir à ce message ? Créez un compte en quelques clics ou connectez-vous pour continuer.
FORUM DE DISCUSSION SUR LE LANGAGE PANORAMIC

Développement d'applications avec le langage Panoramic
 
AccueilAccueil  RechercherRechercher  Dernières imagesDernières images  S'enregistrerS'enregistrer  MembresMembres  Connexion  
Derniers sujets
» trop de fichiers en cours
variable système HANDLE_APPLICATION Emptypar lepetitmarocain Aujourd'hui à 10:43

» Aide de PANORAMIC
variable système HANDLE_APPLICATION Emptypar papydall Aujourd'hui à 4:21

» Je teste PANORAMIC V 1 beta 1
variable système HANDLE_APPLICATION Emptypar papydall Aujourd'hui à 4:17

» select intégrés
variable système HANDLE_APPLICATION Emptypar jjn4 Hier à 18:33

» PANORAMIC V 1
variable système HANDLE_APPLICATION Emptypar Klaus Hier à 9:53

» bouton dans autre form que 0
variable système HANDLE_APPLICATION Emptypar leclode Lun 6 Mai 2024 - 13:59

» KGF_dll - nouvelles versions
variable système HANDLE_APPLICATION Emptypar Klaus Lun 6 Mai 2024 - 11:41

» Gestion d'un système client-serveur.
variable système HANDLE_APPLICATION Emptypar Klaus Lun 6 Mai 2024 - 10:23

» Editeur EliP 6 : Le Tiny éditeur avec 25 onglets de travail
variable système HANDLE_APPLICATION Emptypar Froggy One Jeu 2 Mai 2024 - 11:16

» @Jack
variable système HANDLE_APPLICATION Emptypar Jack Mar 30 Avr 2024 - 20:40

» Une calculatrice en une ligne de programme
variable système HANDLE_APPLICATION Emptypar jean_debord Dim 28 Avr 2024 - 8:47

» Form(résolu)
variable système HANDLE_APPLICATION Emptypar leclode Sam 27 Avr 2024 - 17:59

» Bataille navale SM
variable système HANDLE_APPLICATION Emptypar jjn4 Ven 26 Avr 2024 - 17:39

» Les maths du crocodile
variable système HANDLE_APPLICATION Emptypar jean_debord Jeu 25 Avr 2024 - 10:37

» Naissance de Crocodile Basic
variable système HANDLE_APPLICATION Emptypar jean_debord Jeu 25 Avr 2024 - 8:45

Navigation
 Portail
 Index
 Membres
 Profil
 FAQ
 Rechercher
Rechercher
 
 

Résultats par :
 
Rechercher Recherche avancée
Mai 2024
LunMarMerJeuVenSamDim
  12345
6789101112
13141516171819
20212223242526
2728293031  
CalendrierCalendrier
-39%
Le deal à ne pas rater :
Pack Home Cinéma Magnat Monitor : Ampli DENON AVR-X2800H, Enceinte ...
1190 € 1950 €
Voir le deal

 

 variable système HANDLE_APPLICATION

Aller en bas 
4 participants
AuteurMessage
Klaus

Klaus


Nombre de messages : 12293
Age : 74
Localisation : Ile de France
Date d'inscription : 29/12/2009

variable système HANDLE_APPLICATION Empty
MessageSujet: variable système HANDLE_APPLICATION   variable système HANDLE_APPLICATION EmptyDim 29 Mai 2016 - 23:18

Pour diverses raisons techniques, j'aurais besoin de connaître le handle de l'application (Application.Handle en Delphi), du programme Panoramic. Ceci est bien entendu différent du handle de la form 0. Alors, j'aimerais avoir une variable système HANDLE_APPLICATION (ou une fonction HANDLE_APPLICATION sans paramètres), retournant cette valeur. Je pourrais ainsi passer cette valeur à ma DLL via une fonction d'initialisation, la mémoriser dans une variable interne à la DLL et l'utiliser en cas de besoin.
Revenir en haut Aller en bas
http://klauspanoramic.comxa.com/index.html
Yannick




Nombre de messages : 8610
Age : 53
Localisation : Bretagne
Date d'inscription : 15/02/2010

variable système HANDLE_APPLICATION Empty
MessageSujet: re   variable système HANDLE_APPLICATION EmptyLun 30 Mai 2016 - 13:33

Tout ce qui peut faire avancer KGF, je suis pour.
donc +1

Laughing
Revenir en haut Aller en bas
papydall

papydall


Nombre de messages : 7006
Age : 73
Localisation : Moknine (Tunisie) Entre la chaise et le clavier
Date d'inscription : 03/03/2012

variable système HANDLE_APPLICATION Empty
MessageSujet: Re: variable système HANDLE_APPLICATION   variable système HANDLE_APPLICATION EmptyLun 30 Mai 2016 - 16:14

Salut tout le monde
@Klaus
J’ai trouvé ce code en delphi qui permet de lancer ou récupérer le handle d'une application.
Je l’ai testé pour lancer la calculatrice (calc.exe), le bloc-notes (notepad.exe), Panoramic_Editor.exe, etc..



Code:

unit Unit1;

//EXEMPLE POUR LANCER OU RECUPERER LA FENETRE D'UNE APLICATION}
// Cet exemple montre comment executer un programme ou récupérer la fenetre handle
// si celui-ci est déjà lancé executé.

interface

uses
  Windows, Messages, SysUtils, Classes, Graphics, Controls, Forms, Dialogs,
  StdCtrls,
  // Rajouter ces deux unites à la clause USES
  TLHelp32, ShellAPI;

type
  TForm1 = class(TForm)
    Edit1: TEdit;
    Button1: TButton;
    procedure Button1Click(Sender: TObject);
    procedure FormCreate(Sender: TObject);
  private
    { Private declarations }
  public
    { Public declarations }
  end;

var Form1: TForm1;

implementation

{$R *.DFM}

procedure TForm1.FormCreate(Sender: TObject);
begin
  Edit1.Text := 'C:\Users\acer\Desktop\Panoramic\Panoramic_Editor_V_0.9.27i7.exe';
end;

// RENVOIE L'ID DU PROCESS
//------------------------
Function ExeRunning (NomApplication : string) : Cardinal;
var ProcListExec : TProcessentry32;
    PrhListExec : Thandle;
    Flag : Boolean;
begin
  Result := 0;
  // on definit la taille du processus
  ProcListExec.dwSize:=sizeof(ProcListExec);
  Try
    // on prend une photo des processus en cours
    PrhListExec := CreateToolhelp32Snapshot(TH32CS_SNAPALL,0);
    if (PrhListExec <> INVALID_HANDLE_VALUE) then
      begin
        Flag := True;
        // on liste les process à la maniere d'un FINDFIRST}
        Process32First(PrhListExec,ProcListExec);
        while Flag = True do
          begin
            //on compare le nom des deux executable, si c'est les même on a trouvé le numéro du processus
            if (Uppercase(ExtractFileName(ProcListExec.szExeFile)) = Uppercase(ExtractFileName (NomApplication))) then
              Begin
                Result := ProcListExec.th32ProcessID;
                Flag := False;
              end
            else Flag := Process32Next(PrhListExec,ProcListExec);
          end;
      end;
  Finally
    CloseHandle(PrhListExec);
  end;
end;

// ENUMERATION DES FENETRES PAR RAPPORT AU PROCESS
function EnumByProcess(handeul : HWND; lParam : Cardinal): boolean; stdcall;
var pPid : LPDWord;
begin
  if handeul <> 0 then
    begin
      // On recupere le numero de process d'apres le handle que nous renvoie ENUMWINDOWS
      GetWindowThreadProcessId(handeul,pPid);
      // Si les deux numero de processus coincide
      if pPid^ = LParam then
        // Et si la fenetre PEUT etre visible par l'utilisateur alors on l'affiche
        if IsWindowVisible (handeul) then ShowWindow (Handeul, SW_RESTORE);
      result := true;
    end
  else Result := False
end;

procedure TForm1.Button1Click(Sender: TObject);
Var ExecTmp : Array[0..254] of Char;
    Executable : PChar;
    IdProcess : Cardinal;
begin
  FillChar (ExecTmp, SizeOf (ExecTmp),0);
  IdProcess := ExeRunning (Edit1.Text);
  if IdProcess = 0 then
    Begin
      StrPLCopy(ExecTmp,Edit1.Text,Length (TRIM(Edit1.Text)));
      Executable := @ExecTmp;
      // Cet exemple n'utilise que des programmes sans parametre et sans
      // répertoire de travail specifique
      ShellExecute (Handle,'open',Executable, Nil, Nil,SW_SHOWMAXIMIZED);
    End
  else EnumWindows(@EnumByProcess,IdProcess);
end;

end.
Revenir en haut Aller en bas
http://papydall-panoramic.forumarabia.com/
Klaus

Klaus


Nombre de messages : 12293
Age : 74
Localisation : Ile de France
Date d'inscription : 29/12/2009

variable système HANDLE_APPLICATION Empty
MessageSujet: Re: variable système HANDLE_APPLICATION   variable système HANDLE_APPLICATION EmptyLun 30 Mai 2016 - 18:53

Merci de ton aide, Papydall. Je connaissais ce code, et il est d'ailleurs intégré dans certaines fonctions de KGF.dll. Mais le gros problème, c'est qu'il donne le handle de la fenêtre principale, pas celui de l'application !

Tu me diras "mais quelle est la différence" ? Eh bien, cela tient à une particularité de Delphi. Depuis les débuts de Delphi, une fenêtre entièrement cachée est créée. Cette fenêtre s'appelle "application". C'est peu comme un "parking window" dans d'autres types d'application, comme Word, Firefox etc. C''est cette fenêtre nommée application qui analyse et traire tous les messages Windows qui sont envoyés à un programme Delphi, avant éventuellement de les dispatcher aux objets subordonnées. Le premier de ces objets subordonnés est la form 0, qui est une form Windows sans parent, mais gérée par la fenêtre application.

Tout ceci est géré automatiquement par le programme Delphi généré par le compilateur. Ceci permet par exemple d'avoir un programme Delphi sans GUI (sans fenêtre ni autres objets visibles), s'exécutant en arrière-plan sans interaction avec l'utilisateur, et pourtant capable de recevoir des messages Windows et d'y réagir.

Or, dans sa version Windows, Panoramic est réalisé en Delphi. Et donc, tout programme Panoramic créé par l'éditeur Panoramic est en réalité un programme Delphi (l'interpréteur ou le noyau) avec des données représentant le code source Panoramic. Et dans certains cas, il faut connaître le handle de la fenêtre cachée du programme qui est la véritable base du programme. Juste un exemple: pour accéder à l'icône du programme Panoramic dans la barre des tâches de Windows (pour la cacher, la faire pulser, lui donner un menu contextuel, ...), il faut absolument connaître le handle de l'application. Celui de la form 0 ne fait pas l'affaire. Mais des exemples comme ça, il y en a plein.

Voici ce qui justifie ma requête auprès de Jack.
Revenir en haut Aller en bas
http://klauspanoramic.comxa.com/index.html
Jack
Admin
Jack


Nombre de messages : 2386
Date d'inscription : 28/05/2007

variable système HANDLE_APPLICATION Empty
MessageSujet: Re: variable système HANDLE_APPLICATION   variable système HANDLE_APPLICATION EmptyLun 30 Mai 2016 - 19:06

Je suis en train de coder HANDLE_APPLICATION qui fera son apparition à la prochaine version instantanée.

_________________
variable système HANDLE_APPLICATION Webdav username : panoramic@jack-panoramic password : panoramic123
Revenir en haut Aller en bas
https://panoramic.1fr1.net
Klaus

Klaus


Nombre de messages : 12293
Age : 74
Localisation : Ile de France
Date d'inscription : 29/12/2009

variable système HANDLE_APPLICATION Empty
MessageSujet: Re: variable système HANDLE_APPLICATION   variable système HANDLE_APPLICATION EmptyLun 30 Mai 2016 - 19:18

Super ! Merci beaucoup, Jack !
Revenir en haut Aller en bas
http://klauspanoramic.comxa.com/index.html
papydall

papydall


Nombre de messages : 7006
Age : 73
Localisation : Moknine (Tunisie) Entre la chaise et le clavier
Date d'inscription : 03/03/2012

variable système HANDLE_APPLICATION Empty
MessageSujet: Re: variable système HANDLE_APPLICATION   variable système HANDLE_APPLICATION EmptyLun 30 Mai 2016 - 21:07

Jack is  handling the handle.
Good news ! cheers
Revenir en haut Aller en bas
http://papydall-panoramic.forumarabia.com/
Contenu sponsorisé





variable système HANDLE_APPLICATION Empty
MessageSujet: Re: variable système HANDLE_APPLICATION   variable système HANDLE_APPLICATION Empty

Revenir en haut Aller en bas
 
variable système HANDLE_APPLICATION
Revenir en haut 
Page 1 sur 1
 Sujets similaires
-
» variable systeme event_object
» Nouvelle variable système: IS_PANORAMIC_COMPILED
» Nouvelle variable système NUMBER_CLOSE
» Version instantanée du 17 juillet 2011: PANORAMIC V 0.9.22i1
» 2ème "dim" sur variable EFFACE la variable

Permission de ce forum:Vous ne pouvez pas répondre aux sujets dans ce forum
FORUM DE DISCUSSION SUR LE LANGAGE PANORAMIC :: PANORAMIC :: Vos souhaits d'amélioration de Panoramic-
Sauter vers: