begin process at 2012 02 09 13:39:54
  Trouver un code source :
 
dans
 
Accueil > 

Code

 > 

Astuces

 > RUNDLL32 : COMMENT PASSER DES PARAMETRES A UNE DLL PERSO

RUNDLL32 : COMMENT PASSER DES PARAMETRES A UNE DLL PERSO


 Information sur la source

Note :
8,6 / 10 - par 5 personnes
8,60 / 10

  • 1

  • 2

  • 3

  • 4

  • 5

  • 6

  • 7

  • 8

  • 9

  • 10
Catégorie :Astuces Niveau :Débutant Date de création :11/03/2004 Date de mise à jour :11/03/2004 12:59:25 Vu :4 390

Auteur : ToasTy62

Ecrire un message privé
Site perso
Commentaire sur cette source (5)
Ajouter un commentaire et/ou une note

 Description

j'etais tranquillement en train de coder une tite dll... toudlidoudidou lalala... quand tout a coup... une idée ! pourquoi creer une lancuer pr la dll sachant qu'il existe rundll32 ? c'est vrai, cet outil nous est fourni, autant l'utiliser ! ca evitera un exe de + qui traine ds program files ou je ne sais ou...
bon alors hop un ti peu de rechercher du coté de rundll32... hmmm keske c facile de lancer une dll !
ex: rundll32 ma_dll.dll, maFonction
mais un ti probleme se posait... comment passer des parametres ?
et c là que j'interviens :oP
bon alors j'essaie de mettre des parametres pour ma fonction et apres plusieurs essais infructueux, j'abandonne... l'idee des parametres seuleument :oD
hop, un ti tour sur le chan #programmation et là une idée de NitRic : pourquoi ne pas essayer GetCommandLine() ?
cette fonction retourne la ligne de commande executee pour la dll ou l'executable, alors un petit traitement de celle-ci et voila, les parametres peuvent maintenant etre recuperes dans la DLL !

Source

  • // c'est juste une tite fonction codée en 5min histoire de recuperer un certain mot ds une phrase...
  • // Retourne le nieme parametre d'une chaine
  • char* getParameter(char *line, int nb) {
  • char old_char;
  • char *str_start, *str_ret;
  • int length;
  • str_ret = NULL;
  • length = -1;
  • old_char = ' ';
  • while(*line != '\0' && nb > -1) {
  • if(*line != ' ' && old_char == ' ')
  • nb--;
  • if(nb == 0) {
  • if(length == -1) {
  • str_start = line;
  • length = 0;
  • }
  • else
  • length++;
  • }
  • old_char = *line;
  • line++;
  • }
  • if(*line == '\0')
  • length++;
  • if(length > 0) {
  • str_ret = new char[sizeof(char)*(length+1)];
  • strncpy(str_ret, str_start, length);
  • str_ret[length] = '\0';
  • }
  • return str_ret;
  • }
  • // voila avec ceci il ne vous reste plus qu'a faire ca dans la fonction appelée de votre dll :
  • // char *param = getParameter(GetCommandLine(), 1);
  • // ou *param est le parametre retourné et le 1 est le numéro du mot dans la phrase.
// c'est juste une tite fonction codée en 5min histoire de recuperer un certain mot ds une phrase...

// Retourne le nieme parametre d'une chaine
char* getParameter(char *line, int nb) {
    char old_char;
    char *str_start, *str_ret;
    int length;
    
    str_ret = NULL;
    length = -1;
    old_char = ' ';
    
    while(*line != '\0' && nb > -1) {
        if(*line != ' ' && old_char == ' ')
            nb--;
        
        if(nb == 0) {
            if(length == -1) {
                str_start = line;
                length = 0;
            }
            else
                length++;
        }
            
        old_char = *line;
        line++;
    }
    
    if(*line == '\0')
        length++;
    
    if(length > 0) {
        str_ret = new char[sizeof(char)*(length+1)];
        strncpy(str_ret, str_start, length);
        str_ret[length] = '\0';
    }
    
    return str_ret;
}

// voila avec ceci il ne vous reste plus qu'a faire ca dans la fonction appelée de votre dll :
// char *param = getParameter(GetCommandLine(), 1);
// ou *param est le parametre retourné et le 1 est le numéro du mot dans la phrase.

 Conclusion

voila, tite astuce simple mais utile !
j'espere ke ca vs servira... (mais non ce n'est pas un post pr raconter ma vie... bande de medisants :oP)


 Sources de la même categorie

Source avec Zip SCHEDULER RR FIFO par yvesB87
Source avec Zip ALGORITHMES RÉCURSIFS VS ALGORITHMES ITÉRATIFS par yvesB87
Source avec Zip Source avec une capture C++ FORMAT D'IMAGE AVEC QT par pop70
Source avec une capture EXEMPLE DE POINTEURS DE FONCTION par pop70
Source avec Zip Source avec une capture [C++] CLASS REGISTER par Miwik

Commentaires et avis

Commentaire de azerty25 le 12/03/2004 07:12:42

pourquoi passer par rundll, tu peux pas par une ligne de commande directe ?!

Commentaire de nicolas_laisney le 12/03/2004 11:51:41

Pour Azerty25 : Ben non, une DLL n'est normalement pas un programme indépendant, mais un morceau... essaie donc d'exécuter une DLL comme ça...
D'où le lancement de DLLs avec Rundll, lorsqu'elles sont utilisées en "stand-alone".

Donc moi je dis pas mal comme astuce, j'en n'ai pas besoin maintenant mais qui sait... quand on sait que ça existe on trouve plus facilement l'utilité ;o)

Merci !

Commentaire de nicolas_laisney le 12/03/2004 11:57:22

Oups, boulette ! :(
En voulant noter, j'ai raté ma cible, et j'ai cliqué sur le bouton au lieu de la combo...  (trop c** le mec !)
Donc la note envoyée a été 5 (par défaut), au lieu du 8 que je voulais mettre.
Désolé !

Commentaire de azerty25 le 12/03/2004 12:52:24

EN effet, t'a raison, j'avai oublié que c'était une DLL :-/ Merci pour l'astuce !
Pour la note, je t'ai mis 10, sa corrige la ptite erreur de nico ;)

Commentaire de ToasTy62 le 12/03/2004 13:02:05

yeah thanks :oP
surtout si vs arriver a recuperer les parametres de rundll32 sans passer par l'astuce n'hesitez pas ca m'interesse ! mais bon je c po si c possible...

 Ajouter un commentaire




Nos sponsors


Sondage...

Comparez les prix

CalendriCode

Février 2012
LMMJVSD
  12345
6789101112
13141516171819
20212223242526
272829    

Consulter la suite du CalendriCode

 
Développement réalisé par Nicolas SOREL (Nix) avec l'aide de : Cyril DURAND et Emmanuel (EBArtSoft), Merci à Vincent pour ses précieux conseils.
CodeS-SourceS.com© Toute reproduction même partielle est interdite sauf accord écrit du Webmaster
CodeS-SourceS.com© est une marque déposée tous droits réservés

Google Coop CodeS-SourceS Google Coop CodeS-SourceS
Temps d'éxécution de la page : 0,437 sec (3)

Nous contacter | Annoncer sur CodeS-SourceS | Mentions légales