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
» Gestion d'un système client-serveur.
KGF_dll - nouvelles versions - Page 9 Emptypar Klaus Ven 17 Mai 2024 - 14:02

» item_index(résolu)
KGF_dll - nouvelles versions - Page 9 Emptypar jjn4 Mar 14 Mai 2024 - 19:38

» Bataille terrestre
KGF_dll - nouvelles versions - Page 9 Emptypar jjn4 Lun 13 Mai 2024 - 15:01

» SineCube
KGF_dll - nouvelles versions - Page 9 Emptypar Marc Sam 11 Mai 2024 - 12:38

» Editeur EliP 6 : Le Tiny éditeur avec 25 onglets de travail
KGF_dll - nouvelles versions - Page 9 Emptypar Marc Sam 11 Mai 2024 - 12:22

» Philharmusique
KGF_dll - nouvelles versions - Page 9 Emptypar jjn4 Ven 10 Mai 2024 - 13:58

» PANORAMIC V 1
KGF_dll - nouvelles versions - Page 9 Emptypar papydall Jeu 9 Mai 2024 - 3:22

» select intégrés [résolu]
KGF_dll - nouvelles versions - Page 9 Emptypar jjn4 Mer 8 Mai 2024 - 17:00

» number_mouse_up
KGF_dll - nouvelles versions - Page 9 Emptypar jjn4 Mer 8 Mai 2024 - 11:59

» Aide de PANORAMIC
KGF_dll - nouvelles versions - Page 9 Emptypar jjn4 Mer 8 Mai 2024 - 11:16

» trop de fichiers en cours
KGF_dll - nouvelles versions - Page 9 Emptypar lepetitmarocain Mer 8 Mai 2024 - 10:43

» Je teste PANORAMIC V 1 beta 1
KGF_dll - nouvelles versions - Page 9 Emptypar papydall Mer 8 Mai 2024 - 4:17

» bouton dans autre form que 0(résolu)
KGF_dll - nouvelles versions - Page 9 Emptypar leclode Lun 6 Mai 2024 - 13:59

» KGF_dll - nouvelles versions
KGF_dll - nouvelles versions - Page 9 Emptypar Klaus Lun 6 Mai 2024 - 11:41

» @Jack
KGF_dll - nouvelles versions - Page 9 Emptypar Jack Mar 30 Avr 2024 - 20:40

Navigation
 Portail
 Index
 Membres
 Profil
 FAQ
 Rechercher
Rechercher
 
 

Résultats par :
 
Rechercher Recherche avancée
Mai 2024
LunMarMerJeuVenSamDim
  12345
6789101112
13141516171819
20212223242526
2728293031  
CalendrierCalendrier
Le deal à ne pas rater :
Cartes Pokémon EV6.5 : où trouver le Bundle Lot 6 Boosters Fable ...
Voir le deal

 

 KGF_dll - nouvelles versions

Aller en bas 
+6
papydall
Marc
jean_debord
Minibug
JP06
Klaus
10 participants
Aller à la page : Précédent  1 ... 6 ... 8, 9, 10 ... 14  Suivant
AuteurMessage
Klaus

Klaus


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

KGF_dll - nouvelles versions - Page 9 Empty
MessageSujet: Re: KGF_dll - nouvelles versions   KGF_dll - nouvelles versions - Page 9 EmptyJeu 5 Mai 2022 - 23:18

A priori, je suggèrerais ceci:
Code:
dim ExternalOrigin% : ExternalOrigin% = hex("FF000000")
dim origine%
...
Userevent:

   WParam% = USER_EVENT_WPARAM
   LParam% = USER_EVENT_LPARAM

   origine% = BIN_AND(USER_EVENT_WPARAM,MaskOrigin%)
   actevent% = BIN_AND(WParam%,MaskOperation%)/65536
   if origine%=ExternalOrigine%    : ' ici, on a un évènement externe
    if actevent%=hex("00010000")  : ' est-ce la commande pour NORMAL ?
      nomal 0
    end_if
    ... ici, traiter éventuellement d'autres codes action
    ...
  
   end_if
 
   if origine%<>0 then return
      
   OFF_USER_EVENT
  
   DesactiveProprietes()

   SELECT actevent%  
    
      CASE 3
         objevent% = BIN_AND(WParam%,MaskPanoramic%)
         llevent%  = BIN_AND(LParam%,MaskHigh%)/65536
         ttevent%  = BIN_AND(LParam%,MaskLow%)    
        
         LEFT objevent%,llevent% : TEXT EditProp%(1,2),STR$(llevent%) : SauvegardeGridCopie(1,2)
         TOP objevent%,ttevent% : TEXT EditProp%(1,3),STR$(ttevent%) : SauvegardeGridCopie(1,3)  
    
      CASE 4
         objevent% = BIN_AND(WParam%,MaskPanoramic%)
         wwevent%  = BIN_AND(LParam%,MaskHigh%)/65536
         hhevent%  = BIN_AND(LParam%,MaskLow%)
        
         WIDTH objevent%,wwevent% : TEXT EditProp%(1,4),STR$(wwevent%) : SauvegardeGridCopie(1,4)
         HEIGHT objevent%,hhevent% : TEXT EditProp%(1,5),STR$(hhevent%) : SauvegardeGridCopie(1,5)

   END_SELECT
        
   ActiveProprietes()

   ON_USER_EVENT Userevent
  
