Aller au contenu

davydavek

Melinyen
  • Compteur de contenus

    129
  • Inscription

  • Dernière visite

  • Days Won

    5

Tout ce qui a été posté par davydavek

  1. L'utiliser ou pas ... la NSA vous retrouvera quand même
  2. davydavek

    strend

    Voici ma solution : Dommage qu'il n'y ai pas eu plus de participants
  3. davydavek

    [Cours #8] Listes chainées

    Choses que j'ai remarquer: -Il manque une parenthèse dans la fonction add_to_list, après le sizeof(t_list) dans le second if. -La variable next dans la fonction add_to_list n'est pas utilisée. -Dans l'exemple, la liste ne contient qu'un élément. (au lieu de 10), je pense qu'il y a un problème dans la fonction add_to_list.
  4. Je vient de découvrir ERB : http://www.youtube.com/watch?v=njos57IJf-0
  5. davydavek

    strend

    @Alex: strstr retourne a la première apparition de t, donc avec ta version : strend("ABDAVYBD","BD"); retourne 0, alors que ça devrait retourner 1.
  6. davydavek

    strend

    Hello, voici un petit exercice, tiré du livre "The C Programming Language" (K&R). En suivant ce prototype (vous pouvez changer le nom des paramètres) : int strend(char *s, char *t) Créez une fonction qui retourne 1 si la string s se termine par la string t,sinon, retourne 0. Exemples : strend("ABCDavy","Davy"); // == 1 strend("Melinyel","oyel"); // == 0 strend("Microsoft","sofa"); // == 0 strend("Forum","rum"); // == 1 Je posterais ma solution mardi
  7. J'aime bien comment la vidéo décrit rapidement, mais en détail. Je vais la faire tourner
  8. C'est justement ce que j'essayait de montrer dans mon dernier message, une erreur dans le tuto.
  9. 16d = 0x10
  10. Ce "code couleur" dont tu parles, c'est le RGB (Red Green Blue,Rouge Vert Bleu), qui sont les couleurs primaires. Très utile en CSS
  11. J'ajouterais aussi que Valgrind-Memcheck est très utile pour détecter les erreurs liées a l'allocation dynamique. Pour l'utiliser : valgrind ./votreprogramme Et avec un makefile c'est encore plus simple
  12. Pourquoi ne pas utiliser #pragma once a la place des include guards ?
  13. davydavek

    Utiliser DLLImport

    Ce tutoriel n'est pas destiné au débutants, mais plutôt a ceux qui ont déjà de l’expérience en C# ou VB.NET DLL ... what ? Les DLLs (Dynamic-Link Library) sont des fichiers non-exécutables, qui contiennent des fonctions pouvant être utilisée par d'autres applications. Windows fonctionne justement avec des DLLs (%windir%\system32\ pour ceux qui voudrait les voir). Les principales sont : -user32.dll (User inferface (MessageBox, Bouttons, etc ...)) -kernel32.dll (Fichiers, Mémoire, Processus/threads etc...) -gdi32.dll (Graphiques) Ces DLL forment ce qu'on appelle l'API* Windows, ou l'API* Win32. *API : Application Programming Interface NB: Il y a aussi ntdll.dll, qui contient l'API Native de Windows. Dans ce tutoriel je vais donc vous apprendre a importer les fonctions FindWindow et FlashWindow, exportées par user32.dll . DLLImport Pour importer ces fonctions, on va utiliser DLLImport, il requiert la classe DLLImportAttribute, dans le namespace System.Runtime.InteropServices : using System.Runtime.InteropServices; Description des paramètres : -string dllName : Le chemin vers la DLL, et son nom. (On va utiliser une DLL de windows donc on n'a pas besoin de spécifier le chemin) -bool BestFitMappig (par défaut true) : Permet de convertir les caractères UNICODE en ANSI, si il est true alors la conversion utilise le caractère ANSI le plus proche (best fit). -CallingConvention CallingConvention (par défaut CallingConvention.StdCall/Winapi) : Un membre de l'enum CallingConvention, c'est assez low-level, donc je ne vais pas l'expliquer ici, vous pouvez lire la doc si vous en avez envie. -CharSet CharSet (par défaut CharSet.Ansi) : En fait certaines fonctions ont deux types. Par exemple MessageBoxA, et MessageBoxW. Pour importer MessageBoxA il faut utiliser Charset.Ansi, et pour MessageBoxW, Charset.Unicode. , L'Ansi, sauvegarde chaque caractère dans un byte, ce qui fait qu'il n'y a que 256 caractère disponibles (dictionnaires "basique" : francais/anglais ...), Charset.Unicode utilise deux bytes (DBCS), ce qui permet d’accéder a 65,536 (2562) caractères. (arabe/chinois/coréen etc..) -string EntryPoint : Le nom de la fonction que vous voulez importer. -bool ExactSpelling (par défaut false en C# mais true en VB) : Si true, vous devez nommer la fonction avec son nom exact (en incluant le A/W, si nécessaire). -bool PreserveSig (par défaut true) : Quand c'est true, la fonction retourne un integer, et quand c'est false, elle retourne une void. Quand une void autre que S_OK (aussi appelé 0, NULL, ERROR_SUCCESS), une exception est lancée. L'exception correspond au code d'erreur. Si la fonction retourne un int autre que 0, vous pouvez gérer l'erreur comme vous le souhaitez. -bool SetLastError (par défaut false) : Si y'a une erreur durant l'utilisation de la fonction, on peut utiliser Marshal.GetLastWin32Error pour obtenir le code de l'erreur (error code) -bool ThrowOnUnmappableChar (par défaut false) : Si c'est a true et qu'une erreur survient durant la conversion des caractères d'UNICODE a ANSI, ça envoie une exception. Sinon ça remplace le caractère par un '?'. Oui y'a beaucoup de paramètres, mais ils sont rarement tous utilisé en même temps. Plateform Invoke DLLImport fait partie de la plateforme Invoke (PInvoke). Pour trouver les prototypes des fonctions qu'on veut utiliser, il faut se rendre sur le Microsoft Developer Network (MSDN). Par exemple pour FindWindow, le prototype est : (en C) HWND WINAPI FindWindow( _In_opt_ LPCTSTR lpClassName, _In_opt_ LPCTSTR lpWindowName ); Mais on ne peut pas utiliser les types des lib C en C# ... Donc on doit les 'traduire'. Un superbe site pour ça : pinvoke.net Attention ! Ce site ne contient pas les prototypes de TOUTE les fonctions, n’hésitez pas a utiliser Google. Pour FindWindow le prototype serait donc : static extern IntPtr FindWindow(string lpClassName, string lpWindowName); Un peu de pratique ... Ouvrez Visual Studio, on va commencer a coder. (ah bah enfin ... ) Ouvrez aussi une application ayant un titre facile a écrire, j'utiliserait Paint. Comme dit précédemment : using System.Runtime.InteropServices; // Le 'DLLImport' est habituellement placé au début d'une classe, ou encore dans une classe spécifique. [DLLImport("user32.dll", SetLastError = true)] static extern IntPtr FindWindow(string lpClassName, string lpWindowName); //On utilisera lpWindowName, lpClassName restera null. [DllImport("user32.dll", SetLastError = true)] static extern bool FlashWindow(IntPtr hwnd, bool bInvert); //hwnd est l'handle (quelque chose que Windows utilise pour identifier des objets) de la fenêtre, qu'on récupère grâce a FindWindow. Puis après on fait notre propre code : string sWindowName = "Untitled - Paint"; IntPtr hWindow = FindWindow(null,sWindowName); // Je préfère utiliser le nom de la fenêtre, donc je place le premier argument a null. int error = Marshal.GetLastWin32Error(); // Un peu d'error-checking, la liste des ErrorCodes peut être trouvée ici : SystemErrorCodes if (error == 0) { FlashWindow(hWindow, true); error = Marshal.GetLastWin32Error(); if (error == 0) Console.WriteLine("{0} flashed !", sWindowName); else Console.WriteLine("ErrorCode = {0}", error); } else Console.WriteLine("ErrorCode = {0}", error); // Si il y a une erreur, affiche l'erreur. End Bon bah voila, je pense que j'ai tout dit sur les bases du DLLImport. Pour plus de lecture : DLLImport Attribute Je n'ai montré que deux API (fonctions dans les DLL de windows), il y en a DES CENTAINES, liste disponible sur le MSDN : Windows API Index Petit projet qui montre quelques trucs possible avec l'api Windows : -WindowsControl.exe (scan VirusTotal) -Source (sans l’exécutable, vous devez le compiler vous-même) Si vous avez des questions, des commentaires etc. , n’hésitez pas a les poster ici. En espérant que ça vous aie plu, Davy.
  14. Dans ce petit tutoriel destiné au débutants, je vais vous montrer comment lancer un processus, et rediriger sa sortie. "cmd.exe" et la commande "tasklist" seront utilisé dans cet exemple, a vous de l'adapter selon vos besoins ! J'utiliserais le C#, mais vous pouvez le "traduire" en VB très facilement. Prérequis Bases du C# Créer un projet de type ConsoleApplication Qu'est-ce qu'un processus ? Pour simplifier, c'est le nom donné par Windows au exécutables qui sont entrain de tourner. (ex: chrome.exe | cmd.exe | Skype.exe ....) Pour les voir il vous suffit de cliquer sur démarrer et puis d'entrer " taskmgr" (Task Manager). System.Diagnostics Ce namespace contient des structures/classes qui vont nous permettre d'interagir avec d'autres processus (et d'autres choses mais on ne va s'en préoccuper durant ce tutoriel) Pour l'importer: using System.Diagnostics; //en haut de votre fichier .cs On va maintenant procéder a la 1ère partie de ce tutoriel : Créer un processus. Pour cela, nous allons utiliser les classes Process et ProcessStartInfo On commence par créer une instance de la classe ProcessStartInfo comme ceci: ProcessStartInfo psi = new ProcessStartInfo { FileName = "cmd.exe", // Nom du processus (ici nous n'avons pas besoin de spécifier le chemin car cmd.exe est situé dans les dossiers du systeme. Arguments = "/c tasklist", // Commande a exécuter, le /c dit a l’interpréteur de commande "exécute xxx commande et casse toi", tasklist est le nom de la commande qui permet de lister tout les processus actifs. RedirectStandardOutput = true, // Pour dire qu'on va rediriger la sortie UseShellExecute = false, // Dit a l'OS de démarrer le processus directement a partir de l’exécutable }; Puis on lance le processus : Process p = Process.Start(psi); // Le processus se lance avec les informations de la classe ProcessStartInfo qu'on vient de créer. Pour récupérer la sortie (output) du processus, on utilise la propriété Process.StandardOutput.ReadToEnd string output = p.StandardOutput.ReadToEnd(); // on le stocke dans une variable de type string Avant d'afficher la sortie sur notre console, nous allons attendre que le processus se termine, en spécifiant un timeout (durée maximum d'attente) p.WaitForExit(10000); // dix secondes Console.WriteLine(output); //écrit la sortie sur notre console Console.ReadKey(); //pause pour qu'on ai le temps de lire ce qui est sur notre console Épilogue Voila, ce court tutoriel est terminé, j’espère qu'il aura aidé certains d'entre vous. Il y a des millions d'autre choses possible, vous pouvez rediriger la sortie de votre console vers un fichier texte (en utilisant Console.SetOut ), ou encore vers la console de Visual Studio. La seule limite est votre imagination. Questions/Commentaires/Critiques sont toujours les bienvenus, sur ce post ou en MP. Davy. PS: Sur QWERTY, désolé pour le manque d'accents. PS2: Les quelques lignes qui sont supposée être en gras ne le sont pas.
  15. davydavek

    Cours #1 - Introduction au C

    "Traduction" de my_putchar sur Windows : #include <Windows.h> ... void my_putchar(char c) { HANDLE hOutput = GetStdHandle(STD_OUTPUT_HANDLE); WriteFile(hOutput, &c, 1, NULL, NULL); }
  16. davydavek

    [Lib] LibNet

    Je suis disponible pour tester sur Windows
  17. ^ chez moi aussi. Dès que j'ai fini mon autre projet, j'essaierai de coder un petit client en C#.
  18. http://www.youtube.com/watch?v=bmXumtgwtak
  19. davydavek

    Hello

    C'est aussi pourquoi j'ai choisit le VB a mes débuts : la facilitée. Mais j'ai arrêter a cause de sa syntaxe trop "exotique". Pour les app Windows store, il faut la version 8.1, je ferais sans doute l'update pendant l’été A propos de mon PE Explorer, c'est simplement un utilitaire qui permet de montrer les principaux champs (sections, import table etc ..) d'un Portable Executable (.dll/.exe/.sys sous Windows). Un peu comme dumpbin, qui est fourni avec Visual Studio. Je ferais une présentation plus détaillée, sans doute le week-end prochain. Merci a tous pour l'acceuil !
  20. davydavek

    Hello

    A l’époque je jouais Acolyte/Prêtre, mais y'a pas moyen d'avancer (0.014 d'xp/mob) lvl 60+ sans cash shop, donc j'ai arrêter niveau 56 je crois.
  21. davydavek

    Hello

    J'ai déménager pour le travail de l'un de mes parents. Merci pour l’accueil
  22. Bonjour/soir, Je m'appelle Davy, j'ai 14 ans et je vis au Etats-Unis. (donc -6h de décalage horaire) J'adore l'informatique, plus précisément le coter logiciel. J'ai commencer au alentours de la 6eme, comme tout le monde j'ai commencer par les jeux (Dofus, FlyFF,Minecraft,S4League, et LoL). Plus tard, j'ai eu envie de mieux comprendre leur fonctionnement, alors j'ai commencer la programmation en VB, je suis aussi passé par le C#, mais j'avais envie d’être "plus libre" alors j'ai commencer le C++. Je posterais quelques tuto que j'avais rédiger sur un autre forum. Que dire d'autre ? ... J'utilise Windows 8 comme OS, et Chrome comme navigateur. (haters gonna hate ) J'ai récemment créer un GitHub, un seul projet pour le moment, mais je compte en ajouter : CNETA-Dev Les présentations c'est vraiment pas mon truc, mais si vous avez des questions n’hésitez pas
×
×
  • Créer...