IdentifiantMot de passe
Loading...
Mot de passe oublié ?Je m'inscris ! (gratuit)
Navigation

Inscrivez-vous gratuitement
pour pouvoir participer, suivre les réponses en temps réel, voter pour les messages, poser vos propres questions et recevoir la newsletter

C# Discussion :

Créer une DLL


Sujet :

C#

Vue hybride

Message précédent Message précédent   Message suivant Message suivant
  1. #1
    Membre Expert Avatar de mactwist69
    Homme Profil pro
    Développement VB.NET
    Inscrit en
    Janvier 2007
    Messages
    1 707
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Âge : 41
    Localisation : France, Saône et Loire (Bourgogne)

    Informations professionnelles :
    Activité : Développement VB.NET
    Secteur : Industrie

    Informations forums :
    Inscription : Janvier 2007
    Messages : 1 707
    Par défaut Créer une DLL
    Bonjour a tous!

    Voila, je programme en VB.NET, j'ai créer un petit programme pour Windows CE. Il marche bien.

    Mon problème est que je dois trouver un moyen de cacher la barre des taches de Windows.

    Or apres avoir fais mes recherche, la seule chose que j'ai trouver de tengible est le code suivant en C# (je crois):

    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    5
    6
    7
    8
    9
    10
    11
    12
    13
    14
    15
    16
    17
    18
    19
    20
    21
    22
    23
    24
    25
    26
    27
    28
    29
    30
    31
    32
    33
    34
    35
    36
    37
    38
    39
    40
    41
    42
    43
    44
    45
    46
    47
    48
    49
    50
    51
    52
    53
    54
    55
    56
    57
    58
    59
    60
    61
    62
    63
    public const int SWP_ASYNCWINDOWPOS = 0x4000;
    		public const int SWP_DEFERERASE = 0x2000;
    		public const int SWP_DRAWFRAME = 0x0020;
    		public const int SWP_FRAMECHANGED = 0x0020;
    		public const int SWP_HIDEWINDOW = 0x0080;
    		public const int SWP_NOACTIVATE = 0x0010;
    		public const int SWP_NOCOPYBITS = 0x0100;
    		public const int SWP_NOMOVE = 0x0002;
    		public const int SWP_NOOWNERZORDER = 0x0200;
    		public const int SWP_NOREDRAW = 0x0008;
    		public const int SWP_NOREPOSITION = 0x0200;
    		public const int SWP_NOSENDCHANGING = 0x0400;
    		public const int SWP_NOSIZE = 0x0001;
    		public const int SWP_NOZORDER = 0x0004;
    		public const int SWP_SHOWWINDOW = 0x0040;
     
    		public const int HWND_TOP = 0;
    		public const int HWND_BOTTOM = 1;
    		public const int HWND_TOPMOST = -1;
    		public const int HWND_NOTOPMOST = -2;
     
    		[DllImport("coredll.dll", SetLastError = true)]
    		[return: MarshalAs(UnmanagedType.Bool)]
    		public static extern bool SetWindowPos(IntPtr hWnd, IntPtr hWndInsertAfter, int x, int y, int cx, int cy, uint uFlags);
     
    		[DllImport("coredll.dll", EntryPoint = "FindWindowW", SetLastError = true)]
    		public static extern IntPtr FindWindowW(string lpClassName, string lpWindowName);
     
     
    	public static void HideStartBar()
    		{
    			IntPtr handle;
    			try
    			{
    				handle = FindWindowW("HHTaskBar", null);
    				if (handle != IntPtr.Zero)
    				{
    					SetWindowPos((IntPtr)handle, (IntPtr)0, 0, 0, 0, 0, SWP_HIDEWINDOW);
    				}
    			}
    			catch
    			{
    				MessageBox.Show("Impossible de masquer la barre d'état.");
    			}
    		}
     
    		public static void ShowStartBar()
    		{
    			IntPtr handle;
     
    			try
    			{
    				handle = FindWindowW("HHTaskBar", null);
    				if (handle != IntPtr.Zero)
    				{
    					SetWindowPos(handle, (IntPtr)0, 0, 0, LARGEURECRANPDA, 26, SWP_SHOWWINDOW);
    				}
    			}
    			catch
    			{
    				MessageBox.Show("Impossible d'afficher la barre d'état");
    			}
    		}
    J'ai donc voulu créer une DLL que je pourrai utilisé dans mon appli.

    J'ai donc créer une nouvelle solution, ajouter un projet de Bibliotheque de Classe. et j'ai tout simplement copier/coller ce code dans la classe.

    Mais j'ai plusieurs erreurs souligné:
    -
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    [DllImport("coredll.dll", SetLastError = true)]
    : Le type ou l'espace de nom est introuvable
    -
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    [return: MarshalAs(UnmanagedType.Bool)]
    : Le type ou l'espace de nom est introuvable
    -
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    SetWindowPos(handle, (IntPtr)0, 0, 0, LARGEURECRANPDA, 26, SWP_SHOWWINDOW);
    :le nom n'existe pas dans le contexte actuel.


    Comme je n'y connais pas grand chose en C#, étant très débutant en création de DLL, si quelqu'un pouvait me donner un petit coup de main. Merci d'avance.

  2. #2
    Membre éclairé
    Profil pro
    Inscrit en
    Octobre 2007
    Messages
    1 002
    Détails du profil
    Informations personnelles :
    Localisation : France

    Informations forums :
    Inscription : Octobre 2007
    Messages : 1 002
    Par défaut
    yop

    Le type ou l'espace de nom est introuvable:
    Cela veut dire que le namespace doit être ajouté a ta classe (les using en haut du fichier), si tu passes ta souris délicatement sur la classe "DllImport" VisualStudio devrait te souligner la fin du mot, tu clic sur ce truc et ca devrait te proposer de t importer automatiquement le bon using... magique !

    Ce procédé marche si dans tes références tu a les bonnes libs bien évidement!

  3. #3
    LEK
    LEK est déconnecté
    Membre éclairé
    Profil pro
    Inscrit en
    Mai 2005
    Messages
    715
    Détails du profil
    Informations personnelles :
    Localisation : France

    Informations forums :
    Inscription : Mai 2005
    Messages : 715
    Par défaut
    Bonjour,
    commence par refaire le test en incluant le namespace suivant :

    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    using System.Runtime.InteropServices;
    @+, Lek

  4. #4
    Membre Expert Avatar de mactwist69
    Homme Profil pro
    Développement VB.NET
    Inscrit en
    Janvier 2007
    Messages
    1 707
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Âge : 41
    Localisation : France, Saône et Loire (Bourgogne)

    Informations professionnelles :
    Activité : Développement VB.NET
    Secteur : Industrie

    Informations forums :
    Inscription : Janvier 2007
    Messages : 1 707
    Par défaut
    Merci beaucoup !!

    En effet ca marche très bien...

    J'ai créer ma dll tout va bien !

    Pour l'erreur LARGEURECRANPDA (j'étai bien stupide de pas comprendre qu'il fallait remplacé par la valeur.

    Après avoir importé tout marche bien. Helas, je n'ai pas mis les bonnes valeur dans SetWindowPos (pour remettre la barre).
    Du coup il est seulement réapparu un bout de bar en haut a gauche.

    Je vais chercher ce qu'il faut mettre, si quelqu'un a une idée...

  5. #5
    Membre Expert Avatar de mactwist69
    Homme Profil pro
    Développement VB.NET
    Inscrit en
    Janvier 2007
    Messages
    1 707
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Âge : 41
    Localisation : France, Saône et Loire (Bourgogne)

    Informations professionnelles :
    Activité : Développement VB.NET
    Secteur : Industrie

    Informations forums :
    Inscription : Janvier 2007
    Messages : 1 707
    Par défaut
    Donc j'avais également oublier que ce bout de code était destiné a Windows Mobile 6, qui a sa barre de tache en haut. Or sur windows CE elle est en bas...

    J'ai donc fais mes expérimentations et trouvé les bonnes valeurs.

    Merci a vous pour vos réponses.

  6. #6
    Membre éclairé
    Profil pro
    Inscrit en
    Octobre 2007
    Messages
    1 002
    Détails du profil
    Informations personnelles :
    Localisation : France

    Informations forums :
    Inscription : Octobre 2007
    Messages : 1 002
    Par défaut
    Tu devrais avoir le réflexe de partager ton code , histoire que ton post serve aussi pour les autres, bonne journée à toi !

  7. #7
    Membre Expert Avatar de mactwist69
    Homme Profil pro
    Développement VB.NET
    Inscrit en
    Janvier 2007
    Messages
    1 707
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Âge : 41
    Localisation : France, Saône et Loire (Bourgogne)

    Informations professionnelles :
    Activité : Développement VB.NET
    Secteur : Industrie

    Informations forums :
    Inscription : Janvier 2007
    Messages : 1 707
    Par défaut
    Bonjour bonjour. En effet je n'y est pas pensé.

    Voici donc le code:

    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    5
    6
    7
    8
    9
    10
    11
    12
    13
    14
    15
    16
    17
    18
    19
    20
    21
    22
    23
    24
    25
    26
    27
    28
    29
    30
    31
    32
    33
    34
    35
    36
    37
    38
    39
    40
    41
    42
    43
    44
    45
    46
    47
    48
    49
    50
    51
    52
    53
    54
    55
    56
    57
    58
    59
    60
    61
    62
    63
    64
    65
    66
    67
    68
    69
    70
    71
    72
    73
    74
    75
    76
    77
    78
    79
    80
    81
    82
    83
    using System;
    //using System.Collections.Generic;
    //using System.Linq;
    //using System.Text;
    using System.Runtime.InteropServices;
     
     
     
     
    namespace HideBarre
    {
        public class HideBarre
     
        {
     
            public const int SWP_ASYNCWINDOWPOS = 0x4000;
            public const int SWP_DEFERERASE = 0x2000;
            public const int SWP_DRAWFRAME = 0x0020;
            public const int SWP_FRAMECHANGED = 0x0020;
            public const int SWP_HIDEWINDOW = 0x0080;
            public const int SWP_NOACTIVATE = 0x0010;
            public const int SWP_NOCOPYBITS = 0x0100;
            public const int SWP_NOMOVE = 0x0002;
            public const int SWP_NOOWNERZORDER = 0x0200;
            public const int SWP_NOREDRAW = 0x0008;
            public const int SWP_NOREPOSITION = 0x0200;
            public const int SWP_NOSENDCHANGING = 0x0400;
            public const int SWP_NOSIZE = 0x0001;
            public const int SWP_NOZORDER = 0x0004;
            public const int SWP_SHOWWINDOW = 0x0040;
     
            public const int HWND_TOP = 0;
            public const int HWND_BOTTOM = 1;
            public const int HWND_TOPMOST = -1;
            public const int HWND_NOTOPMOST = -2;
     
            [DllImport("coredll.dll", SetLastError = true)]
            [return: MarshalAs(UnmanagedType.Bool)]
            public static extern bool SetWindowPos(IntPtr hWnd, IntPtr hWndInsertAfter, int x, int y, int cx, int cy, uint uFlags);
     
            [DllImport("coredll.dll", EntryPoint = "FindWindowW", SetLastError = true)]
            public static extern IntPtr FindWindowW(string lpClassName, string lpWindowName);
     
     
            public static void HideStartBar()
            {
                IntPtr handle;
                try
                {
                    handle = FindWindowW("HHTaskBar", null);
                    if (handle != IntPtr.Zero)
                    {
                        SetWindowPos((IntPtr)handle, (IntPtr)0, 0, 0, 0, 0, SWP_HIDEWINDOW);
                    }
                }
                catch
                {
                    //MessageBox.Show("Impossible d'afficher la barre d'état");
                }
            }
     
            public static void ShowStartBar()
            {
                IntPtr handle;
     
                try
                {
                    handle = FindWindowW("HHTaskBar", null);
                    if (handle != IntPtr.Zero)
                    {
                        SetWindowPos(handle, (IntPtr)0, 0,294, 240,26, SWP_SHOWWINDOW);
                    }
                }
                catch
                {
                    //MessageBox.Show("Impossible d'afficher la barre d'état");
                }
            }
     
     
     
        }
    }
    Il marche très bien. Je peux cacher et rappeler la barre de tache.(pour windows CE)

    Mais un problème persiste. A la place de la barre de tache j'ai le fond d'écran du bureau, bleu. Et mes fenêtres ne passe pas par dessus. Pourtant mes propriétés sont bien a Maximised etc.

    Je vais créer un nouveau post.