RETURN
Revenir en haut Aller en bas
http://klauspanoramic.comxa.com/index.html
Minibug

Minibug


Nombre de messages : 4566
Age : 57
Localisation : Vienne (86)
Date d'inscription : 09/02/2012

KGF_dll - nouvelles versions - Page 9 Empty
MessageSujet: Re: KGF_dll - nouvelles versions   KGF_dll - nouvelles versions - Page 9 EmptyJeu 5 Mai 2022 - 23:58

Bon ça ne marche pas ! Mais déjà il n'y a pas de plantage ni bug.

Je regarderai demain car là il faut que j'aille me coucher...

Merci Klaus. Bonne nuit et à demain.
Revenir en haut Aller en bas
http://gpp.panoramic.free.fr
Minibug

Minibug


Nombre de messages : 4566
Age : 57
Localisation : Vienne (86)
Date d'inscription : 09/02/2012

KGF_dll - nouvelles versions - Page 9 Empty
MessageSujet: Re: KGF_dll - nouvelles versions   KGF_dll - nouvelles versions - Page 9 EmptyVen 6 Mai 2022 - 8:04

Bonjour Klaus,

Voici un point les codes enregistrés.

Bien sûr les variables, les labels sont déclarés en début de programme et le ON_USER_EVENT aussi dans les 2 codes.

J'ai aussi déclaré dans le Constructeur comme tu me l'as indiqué :
DIM WParam%, LParam%
DIM ExternalOrigine% : ExternalOrigine%=HEX("FF000000")
DIM origine%



Pour l'Editeur :

Code:


UserEvent:
 
   MESSAGE "Userevent Editeur"

   WParam%=USER_EVENT_WPARAM
   LParam%=USER_EVENT_LPARAM
 
   IF BIN_AND(WParam%,HEX("FF000000"))=HEX("FF000000")                          : ' est-ce un USER_EVENT envoyé part un programme Panoramic externe ?
      IF BIN_AND(LParam%,HEX("00FF0000"))=HEX("00010000")                       : ' est-ce la commande pour NORMAL ?
         NORMAL 0 : MESSAGE "NORMAL 0"
      END_IF
   END_IF
    
RETURN

' ==============================================================================

' ----- BASCULEMENT VERS LE CONSTRUCTEUR -----
SUB BasculeVersConstructeur()
  
   DIM_LOCAL chem$ , hnd% , exe$ , res% , wpar%, lpar%

   exe$="Constructeur.exe" : hnd%=dll_call1("GetProcessWindowHandle",adr(exe$))
  
   IF hnd%=0
      chem$=DIR_CURRENT$+"\Constructeur.exe" : EXECUTE chem$ : PAUSE 200
   ELSE          
      wpar%=HEX("FF010000")
      lpar%=0
      res%=DLL_CALL2("SendUserEvent",wpar%,lpar%)
   END_IF
  
   MINIMIZE 0
  
END_SUB


Et pour le Constructeur :

Code:


Userevent:

   MESSAGE "Userevent Constructeur"

   WParam% = USER_EVENT_WPARAM
   LParam% = USER_EVENT_LPARAM

   origine% = BIN_AND(USER_EVENT_WPARAM,MaskOrigin%)
   actevent% = BIN_AND(WParam%,MaskOperation%)/65536
  
   IF origine%=ExternalOrigine%                                                 : ' ici, on a un évènement externe
      IF actevent%=hex("00010000")                                              : ' est-ce la commande pour NORMAL ?
         NORMAL 0 : MESSAGE "NORMAL 0"
       END_IF
       ' ici, traiter éventuellement d'autres codes action
   END_IF
 
   IF origine%<>0 THEN RETURN
      
   OFF_USER_EVENT
  
   DesactiveProprietes()

   SELECT actevent%  
    
      CASE 3
         objevent% = BIN_AND(WParam%,MaskPanoramic%)
         llevent%  = BIN_AND(LParam%,MaskHigh%)/65536
         ttevent%  = BIN_AND(LParam%,MaskLow%)    
        
         LEFT objevent%,llevent% : TEXT EditProp%(1,2),STR$(llevent%) : SauvegardeGridCopie(1,2)
         TOP objevent%,ttevent% : TEXT EditProp%(1,3),STR$(ttevent%) : SauvegardeGridCopie(1,3)  
    
      CASE 4
         objevent% = BIN_AND(WParam%,MaskPanoramic%)
         wwevent%  = BIN_AND(LParam%,MaskHigh%)/65536
         hhevent%  = BIN_AND(LParam%,MaskLow%)
        
         WIDTH objevent%,wwevent% : TEXT EditProp%(1,4),STR$(wwevent%) : SauvegardeGridCopie(1,4)
         HEIGHT objevent%,hhevent% : TEXT EditProp%(1,5),STR$(hhevent%) : SauvegardeGridCopie(1,5)

   END_SELECT
        
   ActiveProprietes()

   ON_USER_EVENT Userevent
  
