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
» Logiciel de planétarium.
variable système HANDLE_APPLICATION Emptypar Pedro Sam 23 Nov 2024 - 15:50

» Un autre pense-bête...
variable système HANDLE_APPLICATION Emptypar Froggy One Jeu 21 Nov 2024 - 15:54

» Récupération du contenu d'une page html.
variable système HANDLE_APPLICATION Emptypar Pedro Sam 16 Nov 2024 - 14:04

» Décompilation
variable système HANDLE_APPLICATION Emptypar JL35 Mar 12 Nov 2024 - 19:57

» Un album photos comme du temps des grands-mères
variable système HANDLE_APPLICATION Emptypar jjn4 Mar 12 Nov 2024 - 17:23

» traitement d'une feuille excel
variable système HANDLE_APPLICATION Emptypar jjn4 Jeu 7 Nov 2024 - 3:52

» Aide-mémoire mensuel
variable système HANDLE_APPLICATION Emptypar jjn4 Lun 4 Nov 2024 - 18:56

» Des incomprèhension avec Timer
variable système HANDLE_APPLICATION Emptypar Klaus Mer 30 Oct 2024 - 18:26

» KGF_dll - nouvelles versions
variable système HANDLE_APPLICATION Emptypar Klaus Mar 29 Oct 2024 - 17:58

» instructions panoramic
variable système HANDLE_APPLICATION Emptypar maelilou Lun 28 Oct 2024 - 19:51

» Figures fractales
variable système HANDLE_APPLICATION Emptypar Marc Ven 25 Oct 2024 - 12:18

» Panoramic et Scanette
variable système HANDLE_APPLICATION Emptypar Yannick Mer 25 Sep 2024 - 22:16

» Editeur d étiquette avec QR évolutif
variable système HANDLE_APPLICATION Emptypar JL35 Lun 23 Sep 2024 - 22:40

» BUG QR Code DelphiZXingQRCode
variable système HANDLE_APPLICATION Emptypar Yannick Dim 22 Sep 2024 - 11:40

» fichier.exe
variable système HANDLE_APPLICATION Emptypar leclode Ven 20 Sep 2024 - 19:02

Navigation
 Portail
 Index
 Membres
 Profil
 FAQ
 Rechercher
Rechercher
 
 

Résultats par :
 
Rechercher Recherche avancée
Novembre 2024
LunMarMerJeuVenSamDim
    123
45678910
11121314151617
18192021222324
252627282930 
CalendrierCalendrier
Le Deal du moment : -55%
Friteuse sans huile – PHILIPS – Airfryer ...
Voir le deal
49.99 €

 

 variable système HANDLE_APPLICATION

Aller en bas 
4 participants
AuteurMessage
Klaus

Klaus


Nombre de messages : 12331
Age : 75
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 : 8635
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 : 7017
Age : 74
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 : 12331
Age : 75
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 : 2394
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 : 12331
Age : 75
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 : 7017
Age : 74
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
-
» Nouvelle variable système: IS_PANORAMIC_COMPILED
» variable systeme event_object
» 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: