[C] argument de main()

Résolu
clintm Messages postés 718 Statut Membre -  
clintm Messages postés 718 Statut Membre -
Bonjour,

je code un programme qui déplace la souris à une position données, via deux paramère x, y

#include <windows.h>

int main(int argc, char *argv[])
{
     POINT pt;
     BOOL bContinue = TRUE;
     const SHORT Mask = 32768;
     SetCursorPos(argv[1], argv[2]);
     return 0;
}


mais ca ne marche pas, or en absolut, si je remplace les valeurs, ca marche bien.
je pense que c'est une érreur toutes bête car j'utilise rarement le c

merci

--

------------------------------------------
>>Trop de paroles noient la vérité<<
Configuration: Windows Vista
Firefox 3.0.3

9 réponses

  1. Main() Messages postés 113 Date d'inscription   Statut Membre Dernière intervention   18
     
    Bonsoir,
    je vais certainement dire une bêtise mais le premier élément d'un tableau en c possède l'index 0 me semble-t'il

    SetCursorPos(argv[0], argv[1]);
    0
  2. clintm Messages postés 718 Statut Membre 75
     
    oui c vrai mais le 0 c'est le chemin du programme !!
    0
  3. Main() Messages postés 113 Date d'inscription   Statut Membre Dernière intervention   18
     
    Bonsoir,
    je tente encore ma chance : les typpes ne corresponde pas : argv -> char et SetCursorPos attend un int ?
    0
  4. fiddy Messages postés 441 Date d'inscription   Statut Contributeur Dernière intervention   1 847
     
    Salut
    Le prototype de fonction est SetCursorPos(int,int), et toi tu mets en arguments des chaînes de caractères (argv[1] et argv[2]). Il faut les convertir en entier et donc utiliser la fonction atoi de stdlib.h.
    Teste :
    SetCursorPos(atoi(argv[1]),atoi(argv[2]);
    

    N'oublie pas d'inclure stdlib.h ;)
    Cdlt
    0
  5. Vous n’avez pas trouvé la réponse que vous recherchez ?

    Posez votre question
  6. clintm Messages postés 718 Statut Membre 75
     
    merci

    j'avais oublier ! parce que argv est une chaine de caractère char
    en réalité ça marchait mais ça allait toujours dans le coin à droite en bas (car le nombre devait être trop grand)

    est c'est que je ne peux pas changer le char *argv dans la fonction main() en int* argv ???

    merci
    0
  7. fiddy Messages postés 441 Date d'inscription   Statut Contributeur Dernière intervention   1 847
     
    Oui ça marchait, car tu te retrouvais avec l'adresse mémoire de l'emplacement qui est un grand nombre ^^.
    Non tu ne peux pas faire ça car le compilateur ne sait pas ce que l'utilisateur va entrer en paramètre (nombre ou chaînes de caractères et heureusement pour la sécurité ^^). Donc du coup, c'est à toi de convertir en int.
    0
  8. clintm Messages postés 718 Statut Membre 75
     
    mon compilateur me renvoi une érreur :
    in function 'main'
    l8 : syntax error before ';' tokens

    pourtant j'ai inclut le stdlib et j'ai éssayer en envoyant les 2 arguments
    0
    1. fiddy Messages postés 441 Date d'inscription   Statut Contributeur Dernière intervention   1 847
       
      T'as dû oublié une parenthèse ou bêtise du genre.
      Poste ton code, sinon pour t'aider c'est dur ;)
      0
  9. clintm Messages postés 718 Statut Membre 75
     
    bizarement j'ai mis ca:
    #include <windows.h>
    #include <stdlib.h>
    
    int main(int argc, char *argv[])
    {
         const SHORT Mask = 32768;
         int x = atoi(argv[1]);
         int y = atoi(argv[2]);
         
         SetCursorPos(x, y);
    //     mouse_event(MOUSEEVENTF_LEFTDOWN,800, 400,0,0);
    
         return 0;
    }
    


    et ca marche très bien
    0
  10. clintm Messages postés 718 Statut Membre 75
     
    biensur

    SetCursorPos(atoi(argv[1]),atoi(argv[2]);


    la dernière paranthèse

    merci à tous ca marche
    0