RETURN

' ==============================================================================

' ----- BASCULEMENT VERS LE CONSTRUCTEUR -----
SUB BasculeVersEditeur()

   DIM_LOCAL chem$ , hnd% , exe$ , res% , wpar%, lpar%

   exe$="Editeur.exe" : hnd%=DLL_CALL1("GetProcessWindowHandle",ADR(exe$))
  
   IF hnd%=0
      chem$=DIR_CURRENT$+"\Editeur.exe" : EXECUTE chem$ : PAUSE 200
   ELSE
      wpar%=HEX("FF010000")
      lpar%=0
      res%=DLL_CALL2("SendUserEvent",wpar%,lpar%)
   END_IF
  
   MINIMIZE 0

END_SUB


J'ai mis des messages pour voir ce qu'il se passe et voilà le résultat :

Lorsque l'Editeur et le Constructeur sont ouvert tout les 2 :
Si je me positionne sur l'Editeur et je clique sur basculer vers le constructeur c'est la routine UserEvent de l'Editeur qui se déclenche.
Si je me positionne sur le Constructeur et je clique sur basculer vers l'Editeur c'est la routine UserEvent du Constructeur qui se déclenche.

Cela ne me semble pas normal !
Et aucune des 2 routines ne passent par MESSAGE "NORMAL 0"

Voilà pour le moment ou j'en suis. Je te souhaite une bonne journée. sunny
Revenir en haut Aller en bas
http://gpp.panoramic.free.fr
Klaus

Klaus


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

KGF_dll - nouvelles versions - Page 9 Empty
MessageSujet: Re: KGF_dll - nouvelles versions   KGF_dll - nouvelles versions - Page 9 EmptyVen 6 Mai 2022 - 9:49

Ok. Alors recharge KGF.dll et essaie ceci:

programme AAA:
Code:
' test_GetCurrentWindowState.bas

label rappeler, tester
dim res%, hnd%, titre$, wpar%, lpar%
titre$ = "BBB"

caption 0,"AAA"
alpha 1 : top 1,10 : left 1,10 : caption 1,"Handle du programme BBB:"
edit 2 : top 2,40 : left 2,10 : width 2,100
button 3 : top 3,70 : left 3,10 : caption 3,"Rappeler BBB"
  on_click 3,rappeler
button 4 : top 4,70 : left 4,110 : caption 4,"Tester BBB"
  on_click 4,tester
dll_on "KGF.dll"
end 
 
rappeler:
  hnd% = dll_call2("GetWindowByTitle",0,adr(titre$))
  text 2,str$(hnd%)
 
  res% = dll_call1("ForceWindowToForeground",hnd%)
  wpar% = hex("FF010000")
  lpar% = 0
  res% = dll_call3("SendUserEventToExternal",hnd%,wpar%,lpar%)
  return

tester:
  hnd% = dll_call2("GetWindowByTitle",0,adr(titre$))
  text 2,str$(hnd%)
  res% = dll_call1("GetCurrentWindowState",hnd%)
  select res%
    case -1: message "erreur"
    case  0: message "état normal"
    case  1: message "état minimisé"
    case  2: message "état maximisé"
  end_select
  return

et programme BBB:
Code:
' test_GetCurrentWindowState_BBB.bas

label minimiser, maximiser, Userevent

dim res%, actevent%, llevent%, tlevent%, wevent%, hevent%, origine%, WParam%, LParam%

dim m1% : m1% = 0 - 1
dim ExternalOrigin% : ExternalOrigin% = hex("FF000000")
dim MaskOrigin% : MaskOrigin% = hex("FF000000")
dim MaskOperation% : MaskOperation% = hex("00FF0000")
dim MaskHigh% : MaskHigh% = hex("FFFF0000")
dim MaskLow%  : MaskLow% = hex("0000FFFF")
' dim MaskPanoramic% : MaskPanoramic% = hex("00000000")

caption 0,BBB
alpha 2 : top 2,10 : left 2,10 : caption 2,"Handle(0):"
edit 1 : top 1,40 : left 1,10 : text 1,str$(handle(0))

button 3 : top 3,80 : left 3,10 : caption 3,"Minimiser"
  on_click 3,minimiser
button 4 : top 4,80 : left 4,110 : caption 4,"Maximiser"
  on_click 4,maximiser
 
on_user_event Userevent
 
end

minimiser:
  minimize 0
  return

maximiser:
  maximize 0
  return

