Rundll32 : comment passer des parametres a une dll perso

Contenu du snippet

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 / Exemple :


// 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)

A voir également

Vous n'êtes pas encore membre ?

inscrivez-vous, c'est gratuit et ça prend moins d'une minute !

Les membres obtiennent plus de réponses que les utilisateurs anonymes.

Le fait d'être membre vous permet d'avoir un suivi détaillé de vos demandes et codes sources.

Le fait d'être membre vous permet d'avoir des options supplémentaires.