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.
form - USER32.DLL et SendMessageA sur FORM 0 Emptypar Pedro Aujourd'hui à 10:37

» Un autre pense-bête...
form - USER32.DLL et SendMessageA sur FORM 0 Emptypar Froggy One Jeu 21 Nov 2024 - 15:54

» Récupération du contenu d'une page html.
form - USER32.DLL et SendMessageA sur FORM 0 Emptypar Pedro Sam 16 Nov 2024 - 14:04

» Décompilation
form - USER32.DLL et SendMessageA sur FORM 0 Emptypar JL35 Mar 12 Nov 2024 - 19:57

» Un album photos comme du temps des grands-mères
form - USER32.DLL et SendMessageA sur FORM 0 Emptypar jjn4 Mar 12 Nov 2024 - 17:23

» traitement d'une feuille excel
form - USER32.DLL et SendMessageA sur FORM 0 Emptypar jjn4 Jeu 7 Nov 2024 - 3:52

» Aide-mémoire mensuel
form - USER32.DLL et SendMessageA sur FORM 0 Emptypar jjn4 Lun 4 Nov 2024 - 18:56

» Des incomprèhension avec Timer
form - USER32.DLL et SendMessageA sur FORM 0 Emptypar Klaus Mer 30 Oct 2024 - 18:26

» KGF_dll - nouvelles versions
form - USER32.DLL et SendMessageA sur FORM 0 Emptypar Klaus Mar 29 Oct 2024 - 17:58

» instructions panoramic
form - USER32.DLL et SendMessageA sur FORM 0 Emptypar maelilou Lun 28 Oct 2024 - 19:51

» Figures fractales
form - USER32.DLL et SendMessageA sur FORM 0 Emptypar Marc Ven 25 Oct 2024 - 12:18

» Panoramic et Scanette
form - USER32.DLL et SendMessageA sur FORM 0 Emptypar Yannick Mer 25 Sep 2024 - 22:16

» Editeur d étiquette avec QR évolutif
form - USER32.DLL et SendMessageA sur FORM 0 Emptypar JL35 Lun 23 Sep 2024 - 22:40

» BUG QR Code DelphiZXingQRCode
form - USER32.DLL et SendMessageA sur FORM 0 Emptypar Yannick Dim 22 Sep 2024 - 11:40

» fichier.exe
form - USER32.DLL et SendMessageA sur FORM 0 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 à ne pas rater :
Code promo Nike : -25% dès 50€ d’achats sur tout le site Nike
Voir le deal

 

 USER32.DLL et SendMessageA sur FORM 0

Aller en bas 
4 participants
AuteurMessage
Fredisland




Nombre de messages : 261
Date d'inscription : 30/03/2018

form - USER32.DLL et SendMessageA sur FORM 0 Empty
MessageSujet: USER32.DLL et SendMessageA sur FORM 0   form - USER32.DLL et SendMessageA sur FORM 0 EmptyLun 30 Avr 2018 - 23:53

Bonjour,

A l'époque où je codais avec l'excellent PowersoftMaker dont je pleure chaque jour l'arrêt du développement, j'utilisais une astuce toute bête pour autoriser le déplacement d'une fenêtre sur tout son espace et pas seulement sur la barre de titre afin de skinner intégralement mes applications. Ce "truc" est disponible partout sur le net ( comme ici : Moving a Form without the Title Bar).

Seulement voilà, avec PANORAMIC, impossibilité de reproduire le même fonctionnement. Quelqu'un a-t-il assez de connaissance pointue sur le sujet pour résoudre mon souci ? Merci infiniment, voire au-delà.

Code:
dll_on "user32" : dim res%
label deplace,exit
on_mouse_down 0, deplace
on_close 0,exit
END  

deplace:
    res% = dll_call4("SendMessageA",handle(0),161,2,0)
return

exit:
    dll_off
return
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

form - USER32.DLL et SendMessageA sur FORM 0 Empty
MessageSujet: Re: USER32.DLL et SendMessageA sur FORM 0   form - USER32.DLL et SendMessageA sur FORM 0 EmptyMar 1 Mai 2018 - 0:48

Hello Fred
Tu dois appeler ReleaseCapture avant SendMessageA

Comme ceci

Code:

dll_on "user32" : dim res%
label deplace,exit
on_mouse_down 0, deplace
on_close 0,exit
END  

deplace:
    res% = dll_call0("ReleaseCapture")
    res% = dll_call4("SendMessageA",handle(0),161,2,0)