Userevent:

  WParam% = USER_EVENT_WPARAM
  LParam% = USER_EVENT_LPARAM

  origine% = BIN_AND(WParam%,MaskOrigin%)
  actevent% = BIN_AND(WParam%,MaskOperation%)/65536
 
  if origine%=ExternalOrigin%    : ' ici, on a un évènement externe
    if actevent%=1                : ' est-ce la commande pour NORMAL ?
      normal 0
      return
    end_if
    ' ... ici, traiter éventuellement d'autres codes action
    ' ...
 
  end_if
 
  if origine%<>0 then return
     
  OFF_USER_EVENT
 
  ' DesactiveProprietes()

  SELECT actevent% 
   
      CASE 3
        objevent% = BIN_AND(WParam%,MaskPanoramic%)
        llevent%  = BIN_AND(LParam%,MaskHigh%)/65536
        ttevent%  = BIN_AND(LParam%,MaskLow%)   
       
        LEFT objevent%,llevent% : TEXT EditProp%(1,2),STR$(llevent%) : SauvegardeGridCopie(1,2)
        TOP objevent%,ttevent% : TEXT EditProp%(1,3),STR$(ttevent%) : SauvegardeGridCopie(1,3) 
   
      CASE 4
        objevent% = BIN_AND(WParam%,MaskPanoramic%)
        wwevent%  = BIN_AND(LParam%,MaskHigh%)/65536
        hhevent%  = BIN_AND(LParam%,MaskLow%)
       
        WIDTH objevent%,wwevent% : TEXT EditProp%(1,4),STR$(wwevent%) : SauvegardeGridCopie(1,4)
        HEIGHT objevent%,hhevent% : TEXT EditProp%(1,5),STR$(hhevent%) : SauvegardeGridCopie(1,5)

  END_SELECT
       
  ' ActiveProprietes()

  ON_USER_EVENT Userevent
 
RETURN

Le programme BBB est celui qui peut être minimisé, soit par le bouton (utilise la commande MINIMIE de Panoramic) soit par l'icône dans la barre de titre.

Le programme AAA rappelle le programme BBB caché, quelque soit le moyen par lequel il a été minimisé.
Revenir en haut Aller en bas
http://klauspanoramic.comxa.com/index.html
Minibug

Minibug


Nombre de messages : 4566
Age : 57
Localisation : Vienne (86)
Date d'inscription : 09/02/2012

KGF_dll - nouvelles versions - Page 9 Empty
MessageSujet: Re: KGF_dll - nouvelles versions   KGF_dll - nouvelles versions - Page 9 EmptyVen 6 Mai 2022 - 10:55

Bonjour Klaus

Bonne nouvelle... Ca fonctionne parfaitement ! cheers

Je tenterai me mettre en place tout à l'heure dans mes 2 programmes.

Merci Klaus ! flower
Revenir en haut Aller en bas
http://gpp.panoramic.free.fr
Minibug

Minibug


Nombre de messages : 4566
Age : 57
Localisation : Vienne (86)
Date d'inscription : 09/02/2012

KGF_dll - nouvelles versions - Page 9 Empty
MessageSujet: Re: KGF_dll - nouvelles versions   KGF_dll - nouvelles versions - Page 9 EmptyVen 6 Mai 2022 - 12:57

Je viens de reprendre mes 2 codes avec tout ce que tu as indiqué et ça le fonctionne toujours pas.
J'ai passé encore 1h à tout modifier. Je n'ai plus le temps je dois y aller.

A ce soir pour la suite.... Wink
Revenir en haut Aller en bas
http://gpp.panoramic.free.fr
Minibug

Minibug


Nombre de messages : 4566
Age : 57
Localisation : Vienne (86)
Date d'inscription : 09/02/2012

KGF_dll - nouvelles versions - Page 9 Empty
MessageSujet: Re: KGF_dll - nouvelles versions   KGF_dll - nouvelles versions - Page 9 EmptyVen 6 Mai 2022 - 19:29

Bonsoir Klaus

Pas encore eu le temps de regarder. Je vais faire ça dans la soirée...

En fait pour le moment Il ne se passe rien. Mais en même temps il n'y a pas de bug ! Laughing

Mais je vais vérifier les paramètres et chaque ligne de code que tu indique.
Et ensuite si nécessaire, je te glisserai les codes...

J'avoue qu'avec le USER_EVENT c'est un peu plus délicat à installer mais si ça peut marcher ça sera génial !

A tout à l'heure. Wink
Revenir en haut Aller en bas
http://gpp.panoramic.free.fr
Minibug

Minibug


Nombre de messages : 4566
Age : 57
Localisation : Vienne (86)
Date d'inscription : 09/02/2012

KGF_dll - nouvelles versions - Page 9 Empty
MessageSujet: Re: KGF_dll - nouvelles versions   KGF_dll - nouvelles versions - Page 9 EmptyVen 6 Mai 2022 - 21:34

Bonsoir Klaus. Je fais enfin un retour !

Bon, la bonne nouvelle c'est que j'ai réussi à mettre en place le système avec mes 2 programmes : Editeur et Constructeur. cheers
Ce qui est plus étrange c'est que je dois rajouter un message après la ligne de récupération du handle comme ceci :

exe$="Constructeur.exe"
hnd%=dll_call1("GetProcessWindowHandle",adr(exe$))

MESSAGE "Handle "+STR$(hnd%)


Si je retire ce message la fenêtre minimisée ne réapparait pas. Surement un problème de synchronisation j'imagine...
J'ai tenté une pause de 1000ms mais ça ne fonctionne pas.

Voilà pour le moment. J'espère que ce retour va te permettre d'avancer dans ce fonctionnement que je trouve génial.
Certes, Un peu délicat à mettre en place mais c'est bluffant !
Revenir en haut Aller en bas
http://gpp.panoramic.free.fr
Klaus

