DECOMPRESSER FICHIER RAR AVEC UNRAR.DLL - B3

cs_Nox Messages postés 415 Date d'inscription mardi 3 avril 2001 Statut Membre Dernière intervention 26 avril 2008 - 14 nov. 2002 à 13:36
sarahmhiri Messages postés 1 Date d'inscription lundi 8 janvier 2007 Statut Membre Dernière intervention 25 décembre 2008 - 25 déc. 2008 à 17:37
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/5062-decompresser-fichier-rar-avec-unrar-dll-b3

sarahmhiri Messages postés 1 Date d'inscription lundi 8 janvier 2007 Statut Membre Dernière intervention 25 décembre 2008
25 déc. 2008 à 17:37
le code marche parfaitement, mais pour extraire des fichiers rar protégé par mot de passe comment dois-je faire.
merci d'avance
Renfield Messages postés 17287 Date d'inscription mercredi 2 janvier 2002 Statut Modérateur Dernière intervention 27 septembre 2021 74
25 mars 2008 à 11:04
tentes ta chance en C/C++ parce que VB et le Multithreading :/
Coucouyou Messages postés 8 Date d'inscription mercredi 25 juillet 2007 Statut Membre Dernière intervention 21 mars 2008
21 mars 2008 à 20:32
Cela est d'autant plus gênant s'il doit y avoir une petite musique .mod et éventuellement un anim en fond d'appli ! :)
Coucouyou Messages postés 8 Date d'inscription mercredi 25 juillet 2007 Statut Membre Dernière intervention 21 mars 2008
21 mars 2008 à 20:26
Bon tout marche très bien, je commence a faire des trucs utiles avec, mais le souci, c'est que dans le cadre d'une extraction multiarchives assez importante (j'ai testé sur un fichier de 700 mo divisé en 8 archives), le système freeze et le programme semble planter.

N'y a t il pas moyen que l'extraction se fasse tout en conservant une certaine fluidité ?

L'instruction DoEvents ne change rien.

Merci d'avance !
Coucouyou Messages postés 8 Date d'inscription mercredi 25 juillet 2007 Statut Membre Dernière intervention 21 mars 2008
21 mars 2008 à 19:54
Bon j'ai réussi à débrouiller l'affaire, j'avais pas compilé TKUnrar.dll, donc forcément, ça marchait beaucoup moins bien.

Le programme marche parfaitement, maintenant, reste plus qu'à faire un truc sympa :)

Encore merci Renfield, et je reviens si j'ai un souci :)
Coucouyou Messages postés 8 Date d'inscription mercredi 25 juillet 2007 Statut Membre Dernière intervention 21 mars 2008
21 mars 2008 à 19:42
Et bien quand je lance le .VBG, il me sort l'erreur "Impossible de définir le composant compatible TKUnrar.dll".

Je valide, mais ensuite, au moment d'executer le programme j'ai la fameuse erreur "Erreur de compilation, Projet ou bibliothèque introuvable" qui pointe sur "Dim WithEvents objTKUnrar As TKUnrar.CTKUnrar"

:( Si déja je cale ici, je vais pas aller bien loin dans ma démarche ^^

Encore merci Renfield :)
Renfield Messages postés 17287 Date d'inscription mercredi 2 janvier 2002 Statut Modérateur Dernière intervention 27 septembre 2021 74
21 mars 2008 à 09:10
tu as bien lancé le fichier .VBG (groupe de projets, incluant le projet de etst, et le projet de la dll) ?

parce que j'execute le programme sans soucis, chez moi... mis a part ce message qui m'indique qu'aucun fichier DLL compilé n'a été trouvé et que, par conséquent, le fichier issu de la compilation ne pourra être compatible (interchangeable) avec tout autre release de cette dll
Coucouyou Messages postés 8 Date d'inscription mercredi 25 juillet 2007 Statut Membre Dernière intervention 21 mars 2008
20 mars 2008 à 21:37
Oui mais je ne peux pas lancer le programme du coup !

Quand je l'execute, il me dit que la bibliothèque est introuvable :(

C'est dommage, je pense que ce programme correspond exactement à ce que je veux faire.

PS : encore merci de m'aider Renfield ;)
Renfield Messages postés 17287 Date d'inscription mercredi 2 janvier 2002 Statut Modérateur Dernière intervention 27 septembre 2021 74
19 mars 2008 à 08:05
pas de composant compatible, non...

en gros, si tu génère la dll, TKUnrar (dont le code est fourni dans le sample2)
elle sera pas compatible avec celle qui n'est pas fournie dans le Zip.

en gros, tout roule, tu valide le message, et tu l'oublie ^^
Coucouyou Messages postés 8 Date d'inscription mercredi 25 juillet 2007 Statut Membre Dernière intervention 21 mars 2008
18 mars 2008 à 19:58
Re :)