return

exit:
    dll_off
return
Revenir en haut Aller en bas
http://papydall-panoramic.forumarabia.com/
Fredisland




Nombre de messages : 261
Date d'inscription : 30/03/2018

form - USER32.DLL et SendMessageA sur FORM 0 Empty
MessageSujet: Re: USER32.DLL et SendMessageA sur FORM 0   form - USER32.DLL et SendMessageA sur FORM 0 EmptyMar 1 Mai 2018 - 0:55

papydall a écrit:
Hello Fred
Tu dois appeler ReleaseCapture avant SendMessageA

SPLENDIDE
Revenir en haut Aller en bas
Klaus

Klaus


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

form - USER32.DLL et SendMessageA sur FORM 0 Empty
MessageSujet: Re: USER32.DLL et SendMessageA sur FORM 0   form - USER32.DLL et SendMessageA sur FORM 0 EmptyMar 1 Mai 2018 - 0:58

Bravo, Papydall !

Voici un code 100 % Panoramic, sans API, pour faire la même chose:
Code:
label down, move, up
dim xp0%, yp0%, x%, y%, d%
on_mouse_down 0,down
on_mouse_move 0,move
on_mouse_up 0,up
END 

deplace:
    res% = dll_call0("ReleaseCapture)
    res% = dll_call4("SendMessageA",handle(0),161,2,0)
return

down:
  xp0% = mouse_x_left_down(0)
  yp0% = mouse_y_left_down(0)
  d% = 1
  return
 
up:
  d% = 0
  return
 
move:
  if d%=1
    x% = mouse_x_position(0)
    y% = mouse_y_position(0)
    left 0,left(0) - (xp0%-x%)
    top 0,top(0) - (yp0%-y%)
  end_if
  return 



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

form - USER32.DLL et SendMessageA sur FORM 0 Empty
MessageSujet: Re: USER32.DLL et SendMessageA sur FORM 0   form - USER32.DLL et SendMessageA sur FORM 0 EmptyMar 1 Mai 2018 - 1:00

king

Cette astuce est très utile si la barre de titre de la fenêtre est invisible.
Il suffit de cliquer n’importe où dans la fenêtre et déplacer tout en maintenant le bouton de la souris.

Code:

dll_on "user32" : dim res%
label deplace,exit
top 0,-100 : ' la barre de titre est hors vision
on_mouse_down 0, deplace
on_close 0,exit
END  

deplace:
    res% = dll_call0("ReleaseCapture")
    res% = dll_call4("SendMessageA",handle(0),161,2,0)
return

exit:
    dll_off
return
Revenir en haut Aller en bas
http://papydall-panoramic.forumarabia.com/
Fredisland




Nombre de messages : 261
Date d'inscription : 30/03/2018

form - USER32.DLL et SendMessageA sur FORM 0 Empty
MessageSujet: Re: USER32.DLL et SendMessageA sur FORM 0   form - USER32.DLL et SendMessageA sur FORM 0 EmptyMar 1 Mai 2018 - 1:13

Klaus a écrit:
Bravo, Papydall !

Voici un code 100 % Panoramic, sans API, pour faire la même chose:

C'est encore plus magique !!! Mille merci.
Revenir en haut Aller en bas
Klaus

Klaus


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

form - USER32.DLL et SendMessageA sur FORM 0 Empty
MessageSujet: Re: USER32.DLL et SendMessageA sur FORM 0   form - USER32.DLL et SendMessageA sur FORM 0 EmptyMar 1 Mai 2018 - 1:14

Citation :
Cette astuce est très utile si la barre de titre de la fenêtre est invisible.
ou pour une form avec BORDER_HIDE !
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

form - USER32.DLL et SendMessageA sur FORM 0 Empty
MessageSujet: Re: USER32.DLL et SendMessageA sur FORM 0   form - USER32.DLL et SendMessageA sur FORM 0 EmptyMar 1 Mai 2018 - 1:39

Peut-être trouveriez-vous une quelconque utilité pour cet autre code.
Envoyer une ou plusieurs entrées clavier vers la fenêtre active comme si ces dernières étaient saisies depuis le clavier.

Code:

rem ============================================================================
rem                  SendKeys
rem                Par Papydall
rem ============================================================================
rem Envoie une ou plusieurs entrées clavier vers la fenêtre active comme si ces
rem dernières étaient saisies depuis le clavier.
rem Syntaxe : SendKeys(string)
rem string :  Expression de chaîne spécifiant les entrées clavier à envoyer.
rem Chaque touche est représentée par un ou plusieurs caractères.
rem Pour spécifier un caractère unique, utilisez le caractère correspondant.
rem Par exemple, pour représenter la lettre A, utilisez la chaîne "A".
rem Pour représenter plusieurs caractères, entrez les caractères les uns à la
rem suite des autres.
rem Pour représenter les lettres A, B et C, utilisez la chaîne "ABC".
rem
rem Les signes plus (+), circonflexe (^), pourcentage (%), tilde (~), parenthèses ( )
rem possèdent des significations spéciales pour SendKeys.
rem Pour spécifier l’un de ces caractères, incluez-le entre des accolades {}
rem Par exemple, pour spécifier le signe plus, utilisez {+}
rem Les crochets ([ ]) ne possèdent pas de signification particulière pour SendKeys,
rem mais vous devez tout de même les inclure entre des accolades.
rem Pour spécifier des accolades, utilisez {{} et {}}.

rem Pour spécifier des caractères qui ne sont pas affichés lorsque vous appuyez
rem sur une touche, tels que ENTRÉE ou TAB, ainsi que des touches qui représentent
rem des actions et non des caractères, utilisez les codes affichés dans le tableau suivant :

rem Touche   Code
rem ESPACE ARRIÈRE   {BACKSPACE}, {BS}, ou {BKSP}
rem ARRÊT DÉFIL   {BREAK}
rem VERR. MAJ   {CAPSLOCK}
rem SUPPR ou SUPPRIMER   {DELETE} ou {DEL}
rem FLÈCHE VERS LE BAS   {DOWN}
rem FIN   {END}
rem ENTRÉE   {ENTER} ou ~
rem ÉCHAP   {ESC}
rem AIDE   {HELP}
rem ORIGINE   {HOME}
rem INS OU INSER   {INSERT} ou {INS}
rem FLÈCHE GAUCHE   {LEFT}
rem VER NUM   {NUMLOCK}
rem PAGE SUIV   {PGDN}
rem PAGE PRÉC   {PGUP}
rem IMPR ÉCRAN   {PRTSC}
rem FLÈCHE DROITE   {RIGHT}
rem ARRÊT DÉFIL   {SCROLLLOCK}
rem TAB   {TAB}
rem FLÈCHE HAUT   {UP}
rem F1   {F1}
rem F2   {F2}
rem F3   {F3}
rem F4   {F4}
rem F5   {F5}
rem F6   {F6}
rem F7   {F7}
rem F8   {F8}
rem F9   {F9}
rem F10   {F10}
rem F11   {F11}
rem F12   {F12}
rem F13   {F13}
rem F14   {F14}
rem F15   {F15}
rem F16   {F16}

rem Pour spécifier des combinaisons de touches avec les touches MAJ, CTRL et ALT,
rem faites précéder le code de la touche par un ou plusieurs des codes suivants :
rem Touche Code
rem MAJ    +
rem CTRL    ^
rem ALT    %

rem Pour spécifier une combinaison dans laquelle la touche MAJ, CTRL et ALT
rem doit être maintenue enfoncée alors que vous appuyez sur d’autres touches,
rem incluez le code de ces touches entre parenthèses.
rem Par exemple, pour indiquer que la touche MAJ doit être enfoncée alors que vous
rem appuyez sur les touches E et C, utilisez "+(EC)".
rem Pour spécifier que la touche MAJ doit être enfoncée alors que vous appuyez sur
rem la touche E, suivi de la touche C sans que la touche MAJ ne soit enfoncée,
rem utilisez "+EC".

rem Pour indiquer la répétition de touches, utilisez la forme {touche nombre}
rem Veillez à placer un espace entre la touche et le nombre de fois que cette
rem touche doit être entrée.
rem Par exemple:
rem {LEFT 42}
rem signifie l’activation de la touche FLÈCHE GAUCHE 42 fois.
rem {h 10}
rem indique que la touche H doit être appuyée 10 fois.
rem ============================================================================
rem Exemple 1
rem Envoyer des caractères à un memo
rem ============================================================================
 dim i
 memo 10 : height 10,200 : font_bold 10  : font_color 10,0,0,255 : set_focus 10
 memo 20 : left 20,200 : height 20,200 : font_bold 20 : font_color 20,255,0,0 :hide 20

 SendKeys("+salut")  : ' seule la lettre s est en majuscule
 SendKeys("+(tout)") : ' le mot tout est en majuscule
 SendKeys("le")
 SendKeys("monde")
 SendKeys("{* 30}") : ' 30 *
 SendKeys("+nous sommes le "+ date$)
 SendKeys("+il est : " + time$)
rem ============================================================================
rem Exemple 2
rem Envoyer des caractères à la calculatrice
rem ============================================================================
SendKeys_Calc("10{+}20~*30~")  : ' Envoyer 10+20 + <ENTREE> *30 + <ENTREE> ; le résultat est 900
message "Arrêter la calculatrice"
TaskKill("calc.exe") : ' Fermer la calculatrice
show 20 : set_focus 20 : pause 500
rem ============================================================================
rem Exemple 3
rem Envoyer un texte au memo 20
rem ============================================================================
SendKeys("+that's all folks!")
for i = 10 to 0 step -1
    SendKeys("+bye bye dans " + str$(i)+ " secondes") : pause 1000
next i
rem ============================================================================
terminate

rem ============================================================================
rem Envoyer des caractères à la fenêtre active
SUB SendKeys(key$)
    dim_local q$
    q$ = chr$(34)
    file_open_write 9999,"SendKeys.vbs"
    file_writeln 9999,"set WshShell = WScript.CreateObject(" + q$ + "WScript.Shell" + q$ + ")"
    file_writeln 9999,"WshShell.SendKeys "+ q$ + key$ + q$
    file_writeln 9999,"WshShell.SendKeys "+ q$ + "~" + q$
    file_close 9999
    execute_wait "SendKeys.vbs"
    file_delete "SendKeys.vbs"
END_SUB
rem ============================================================================
rem Envoyer des caractères à la calculatrice
SUB SendKeys_Calc(key$)
    dim_local q$
    q$ = chr$(34)
    file_open_write 9999,"SendKeys_Calc.vbs"
    file_writeln 9999,"set WshShell = WScript.CreateObject(" + q$ + "WScript.Shell"+ q$ +")"
    file_writeln 9999,"WshShell.Run "+ q$ + "calc" + q$
    file_writeln 9999,"WScript.Sleep 500"
    file_writeln 9999,"WScript.Sleep 100"
    file_writeln 9999,"WshShell.SendKeys " + q$ + key$ + q$
    
    file_close 9999
    execute_wait "SendKeys_Calc.vbs"
    file_delete "SendKeys_Calc.vbs"
END_SUB
rem ============================================================================
rem Terminer une application
SUB TaskKill(task$)
    dim_local q$
    q$ = chr$(34)
    file_open_write 9999,"TaskKill.vbs"
    file_writeln 9999,"set WshShell = WScript.CreateObject(" + q$ + "WScript.Shell"+ q$ +")"
    file_writeln 9999,"Set oExec = Wshshell.exec("+q$+"taskkill.exe /im "+task$+q$+")"
    file_writeln 9999,"WScript.Sleep 100"
    file_close 9999
    execute_wait "TaskKill.vbs"
    file_delete "TaskKill.vbs"
END_SUB
rem ============================================================================
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

form - USER32.DLL et SendMessageA sur FORM 0 Empty
MessageSujet: Re: USER32.DLL et SendMessageA sur FORM 0   form - USER32.DLL et SendMessageA sur FORM 0 EmptyMar 1 Mai 2018 - 9:36

Avec l'aide de Silverman, j'ai pu simplifier mon code pour le déplacement d'une form:
Code:
label move
dim xp0%, yp0%, x%, y%, d%
d% = 0
on_mouse_move 0,move
END

move:
  if mouse_left_down(0)>0
    d%=1
    xp0% = mouse_x_left_down(0)
    yp0% = mouse_y_left_down(0)
  end_if
  if mouse_left_up(0)>0 then d%=0
  if d%=1
    x% = mouse_x_position(0)
    y% = mouse_y_position(0)
    left 0,left(0) - (xp0%-x%)
    top 0,top(0) - (yp0%-y%)
  end_if
  return
Revenir en haut Aller en bas
http://klauspanoramic.comxa.com/index.html
silverman

silverman


Nombre de messages : 970
Age : 52
Localisation : Picardie
Date d'inscription : 18/03/2015

form - USER32.DLL et SendMessageA sur FORM 0 Empty
MessageSujet: Re: USER32.DLL et SendMessageA sur FORM 0   form - USER32.DLL et SendMessageA sur FORM 0 EmptyMar 1 Mai 2018 - 9:45

@Klaus
Excellent... et hop, archivé! Very Happy
Même si ça marche parfaitement, tu devrais placer le couple 'off_mouse_move/on_mouse_move' pour éviter un potentiel plantage Wink
Revenir en haut Aller en bas
Klaus

Klaus


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

form - USER32.DLL et SendMessageA sur FORM 0 Empty
MessageSujet: Re: USER32.DLL et SendMessageA sur FORM 0   form - USER32.DLL et SendMessageA sur FORM 0 EmptyMar 1 Mai 2018 - 9:54

Comme ceci:
Code:
label move
dim xp0%, yp0%, x%, y%, d%
d% = 0
on_mouse_move 0,move
END

move:
  off_mouse_move 0
  if mouse_left_down(0)>0
    d%=1
    xp0% = mouse_x_left_down(0)
    yp0% = mouse_y_left_down(0)
  end_if
  if mouse_left_up(0)>0 then d%=0
  if d%=1
    x% = mouse_x_position(0)
    y% = mouse_y_position(0)
    left 0,left(0) - (xp0%-x%)
    top 0,top(0) - (yp0%-y%)
  end_if
  on_mouse_move 0,move
  return
Revenir en haut Aller en bas
http://klauspanoramic.comxa.com/index.html
Klaus

Klaus


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

form - USER32.DLL et SendMessageA sur FORM 0 Empty
MessageSujet: Re: USER32.DLL et SendMessageA sur FORM 0   form - USER32.DLL et SendMessageA sur FORM 0 EmptyMar 1 Mai 2018 - 10:03

Cette astuce permet d'avoir une form sans bord, avec une barre de titre simulée par un PICTURE. On tire cette form par ce PICTURE, pas par la form elle-même. Ceci permet de s'affranchir totalement de la croix rouge. On peut ensuite y placer les boutons qu'on veut - ici, la simulation d'un bouton plat pour sortir:
Code:
label move, exit
dim xp0%, yp0%, x%, y%, d%
d% = 0
border_hide 0
picture 1 : width 1,width_client(0) : height 1,30 : color 1,255,255,0
picture 2 : width 2,20 : height 2,20 : color 2,255,0,0
  top 2,5 : left 2,width_client(0)-25
  font_bold 2 : font_size 2,10 : font_color 2,255,255,255
  2d_target_is 2 : 2d_fill_color 255,0,0
  print_target_is 2 : print_locate 5,2 : print "X"
  on_click 2,exit             
on_mouse_move 1,move
END

move:
  off_mouse_move 1
  if mouse_left_down(1)>0
    d%=1
    xp0% = mouse_x_left_down(1)
    yp0% = mouse_y_left_down(1)
  end_if
  if mouse_left_up(1)>0 then d%=0
  if d%=1
    x% = mouse_x_position(1)
    y% = mouse_y_position(1)
    left 0,left(0) - (xp0%-x%)
    top 0,top(0) - (yp0%-y%)
  end_if
  on_mouse_move 1,move
  return
 
  exit:
    if message_confirmation_yes_no("Voulez-vous vraiment sortir ?")<>1 then return
    terminate
   
Revenir en haut Aller en bas
http://klauspanoramic.comxa.com/index.html
Fredisland




Nombre de messages : 261
Date d'inscription : 30/03/2018

form - USER32.DLL et SendMessageA sur FORM 0 Empty
MessageSujet: Re: USER32.DLL et SendMessageA sur FORM 0   form - USER32.DLL et SendMessageA sur FORM 0 EmptyMar 1 Mai 2018 - 11:29

Très très bien tous ces bouts de code.. A conserver Smile
Revenir en haut Aller en bas
Contenu sponsorisé





form - USER32.DLL et SendMessageA sur FORM 0 Empty
MessageSujet: Re: USER32.DLL et SendMessageA sur FORM 0   form - USER32.DLL et SendMessageA sur FORM 0 Empty

Revenir en haut Aller en bas
 
USER32.DLL et SendMessageA sur FORM 0
Revenir en haut 
Page 1 sur 1
 Sujets similaires
-
» BMP ou JPG sur une form
» Questions à propos de FORM
» FORM
» DLL: Form
» Gestion des FORM

Permission de ce forum:Vous ne pouvez pas répondre aux sujets dans ce forum
FORUM DE DISCUSSION SUR LE LANGAGE PANORAMIC :: PANORAMIC :: A l'aide!-
Sauter vers: