begin process at 2010 03 20 10:48:37
  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 :3 457

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 Source avec une capture [C++] CLASS REGISTER par Miwik
SMART POINTEUR À COMPTEUR DE RÉFÉRENCE par nirgal76
POINTEUR INTELLIGENT par snpier wolf
ALIGNER TEXTE CONSOLE par CptPingu
QWERTY - AZERTY AVEC SDL, UNE ALTERNATIVE par Scheb

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...

CalendriCode

Mars 2010
LMMJVSD
1234567
891011121314
15161718192021
22232425262728
293031    

Consulter la suite du CalendriCode

Photothèque

 
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,359 sec (4)

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