Klaus


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

KGF_dll - nouvelles versions - Page 9 Empty
MessageSujet: Re: KGF_dll - nouvelles versions   KGF_dll - nouvelles versions - Page 9 EmptyVen 6 Mai 2022 - 23:42

A la place de
Code:
exe$="Constructeur.exe"
hnd%=dll_call1("GetProcessWindowHandle",adr(exe$))

pourquoi n'utilises pas:
Code:
hnd% = dll_call2("GetWindowByTitle",0,adr(titre$))

La fonction GetProcessWindowHandle est beaucoup plus gourmande en resources machine et a besoin de plus de temps. Je doute que ta pause de 1000 ms soit suffisante.

Le premier paramètre de la fonction GetWindowByTitle donne le mode opératoire. 0 signifie qu'on cherche le titre extact. Si tu passes 1 à la place, on cherche le premier process trouvé dont le nom contient la chaîne de caractères passée en critère. A toit de choisir.
Revenir en haut Aller en bas
http://klauspanoramic.comxa.com/index.html
Minibug

Minibug


Nombre de messages : 4566
Age : 57
Localisation : Vienne (86)
Date d'inscription : 09/02/2012

KGF_dll - nouvelles versions - Page 9 Empty
MessageSujet: Re: KGF_dll - nouvelles versions   KGF_dll - nouvelles versions - Page 9 EmptySam 7 Mai 2022 - 11:31

Bonjour Klaus,

Citation :
La fonction GetProcessWindowHandle est beaucoup plus gourmande en resources machine et a besoin de plus de temps
Ben oui j'ai un titre avec la version du programme qui donc évolue avec le temps c'est pour cela que je procédais comme ça.

Citation :
Si tu passes 1 à la place, on cherche le premier process trouvé dont le nom contient la chaîne de caractères passée en critère
Oui donc là ça change tout ! Je n'avais pas remarqué cette subtilité. Et ça me permet de garder mes titres. Smile

C'est parfait ! Encore un GRAND GRAND merci Klaus. sunny
Revenir en haut Aller en bas
http://gpp.panoramic.free.fr
Klaus

Klaus


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

KGF_dll - nouvelles versions - Page 9 Empty
MessageSujet: Re: KGF_dll - nouvelles versions   KGF_dll - nouvelles versions - Page 9 EmptySam 7 Mai 2022 - 11:45

YES !!!

Merci pour ta patience et ta persévérance !
Revenir en haut Aller en bas
http://klauspanoramic.comxa.com/index.html
Minibug

Minibug


Nombre de messages : 4566
Age : 57
Localisation : Vienne (86)
Date d'inscription : 09/02/2012

KGF_dll - nouvelles versions - Page 9 Empty
MessageSujet: Re: KGF_dll - nouvelles versions   KGF_dll - nouvelles versions - Page 9 EmptySam 7 Mai 2022 - 15:32

Un problème en appel un autre... Laughing

Sur le constructeur lorsqu'un projet est ouvert j'ai donc plusieurs Forms autre que le Form 0 d'ouvert.
J'utilise la fonction MINIMIZE pour les réduire ou HIDE pour les cacher mais comment procéder lors du rappel ?

Par défaut les noms sont Form_1, Form_2, etc. mais comme les captions peuvent être modifiés ce n'est pas un fonctionnement sûr !


Ben non désolé j'ai tout ce qu'il me faut.... C'est dans la routine ON_USER_EVENT...
Encore désolé !!! Mad

Je n'ai pas encore l'automatisme mais ça va venir... Laughing Laughing Laughing
Revenir en haut Aller en bas
http://gpp.panoramic.free.fr
Klaus

Klaus


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

KGF_dll - nouvelles versions - Page 9 Empty
MessageSujet: Re: KGF_dll - nouvelles versions   KGF_dll - nouvelles versions - Page 9 EmptySam 7 Mai 2022 - 18:13

Tu pourrais même en profiter pour implémenter un arrêt forcè du programe distant - du Constructeur dans ton cas.

Dans le programme "maître", là où tu envoies le USER_EVENT, tu mets hex("FF020000") dans wpar%, puis tu l'envoies.

Dans le programme recevant le USER_EVENT - le Constructeur dans don cas, tu fais ceci:
Code:
Userevent:

   WParam% = USER_EVENT_WPARAM
   LParam% = USER_EVENT_LPARAM

   origine% = BIN_AND(WParam%,MaskOrigin%)
   actevent% = BIN_AND(WParam%,MaskOperation%)/65536
  
   if origine%=ExternalOrigin%    : ' ici, on a un évènement externe
    if actevent%=1                : ' est-ce la commande pour NORMAL ?
      normal 0
      return
    end_if
    if actevent%=2                ; ' c'est la demande d'arrêt forcé
      ' éventuellement effectuer une sauvegarde ici
      terminate
    end_if
    ' ... ici, traiter éventuellement d'autres codes action
    ' ...
  
   end_if
 
   if origine%<>0 then return
      