+ Répondre à la discussion
Cette discussion est résolue.

Discussions similaires

  1. Comment créer une dll à parti d'un programme en C
    Par laetous dans le forum Windows
    Réponses: 5
    Dernier message: 02/09/2006, 11h05
  2. [VB6]comment créer une dll
    Par kboo dans le forum VB 6 et antérieur
    Réponses: 1
    Dernier message: 12/04/2006, 14h32
  3. Comment (ou peut on) créer une DLL .NET ?
    Par Mickey.jet dans le forum Delphi .NET
    Réponses: 4
    Dernier message: 02/04/2006, 15h54
  4. Comment créer une dll Win32 sous Delphi ?
    Par Mickey.jet dans le forum Langage
    Réponses: 8
    Dernier message: 16/06/2005, 15h38
  5. [MFC]Créer une DLL BIS
    Par Furtif_00 dans le forum MFC
    Réponses: 5
    Dernier message: 28/06/2004, 14h48

Partager

Partager
  • Envoyer la discussion sur Viadeo
  • Envoyer la discussion sur Twitter
  • Envoyer la discussion sur Google
  • Envoyer la discussion sur Facebook
  • Envoyer la discussion sur Digg
  • Envoyer la discussion sur Delicious
  • Envoyer la discussion sur MySpace
  • Envoyer la discussion sur Yahoo