Bon de retour du taff, je peux commencer à tester la bête, et il y a un exemple vraiment sympa qui teste un peu tous les events en VB.

Le problème, c'est qu'il est impossible de lancer l'execution du projet (situé dans le rep "démo" de "Visual Basic Sample 2") pour cause d'absence de TKUnrar.dll.

C'est surement une erreur due à ma rookie attitude ;) mais je n'arrive pas à trouver d'ou cela provient.

Merci d'avance !
Coucouyou Messages postés 8 Date d'inscription mercredi 25 juillet 2007 Statut Membre Dernière intervention 21 mars 2008
18 mars 2008 à 13:18
Effectivement, je n'avais pas assez regardé de ce coté. J'essaye ça et je vous tiens au courant !

Merci :)
Renfield Messages postés 17287 Date d'inscription mercredi 2 janvier 2002 Statut Modérateur Dernière intervention 27 septembre 2021 74
18 mars 2008 à 08:48
J'ajouterai que lorsque tu télécharges unrar.dll depuis le site de rarlab.com,
tu as en prime des exemples dans plusieurs langages dont le VB6.

ils ont l'air très complets, pour des exemples, notamment CTKUnrar.cls.
Je t'invite a le regarder, il propose un événement :

Event Progress(dblFileSize As Double, dblExtracted As Double)
Renfield Messages postés 17287 Date d'inscription mercredi 2 janvier 2002 Statut Modérateur Dernière intervention 27 septembre 2021 74
18 mars 2008 à 08:38
Au fait, c'est expliqué dans la doc...

http://www.rarlab.com/rar_add.htm



==================================================================
void PASCAL RARSetCallback(HANDLE hArcData,
int PASCAL (*CallbackProc)(UINT msg,LPARAM UserData,LPARAM P1,LPARAM P2),
LPARAM UserData);
==================================================================

Description
~~~~~~~~~~~
Set a user-defined callback function to process Unrar events.

Parameters
~~~~~~~~~~
hArcData
This parameter should contain the archive handle obtained from the
RAROpenArchive function call.

CallbackProc
It should point to a user-defined callback function.

The function will be passed four parameters:


msg Type of event. Described below.

UserData User defined value passed to RARSetCallback.

P1 and P2 Event dependent parameters. Described below.


Possible events

UCM_CHANGEVOLUME Process volume change.

P1 Points to the zero terminated name
of the next volume.

P2 The function call mode:

RAR_VOL_ASK Required volume is absent. The function should
prompt user and return a positive value
to retry or return -1 value to terminate
operation. The function may also specify a new
volume name, placing it to the address specified
by P1 parameter.

RAR_VOL_NOTIFY Required volume is successfully opened.
This is a notification call and volume name
modification is not allowed. The function should
return a positive value to continue or -1
to terminate operation.

UCM_PROCESSDATA Process unpacked data. It may be used to read
a file while it is being extracted or tested
without actual extracting file to disk.
Return a positive value to continue process
or -1 to cancel the archive operation

P1 Address pointing to the unpacked data.
Function may refer to the data but must not
change it.

P2 Size of the unpacked data. It is guaranteed
only that the size will not exceed the maximum
dictionary size (4 Mb in RAR 3.0).

UCM_NEEDPASSWORD DLL needs a password to process archive.
This message must be processed if you wish
to be able to handle archives with encrypted
file names. It can be also used as replacement
of RARSetPassword function even for usual
encrypted files with non-encrypted names.

P1 Address pointing to the buffer for a password.
You need to copy a password here.

P2 Size of the password buffer.


