Création d'une DLL s'exécutant sans interrompre le script ?

Résolu
Nymouas Messages postés 34 Date d'inscription samedi 21 août 2004 Statut Membre Dernière intervention 20 mai 2005 - 18 sept. 2004 à 18:24
Nymouas Messages postés 34 Date d'inscription samedi 21 août 2004 Statut Membre Dernière intervention 20 mai 2005 - 19 sept. 2004 à 10:55
Bonsoir,

J'ai déjà poser une question similaire à celle ci précédemment mais je préfère en créer une nouvelle plus précise.

Je voudrais savoir s'il est possible de créer une DLL pour mirc qui effectue son calcul en background sans interrompre - freezer mirc et qui enverrait un event à mirc lorsque le DLL aura fini son exécution du très gros calcul. J'ai vu qu'il existait l'évenement on signal. Il s'agit de créer un dll crc pour calculer le crc d'un fichier et qui m'enverrait sous forme d'event (de signal) le nom du fichier et le crc caclculer car la commande $crc me freeze mirc pour les trop gros fichier.

Si cela est possible, pourriez-vous me mettre sur la voie, merci.

@++

PS : actuellement g repris le code C d'une fonction de calcul crc32 dont g créé un exe qui me calcule le crc et m'écrit le résultat (le crc) dans un fichier (sfv). Dans mon script, je lance ce programme sur le fichier qui m'intéresse. J'estime le temps de calcul par la taille du fichier à calculer et je lance un timer (1fois) qui vérifie si le fichier qui contient le crc existe et si c le cas, lis la réponse. Dans le cas contraire, je relance ce timer (1fois) jusqu'au moment où le fichier qui contient le crc existe

En code cela donne :

;calculate the crc32 of the file $1 and run the crcchecker
alias crccalc {
var %ff = $1-
var %sizeff = $file($1-).size if (((%crcc.minsize <%sizeff) || (%crcc.minsize $null)) && ((%sizeff <= %crcc.maxsize) || (%crcc.maxsize == $null))) {
if (%crcc.intcrc == 0) {
;write the sfv file
crcwrite %ff
;executes the crc checker with a delay
.timer 1 $round( [ $calc(%sizeff / 10000000) ] ,0) crccheck %ff
}
}

;show the calculate CRC of the file $1, and check it if the crc is in the filename
alias crccheck {
var %ff = $1- $+ .sfv
;checks if the crc-sfv file exists
if ($exists(%ff)) {
;read the sfv
var %sfv = $read(%ff)
var %crc = $right(%sfv,8)
var %crce = $extractcrc($1-)
if (%crcc.keepsfv == 0) .remove " $+ [ %ff ] $+ "
;show the check result
wcrcalc
echo @CRCCalculator $timestamp 12 $+ [ $1- ] 13 %crc $iif(%crc == %crce,12is 3OK) $iif((%crce != $null) && (%crce != %crc),12is 4NOT OK : %crce)
}
else {
;the timer for crccheck is run one more time since the sfv file doesn't yet exist
.timer 1 %crcc.time crccheck $1-
}
}

2 réponses

Hades53 Messages postés 231 Date d'inscription mercredi 12 février 2003 Statut Membre Dernière intervention 7 juillet 2009
18 sept. 2004 à 21:57
Execute tes appels via la fonction $dllcall au lieu de $dll.
3
Nymouas Messages postés 34 Date d'inscription samedi 21 août 2004 Statut Membre Dernière intervention 20 mai 2005
19 sept. 2004 à 10:55
Merci Hades53, je vais l'essayer à l'occasion

@++
0
Rejoignez-nous