etc. Il n'y a de limite que ton imagination. Tu peux parfaitement piloter à distance n'importe quel programme Panoramic avec ce mécanisms, à condition de coder les actions correspondantes dans ces programmes.

Tu peux aller plus loin:
avant d'envoyer le USER_EVENT, tu fais lpar% = handle(0). Tu indiques ainsi "l'expéditeur" de la comande. Et le programme distant peut ainsi répondre en envoyant, à son tout, un USER_EVENT au programme dont il vient de recevoir le handle dans USER_EVENT_LPARAM. Et le programme d'origine recevra ainsi un évènement USER_EVENT (dont le code actevent% est à définir séparémént et à placer dans wpar% selon la formule hex("FFaa0000") avec aa étant ce code action de réponse. Les 16 bits de poids faible de wpar% ainsi que les 32 bits de lpar% sont disponibles pour indiquer la réponse à fournir au programme appelant.

Enfin, tu vois qu'il y a de quoi s'amuser... Smile Smile Smile
Revenir en haut Aller en bas
http://klauspanoramic.comxa.com/index.html
Minibug

Minibug


Nombre de messages : 4566
Age : 57
Localisation : Vienne (86)
Date d'inscription : 09/02/2012

KGF_dll - nouvelles versions - Page 9 Empty
MessageSujet: Re: KGF_dll - nouvelles versions   KGF_dll - nouvelles versions - Page 9 EmptySam 7 Mai 2022 - 18:47

oui oui effectivement je commence à comprendre ! Very Happy

J'ai déjà quelques idées en tête...

Bon pour le moment je suis en train de terminer la mise a jour de la fusion des 2 dossiers Constructeur + Editeur.
Je mets les différents paramètres en place pour chaque programmes. Position des fenêtres, ouverture des fichiers, etc.

Je suis en train d'unifier tout ça et jongler entre les 2 programmes... geek

Merci pour tout Klaus et si besoin je reviens vers toi. Wink
Revenir en haut Aller en bas
http://gpp.panoramic.free.fr
Klaus

Klaus


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

KGF_dll - nouvelles versions - Page 9 Empty
MessageSujet: Re: KGF_dll - nouvelles versions   KGF_dll - nouvelles versions - Page 9 EmptyDim 8 Mai 2022 - 1:05

J'ai ajouté une nouvelle fonction à KGF.dll:
Code:
res% = dll_call2("CopyPanoramicToPanoramic",org%,dest%)

Cette fonction copie du texte d'une origine à une autre, que ce soit à l'intérieur d'un même programme Panoramic ou d'un programme à un autre.

Les deux paramètres peuvent être, indépendemment, d'un des types suivants;
handle(memo%)
handle(list%)
adr(s$)

Voici une démo. Saisir quelques lignes dans le mémio à gauche, puis cliquer sur le bouton "Copier"...
Code:
' test_CopyPanoramicToPanoramic.bas

label copier

dim res%, s$

full_space 0
memo 1 : top 1,10 : left 1,10 : width 1,200 : height 1,400 :  bar_both 1
memo 2 : top 2,10 : left 2,220 : width 2,200 : height 2,400 :  bar_both 2
list 3 : top 3,10 : left 3,430 : width 3,200 : height 3,400

button 10 : top 10,430 : left 10,10 : caption 10,"Copier" : on_click 10,copier

dll_on "KGF.dll"

end

copier:
  res% = dll_call2("CopyPanoramicToPanoramic",handle(1),handle(2))
  res% = dll_call2("CopyPanoramicToPanoramic",handle(1),handle(3))
  s$ = string$(5000," ")
  res% = dll_call2("CopyPanoramicToPanoramic",handle(1),adr(s$))
  s$ = trim$(s$)
  message s$
  return
  

Maintenant, avec l'envoi d'un USER_EVENT, un programme Panoramic peut signaler le handle d'un MEMO, d'un LIST ou simplement d'une variable sgtring, à un autre programme Panoramic en passant le handle du MEMO dans lpar%. Le rpogramme Panoramic peut alors facilement récupérer le texte da,s un objet MEMO ou LIST local ou même dans une variable string.

Voici le moyen ultra-facile de communiquer d'un programme à un autre.
Revenir en haut Aller en bas
http://klauspanoramic.comxa.com/index.html
Minibug

Minibug


Nombre de messages : 4566
Age : 57
Localisation : Vienne (86)
Date d'inscription : 09/02/2012

KGF_dll - nouvelles versions - Page 9 Empty
MessageSujet: Re: KGF_dll - nouvelles versions   KGF_dll - nouvelles versions - Page 9 EmptyDim 8 Mai 2022 - 1:37

Hummmm alors là c'est que du bonheur ! sunny

Je n'ai pas encore tester ton code mais j'ai déjà une idée pour l'utiliser... Laughing

Le problème c'est que je n'en suis pas encore là mais ça va pas tarder !
Je vais écrire la routine permettant de transformer les objets en code...

Et ensuite j'enverrai avec ta commande du constructeur vers l'éditeur le fichier code des objets avec un message indiquant que le code est dans les presse-papier.
Il n'y aura plus qu'a se placer dans le code et valider le collage par un CTRL+V. Et hop le tour est joué !!!