UserData
User data passed to callback function.

Other functions of UnRAR.dll should not be called from the callback
function.

Return values
~~~~~~~~~~~~~
None
Renfield Messages postés 17287 Date d'inscription mercredi 2 janvier 2002 Statut Modérateur Dernière intervention 27 septembre 2021 74
18 mars 2008 à 08:35
interesses toi aux fonction de rappel (CallBack) proposées par la dll
Coucouyou Messages postés 8 Date d'inscription mercredi 25 juillet 2007 Statut Membre Dernière intervention 21 mars 2008
18 mars 2008 à 00:11
Bonjour à toutes et à tous,

Super source que voila, tout fonctionne parfaitement, bravo ;)

En revanche, j'aimerais savoir comment rajouter une progressbar, voire deux progressbar qui s'incrémenteraient en fonction des archives en cours d'extraction.

Par exemple, la ProgressBar1 s'incrémenterait (Puis reviendrait à une Value de 0) en fonction de l'archive en cours, dans le cadre d'archives multiples.

Puis la ProgressBar2 s'incrémenterait en fonction du pourcentage total d'extraction des archives (Toujours dans le cadre d'archives multiples).

En fait, comment adapter des progressbar intelligentes avec ce code ? (Un peu à la manière des progs d'installation à la Class, Razor1911, Myth, Paradigm, etc.... pour les érudits en la matière ;) )

J'ai essayé de bidouiller un peu les modules, mais cela ne marche pas.

Merci d'avance !
Renfield Messages postés 17287 Date d'inscription mercredi 2 janvier 2002 Statut Modérateur Dernière intervention 27 septembre 2021 74
15 nov. 2007 à 08:01
bonjour,

tu as sous les yeux un code source, permettant de décompresser des fichiers rar dans un logiciel. Tu ne semble pas familier avec Visual Basic ni avec la programmation, cette source ne saura donc t'etre d'aucune aide.

Concernant ton fichier RAR, si WinRar ne sais rien faire, fort à parier que ton fichier est corrompu...
jembozzo Messages postés 25 Date d'inscription vendredi 26 octobre 2007 Statut Membre Dernière intervention 25 août 2014
15 nov. 2007 à 05:15
bon je suis novice dans ce domaine
mais je comprend pas comment il marche ce truc
quelqu'un pourrait me donner la manip ???
ya pas de .exe
comprend pas
j'ai un gros fichier rar a décompresser et winrar ne fonctionne pas
help please
MaxNazgul Messages postés 4 Date d'inscription lundi 14 mai 2007 Statut Membre Dernière intervention 18 juin 2007
13 juin 2007 à 11:51
Bravo ^^ c'est ce que je cherchais merci ^^
CHERMIALI Messages postés 10 Date d'inscription vendredi 10 février 2006 Statut Membre Dernière intervention 12 juin 2006
11 févr. 2006 à 00:09
Bonjour à tous les amis. Je suis un étudiant et je cherche une méthode qui permet d'archver automatiquement un document office (word,exel) dès sa création ou sa modification ou sa suppression. Je vous demande de m'aider. Je vous informe que c'est une partie de mon projet de fin d'étude d'une métrise.
Merci en avance.
Nuker3000z Messages postés 18 Date d'inscription lundi 26 décembre 2005 Statut Membre Dernière intervention 26 août 2006
2 janv. 2006 à 11:17
Excellent travail
SuperPit37 Messages postés 61 Date d'inscription vendredi 1 avril 2005 Statut Membre Dernière intervention 13 novembre 2005
3 juil. 2005 à 20:57
Joli source
vor0nwe Messages postés 1 Date d'inscription mardi 22 juin 2004 Statut Membre Dernière intervention 2 juin 2005
2 juin 2005 à 16:07
Proger (et les autres), voici une fonction pour venir à bout de la date 'FileTime' d'un fichier RARé. Est-ce que tu pourrais incorporer ça dans ton code ?
(Désolé pour les commentaires en anglais mais y'a pô envie de tout traduire ;-) ).

'Windows API
Private Type FILETIME
dwLowDateTime As Long
dwHighDateTime As Long
End Type
Private Type SYSTEMTIME
wYear As Integer
wMonth As Integer
wDayOfWeek As Integer
wDay As Integer
wHour As Integer
wMinute As Integer
wSecond As Integer
wMilliseconds As Integer
End Type

Private Declare Function DosDateTimeToFileTime Lib "kernel32" ( _
ByVal wFatDate As Long, _
ByVal wFatTime As Long, _
ByRef lpFileTime As FILETIME) As Long

Private Declare Function FileTimeToSystemTime Lib "kernel32" ( _
ByRef lpFileTime As FILETIME, _
ByRef lpSystemTime As SYSTEMTIME) _
As Long

Private Declare Function SystemTimeToTzSpecificLocalTime Lib "kernel32" ( _
ByVal lpTimeZoneInformation As Long, _
ByRef lpUniversalTime As SYSTEMTIME, _
ByRef lpLocalTime As SYSTEMTIME) _
As Long

'Conversion from a Long to two Integers
Private Type typLong
Long1 As Long
End Type

Private Type typLongToInteger
Integer1 As Integer
Integer2 As Integer
End Type

Public Function RARFileTimeToVBDate(ByVal alngRARFileTime As Long) As Date
Dim ludtLong As typLong
Dim ludtIntegers As typLongToInteger
Dim ludtFileTime As FILETIME
Dim ludtUTCTime As SYSTEMTIME
Dim ludtLocalTime As SYSTEMTIME
Dim ldtmReturn As Date

'First split the Long into the composing High and Low words:
ludtLong.Long1 = alngRARFileTime
LSet ludtIntegers = ludtLong

'Then convert the DOS date/time to a Windows FILETIME
If DosDateTimeToFileTime(ludtIntegers.Integer2, ludtIntegers.Integer1, ludtFileTime) = 0 Then
ldtmReturn = #1/1/1980#
'and convert that FILETIME structure to a SYSTEMTIME
ElseIf FileTimeToSystemTime(ludtFileTime, ludtUTCTime) = 0 Then
ldtmReturn = #1/1/1980#
'then, adjust the SYSTEMTIME (which is in UTC) for the current time zone
ElseIf SystemTimeToTzSpecificLocalTime(0, ludtUTCTime, ludtLocalTime) = 0 Then
ldtmReturn = #1/1/1980#
Else
'and finally, calculate a VB date based on the local SystemTime's members
With ludtUTCTime
ldtmReturn = DateSerial(.wYear, .wMonth, .wDay) + _
TimeSerial(.wHour, .wMinute, .wSecond + (.wMilliseconds / 1000))
End With
End If

RARFileTimeToVBDate = ldtmReturn
End Function
yoman64 Messages postés 962 Date d'inscription samedi 19 janvier 2002 Statut Membre Dernière intervention 2 août 2010 2
14 oct. 2004 à 21:40
Très bien ;-)
econs Messages postés 4030 Date d'inscription mardi 13 mai 2003 Statut Membre Dernière intervention 23 décembre 2008 24
23 sept. 2004 à 08:05
Fonctionne très bien. Bravo. Voilà une source qui fait plaisir à voir...
cs_Marcial Messages postés 57 Date d'inscription samedi 3 mai 2003 Statut Membre Dernière intervention 31 juillet 2008
26 juin 2004 à 14:08
Oups !!!

Sorry, ça a bugger....
cs_Marcial Messages postés 57 Date d'inscription samedi 3 mai 2003 Statut Membre Dernière intervention 31 juillet 2008
26 juin 2004 à 14:06
Salut,
c'est vrai, ça marche très bien du moins pour les archives simple...
En revanche ça ne fonctionne pas pour les archives multiples...

Je cherche désespérément la solution, mais je n'arrive pas a utiliser l'API "SetCallBack" et récupérer les Flags afin d'injecter le chemin de l'archive suivante.

Si l'un d'entre vous a la solution, des infos ou des idées je suis preneur...


Merci a tous par avance

.Marcial.
remy2405 Messages postés 10 Date d'inscription jeudi 19 février 2004 Statut Membre Dernière intervention 26 octobre 2006
24 juin 2004 à 15:24
ca a marche du premier coup. super 10/10
joelmarie Messages postés 27 Date d'inscription vendredi 6 juin 2003 Statut Membre Dernière intervention 12 juin 2008
21 févr. 2004 à 22:34
EXCELLENT , j'en avais vraiment besoin pour mes jeux
Merci , et bon courage pour la suite.
ma note 10/10 min
zemeilleur Messages postés 46 Date d'inscription jeudi 8 mai 2003 Statut Membre Dernière intervention 22 septembre 2004
17 nov. 2003 à 21:28
bravo !
cs_Tioneb Messages postés 193 Date d'inscription dimanche 16 décembre 2001 Statut Membre Dernière intervention 29 juillet 2015
11 nov. 2003 à 12:11
Salut,
sinon, je tenais à dire aussi qu'on peut aussi utiliser "rar.exe" et "unrar.exe" qui sont dans le dossier de winrar. C'est des programme sous dos, ça peut être une bonne alternative pour ceux qui veulent pas tout programmer et gérer les erreurs!
Bien sur le rar.exe est en shareware tandis que l'autre en freeware.
@+
Ben
jon256 Messages postés 43 Date d'inscription mercredi 20 août 2003 Statut Membre Dernière intervention 20 décembre 2003
10 nov. 2003 à 08:53
si tu as quelques connaissances en anglais, visite cette adresse il y a un manuel d'utilisation de la DLL.

http://www.ifrance.com/goa/article/2000_09_17_unrar_dll/UnRARDLL.html

;)
Proger Messages postés 248 Date d'inscription vendredi 10 novembre 2000 Statut Membre Dernière intervention 19 décembre 2008
27 juil. 2003 à 15:29
Chromax37, la dll unrar.dll est fourni en sdk avec une démo d'utilisation sous VB. Cette démo est très peu fonctionnel, donc j'ai recodé entièrement un "dérareur", en utilisant la plupard des déclarations de la démo. En outre, des petits logiciels bien sympa permettent de connaitre toutes les API d'une dll...
cs_vatoo Messages postés 55 Date d'inscription mardi 29 mai 2001 Statut Membre Dernière intervention 1 juillet 2005
22 juil. 2003 à 10:01
Héhé, interessant ça...
A priori, ca devrait m'être pas mal utile, j'espère seulement qu'il marche correctement même avec des gros RAR ...
Chromax37 Messages postés 1 Date d'inscription dimanche 26 janvier 2003 Statut Membre Dernière intervention 8 février 2003
8 févr. 2003 à 19:02
salut a tous : J'aime le prog de proger mais j'aimerais bien savoir comment il a fait pour connaitre les commandes de la dll. merci de bien vouloir m'eclairer.
cs_deenasty Messages postés 1 Date d'inscription mardi 14 janvier 2003 Statut Membre Dernière intervention 27 janvier 2003
27 janv. 2003 à 12:55
Trés trés bien c'est du bon boulot, en plus on parle bien de Rar v3.0, alors que les source que l'on peut trouver sur google c'est pour le Rar v2.0, continue il est vraiment bien. Et pi si un jour tu as la force de traduire le ace.dll new edition ;=) Bon courage.
Proger Messages postés 248 Date d'inscription vendredi 10 novembre 2000 Statut Membre Dernière intervention 19 décembre 2008
17 nov. 2002 à 01:02
hé, si vbfrance n'avais que des sources introuvable sur google, y'aurai pas foule :)
Là je re-post les déclarations, certes connu, et j'y ajoute en plus une appli home-made qui les utilise... fallait bien que quelqu'un le fasse ;)
SATANdemon Messages postés 44 Date d'inscription mardi 18 décembre 2001 Statut Membre Dernière intervention 30 novembre 2005
15 nov. 2002 à 08:44
je connaissait deja :)
sans te vexer on le trouve un peu partout sur le net en cherchant dans google :)
cs_Nox Messages postés 415 Date d'inscription mardi 3 avril 2001 Statut Membre Dernière intervention 26 avril 2008
14 nov. 2002 à 13:36
et c pas mal pour une v beta ;)
10/10
cs_Nox Messages postés 415 Date d'inscription mardi 3 avril 2001 Statut Membre Dernière intervention 26 avril 2008
14 nov. 2002 à 13:36
WoW !! enfin un extracteur qui marche !!
Rejoignez-nous