NET SEND ANONYME VIA LES MAILSLOTS

f0xi Messages postés 4205 Date d'inscription samedi 16 octobre 2004 Statut Modérateur Dernière intervention 12 mars 2022 - 20 avril 2006 à 17:06
JulioDelphi Messages postés 2226 Date d'inscription dimanche 5 octobre 2003 Statut Membre Dernière intervention 18 novembre 2010 - 15 oct. 2008 à 17:28
Cette discussion concerne un article du site. Pour la consulter dans son contexte d'origine, cliquez sur le lien ci-dessous.

https://codes-sources.commentcamarche.net/source/37153-net-send-anonyme-via-les-mailslots

JulioDelphi Messages postés 2226 Date d'inscription dimanche 5 octobre 2003 Statut Membre Dernière intervention 18 novembre 2010 14
15 oct. 2008 à 17:28
Salut, excellent soft, par contre mes messages sont reçus 2 fois.
je suis passé en debug et rien ne laisse penser que ça l'envoie 2 fois ..
help ?
cs_L_art_ment Messages postés 19 Date d'inscription vendredi 21 septembre 2007 Statut Membre Dernière intervention 30 janvier 2009
15 nov. 2007 à 20:12
Ah oé, c'est le nom de la machine, pas le nom d'utilisateur ...
elguevel Messages postés 718 Date d'inscription jeudi 19 décembre 2002 Statut Membre Dernière intervention 22 novembre 2016 3
9 nov. 2007 à 20:33
Ba si tu sais ce que c'est, alors c'est tout bon :-)

T'as plus qu'à copier ma fonction dans ton programme (ne pas oublier le Uses Windows) et l'appeler.

Emetteur: Tu mets ce que tu veux on s'en fou..
Destinataire: Nom de la machine à laquelle tu veux poster le message
LeMessage : Le message que tu veux envoyer...

Finger in The Noze !
cs_L_art_ment Messages postés 19 Date d'inscription vendredi 21 septembre 2007 Statut Membre Dernière intervention 30 janvier 2009
9 nov. 2007 à 20:01
Oui c'est la commande qui permet d'envoyer des messages à un utilisateur du reseau ...
Mais euh le paraméttre destinataire, ce n'est pas plutot le nom de la machine plutot ?
elguevel Messages postés 718 Date d'inscription jeudi 19 décembre 2002 Statut Membre Dernière intervention 22 novembre 2016 3
9 nov. 2007 à 19:34
Elle est compliqué ma fonction ? Y'a que des string en paramètre :-D

Déja tu sais ce que c'est un net send ?
cs_L_art_ment Messages postés 19 Date d'inscription vendredi 21 septembre 2007 Statut Membre Dernière intervention 30 janvier 2009
8 nov. 2007 à 14:24
Euh désolé aprés tout s'temps que ce post est apparu, j'suis pas spécialement doué en delphi, et là j'comprend pas trop, en fait j'comprend rien, qu'est ce qu'il faut en faire de ce bout de code ? :s
Si vous pouviez m'éclairer ...
Merci
elguevel Messages postés 718 Date d'inscription jeudi 19 décembre 2002 Statut Membre Dernière intervention 22 novembre 2016 3
23 avril 2006 à 10:05
Juste pour dire que j'ai testé ce programme en cours, et je me suis bien fendu la geule en me faisant passé pour d'autre. Donc çà marche très bien !
elguevel Messages postés 718 Date d'inscription jeudi 19 décembre 2002 Statut Membre Dernière intervention 22 novembre 2016 3
21 avril 2006 à 12:33
Je sais mais je préfère caster explicitement, il n'y à pas de raison à çà mais au moins je sais ce qui se passe vraiment quand je regarde mon code.

De même pour la fonction API MessageBoxA(), je caste les arguments avec des PChar, alors qu'il n'est pas necessaire de le faire avec des chaines constantes.

Mais merci pour toutes ses précisions ;-)
f0xi Messages postés 4205 Date d'inscription samedi 16 octobre 2004 Statut Modérateur Dernière intervention 12 mars 2022 35
21 avril 2006 à 11:10
un truc aussi, il me semble que mettre PCHAR(...) pour un argument de type PAnsiChar ça ne sert a rien car delphi s'occupe seul des transtypage dans ces cas la ...

on peu donc en toute logique ecrire :

CreateFile( '\\' + Destinataire + '\MAILSLOT\MESSNGR', {est convertie directement en PAnsiChar}
GENERIC_WRITE, FILE_SHARE_READ, nil,
OPEN_EXISTING, FILE_ATTRIBUTE_NORMAL, 0 );

c'est comme les Array of char qu'on peut assigner ou transmettre directement aux strings :

var
S : string;
const
C1 : array[0..5] of char = '012345';
begin
S := C1;
end;
elguevel Messages postés 718 Date d'inscription jeudi 19 décembre 2002 Statut Membre Dernière intervention 22 novembre 2016 3
21 avril 2006 à 09:59
Ah merci bcp, c'est pas mal çà :-)

Je fais la modif, et je repost !
f0xi Messages postés 4205 Date d'inscription samedi 16 octobre 2004 Statut Modérateur Dernière intervention 12 mars 2022 35
20 avril 2006 à 17:06
petite modif d'optimisation que tu peu apporter :


function SendMessage(const Emetteur, Destinataire, LeMessage : string) : Boolean;
var
HWNDSlot : THandle;
Buffer : String;
lpNumberOfBytesWritten : Cardinal;
begin
result := false;
lpNumberOfBytesWritten := 0;
HWNDSlot := CreateFile( PChar('\\' + Destinataire + '\MAILSLOT\MESSNGR'),
GENERIC_WRITE, FILE_SHARE_READ, nil,
OPEN_EXISTING, FILE_ATTRIBUTE_NORMAL, 0 );
Buffer := Emetteur + #0 + Destinataire + #0 + LeMessage + #0;
try
result := (HWNDSlot <> INVALID_HANDLE_VALUE);
if result then
result := WriteFile( HWNDSlot, PChar(Buffer)^, Length(Buffer),
lpNumberOfBytesWritten, nil );
finally
CloseHandle( HWNDSlot );
end;



n'oublis pas que le compilateur convertis automatiquement les LongBool ou WordBool en Boolean.

car dans un LongBool, False = Null, donc dés qu'un Bool n'est pas Null c'est qu'il est a True.
Rejoignez-nous