Mais dis moi c'est pas noël ????!!!!!!
lol! lol! lol!
Revenir en haut Aller en bas
http://gpp.panoramic.free.fr
Klaus

Klaus


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

KGF_dll - nouvelles versions - Page 9 Empty
MessageSujet: Re: KGF_dll - nouvelles versions   KGF_dll - nouvelles versions - Page 9 EmptyDim 8 Mai 2022 - 18:16

J'ai ajouté une nouvelle fonction:
Code:
res% = dll_call3("SelectFileToOpenEX",adr(racine$),adr(filter$),adr(f$))
res%<=0 = erreur ou abandon
res%>0 = indice du type de fichier choisi dans le filtre (1, 2, ...)

Exemple:
Code:
racine$ = dir_current$ : ' ou n'importe quel chemin
filte$ = "Fichiers Panoramic (*.bas)|*.bas|fichers BMP (*.bmp)|*.bmp"
f$ = string$(255," ")
res% = dll_call3("SelectFileToOpenEX",adr(racine$),adr(filter$),adr(f$))
f$ = trim$(f$)
e$ = lower$(file_extract_extension$(f$))
if f$="" then ... <=========== ici, on a cliqué sur Abandon
if e$=""          : ' <========= ici, on n'a pas saisi d'extension
  select res%
    case 1: f$ = f$ + ".bas"
    case 2: f$ = f$ + ".bmp"
  end_select
end_if      : ' ici, l'extension manquante a été complétée
Revenir en haut Aller en bas
http://klauspanoramic.comxa.com/index.html
Minibug

Minibug


Nombre de messages : 4566
Age : 57
Localisation : Vienne (86)
Date d'inscription : 09/02/2012

KGF_dll - nouvelles versions - Page 9 Empty
MessageSujet: Re: KGF_dll - nouvelles versions   KGF_dll - nouvelles versions - Page 9 EmptyDim 8 Mai 2022 - 18:35

Heu y a un problème Klaus !

je crois que c'est avec la fonction KGF ou la dll... scratch
Revenir en haut Aller en bas
http://gpp.panoramic.free.fr
Klaus

Klaus


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

KGF_dll - nouvelles versions - Page 9 Empty
MessageSujet: Re: KGF_dll - nouvelles versions   KGF_dll - nouvelles versions - Page 9 EmptyDim 8 Mai 2022 - 19:32

As-tu rechargé KGF.dll ? La fonction est nouvelle...
Revenir en haut Aller en bas
http://klauspanoramic.comxa.com/index.html
Minibug

Minibug


Nombre de messages : 4566
Age : 57
Localisation : Vienne (86)
Date d'inscription : 09/02/2012

KGF_dll - nouvelles versions - Page 9 Empty
MessageSujet: Re: KGF_dll - nouvelles versions   KGF_dll - nouvelles versions - Page 9 EmptyDim 8 Mai 2022 - 19:42

ben oui bien sûr ! Wink
Revenir en haut Aller en bas
http://gpp.panoramic.free.fr
Klaus

Klaus


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

KGF_dll - nouvelles versions - Page 9 Empty
MessageSujet: Re: KGF_dll - nouvelles versions   KGF_dll - nouvelles versions - Page 9 EmptyDim 8 Mai 2022 - 23:49

Bon, j'ai pris les grands moyens. J'ai entièrement regénéré KGF.dll et créé un nouveau ZIP que je viens de copier sur mon site. Maintenant, ça marchera.
Revenir en haut Aller en bas
http://klauspanoramic.comxa.com/index.html
Minibug

Minibug


Nombre de messages : 4566
Age : 57
Localisation : Vienne (86)
Date d'inscription : 09/02/2012

KGF_dll - nouvelles versions - Page 9 Empty
MessageSujet: Re: KGF_dll - nouvelles versions   KGF_dll - nouvelles versions - Page 9 EmptyLun 9 Mai 2022 - 8:20

Bonjour Klaus,

Oui cette fois ça marche ! Du coup j'intègre la fonction. Merci pour ta réactivité. Wink

Je vais pouvoir développer maintenant la sauvegarde sous forme de code...
Revenir en haut Aller en bas
http://gpp.panoramic.free.fr
Minibug

Minibug


Nombre de messages : 4566
Age : 57
Localisation : Vienne (86)
Date d'inscription : 09/02/2012

KGF_dll - nouvelles versions - Page 9 Empty
MessageSujet: Re: KGF_dll - nouvelles versions   KGF_dll - nouvelles versions - Page 9 EmptySam 14 Mai 2022 - 11:24

Bonjour Klaus !

Je n'avais pas fait attention la première fois mais tu as crée la fonction SelectFileToOpenEX et du coup pourrais tu s'il te plait créer SelectFileToSaveEX ?
Car c'est plutôt lors de la sauvegarde que se pose la question du format. Donc avec une boite de dialogue SAVE-DIALOG.

Et pendant qu'on y est :
- est il possible de déterminer le chemin ou va s'ouvrir la fenêtre de dialogue ? (Jai modifié le DIR_CURRENT$ par le DIR_CHANGE mais cela ne fonctionne pas).
- est il possible d'indiquer un nom de fichier qui sera visible dans la fenêtre de dialogue ? (Si le nom est déjà connu comme pour la sauvegarde d'un fichier déjà ouvert)

