Bonjour à tous !
Je vous propose aujourd'hui un nouveau tutoriel sur l'envoi de chaînes ou de structures par PostMessage en utilisant la table d'atomes.
N'hésitez pas à faire part de vos réactions
Bonne lecture !
Bonjour à tous !
Je vous propose aujourd'hui un nouveau tutoriel sur l'envoi de chaînes ou de structures par PostMessage en utilisant la table d'atomes.
N'hésitez pas à faire part de vos réactions
Bonne lecture !
Bonjour,
Personnellement j'utilise un autre approche que je trouve bcp plus simple
le destinataire du message est responsable de la suppression de "data", mais il est possible d'ajouter ces objets à une ThreadList globale qu'on purge le cas échéant quand c'est nécessaire.
Code : Sélectionner tout - Visualiser dans une fenêtre à part
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26 type TMessageData = class UnEntier: Integer; UneChaine: string; UnStream: TStream; NImporteQuoi: TNImportQuoi; end; TDataMessage = record Msg: Integer; Null: Integer; Data: TMessageData; Result : Integer; end; procedure SendInfos(HWnd, Msg: Integer; UnEntier, UneChaine...); var data: TMessageData; begin data := TMessageData.Create; data.UnEntier := UnEntier; data.UneChaine := UneChaine; ... PostMessage(HWnd, Msg, 0, Integer(@data)); end;
C'est possible en effet
Par record, il faudra prendre soin de faire appel à GetMem/FreeMem (New/Dispose) et pas simplement déclarer une variable locale à la fonction !
Mon approche se veut cependant plus universelle et autorise l'envoi entre processus![]()
J'ai jamais eu le temps de m'occuper de [QR] Comment passer une string dans un message Windows ? qui utilise WM_COPYDATA qui fonctionnee en inter-processus
Aide via F1 - FAQ - Guide du développeur Delphi devant un problème - Pensez-y !![]()
Attention Troll Méchant !
"Quand un homme a faim, mieux vaut lui apprendre à pêcher que de lui donner un poisson" Confucius
Mieux vaut se taire et paraître idiot, Que l'ouvrir et de le confirmer !
L'ignorance n'excuse pas la médiocrité !
L'expérience, c'est le nom que chacun donne à ses erreurs. (Oscar Wilde)
Il faut avoir le courage de se tromper et d'apprendre de ses erreurs
...mais qui est obligatoirement synchrone par SendMessage![]()
@AndNotY,
Salut, j'ai parcouru tout ton article, et à la fin je me suis demandé à quoi cela peut servir en cas réel ? (je préfère passer pour un idiot, mais je pose quand même la question...)
Est-ce un moyen de transmettre des données (tableau, chaîne, nombre) entre 2 applications ?
![]()
![]()
![]()
![]()
![]()
Partager