Merci d'avance Klaus.

PS : Encore une fois je m'y suis pris à l'envers... Donc pour le chemin c'est bon ! Laughing Laughing
Revenir en haut Aller en bas
http://gpp.panoramic.free.fr
Klaus

Klaus


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

KGF_dll - nouvelles versions - Page 9 Empty
MessageSujet: Re: KGF_dll - nouvelles versions   KGF_dll - nouvelles versions - Page 9 EmptyDim 15 Mai 2022 - 0:53

je vais regarder ça...
Revenir en haut Aller en bas
http://klauspanoramic.comxa.com/index.html
Klaus

Klaus


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

KGF_dll - nouvelles versions - Page 9 Empty
MessageSujet: Re: KGF_dll - nouvelles versions   KGF_dll - nouvelles versions - Page 9 EmptyDim 15 Mai 2022 - 16:40

J'ai apporté une modification à la fonction existante SelectFileToOpenEX. J'ai ajouté un paramètre pour autoriser la création d'un nouveau dissier:
Code:
  res% = dll_call4("SelectFileToOpenEX",adr(racine$),adr(filter$),opt%,adr(f$))
avec opt%=1 autoriser la création d'un dossier opt%=0 interdire la créatioin d'un dossier.

Pui, j'ai ajouté ja fonction SelectFileToSaveEX:
Code:
  res% = dll_call4("SelectFileToSaveEX",adr(racine$),adr(filter$),opt%,adr(f$))

Voici la démo avec ces modifications:
Code:
' SelectFileToOpenEX.bas

label tester, autretest, savetest
dim f$, e$
dim res%, racine$, filter$
save_dialog 1
filter 1,"Fichiers Panoramic (*.bas)|*.bas|fichers BMP (*.bmp)|*.bmp"
button 2 : caption 2,"Tester" : on_click 2,tester
button 3 : caption 3,"Autre test" : left 3,110 : on_click 3,autretest
button 4 : caption 4,"SaveEx test" : left 4,110 : top 4,40 : on_click 4,savetest
dll_on "KGF.dll"
end

tester:
  f$ = file_name$(1)
  if f$="_" then return
  e$ = lower$(file_extract_extension$(f$))
  if e$=".bas"
    message "un a un fichier Panoramic"
    return
  end_if
  if e$=".bmp"
    message "un a un fichier bitmap"
    return
  end_if
  message "l'extension est invalide: "+e$
 
  return
 
autretest: 
  racine$ = dir_current$
  filter$ = "Fichiers Panoramic (*.bas)|*.bas|fichers BMP (*.bmp)|*.bmp"

  f$ = string$(255," ")
  res% = dll_call4("SelectFileToOpenEX",adr(racine$),adr(filter$),1,adr(f$))
  f$ = trim$(f$)
  if f$="" then return
  e$ = lower$(file_extract_extension$(f$))

  if res%<=0
    message "abandon"
    return
  end_if
  if e$=""
    select res%
      case 1: f$ = f$ + ".bas"
      case 2: f$ = f$ + ".bmp"
    end_select
  end_if
  message "ok: "+f$+chr$(13)+chr$(10)+"indice du type = "+str$(res%)
  return
 
savetest: 
  racine$ = dir_current$
  filter$ = "Fichiers Panoramic (*.bas)|*.bas|fichers BMP (*.bmp)|*.bmp"

  f$ = string$(255," ")
  res% = dll_call4("SelectFileToSaveEX",adr(racine$),adr(filter$),1,adr(f$))
  f$ = trim$(f$)
  if f$="" then return
  e$ = lower$(file_extract_extension$(f$))

  if res%<=0
    message "abandon"
    return
  end_if
  if e$=""
    select res%
      case 1: f$ = f$ + ".bas"
      case 2: f$ = f$ + ".bmp"
    end_select
  end_if
  message "ok: "+f$+chr$(13)+chr$(10)+"indice du type = "+str$(res%)
  return 
 
 
Revenir en haut Aller en bas
http://klauspanoramic.comxa.com/index.html
Contenu sponsorisé





KGF_dll - nouvelles versions - Page 9 Empty
MessageSujet: Re: KGF_dll - nouvelles versions   KGF_dll - nouvelles versions - Page 9 Empty

Revenir en haut Aller en bas
 
KGF_dll - nouvelles versions
Revenir en haut 
Page 9 sur 14Aller à la page : Précédent  1 ... 6 ... 8, 9, 10 ... 14  Suivant
 Sujets similaires
-
» KGF_dll - nouvelles versions
» Nouvelles versions
» KGF_dll - nouvelles versions
» KGF_dll - nouvelles versions
» Synedit_Editor - nouvelles versions

Permission de ce forum:Vous ne pouvez pas répondre aux sujets dans ce forum
FORUM DE DISCUSSION SUR LE LANGAGE PANORAMIC :: Activité des sites créés par les Panoramiciens. :: Le site de Klaus-
Sauter vers: