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++Builder Discussion :

Questions au sujet des API windows


Sujet :

C++Builder

  1. #1
    Membre averti
    Homme Profil pro
    �tudiant
    Inscrit en
    Octobre 2013
    Messages
    13
    D�tails du profil
    Informations personnelles :
    Sexe : Homme
    Localisation : France

    Informations professionnelles :
    Activit� : �tudiant
    Secteur : Sant�

    Informations forums :
    Inscription : Octobre 2013
    Messages : 13
    Par d�faut Questions au sujet des API windows
    Bonjour � toutes et � tous.

    Je viens ici pour poser une question relativement g�n�ral mais pouss� � la fois. Voil� je d�veloppe une application avec C++ builder6 et je vais faire tourner cette application sur une tablette Windows 8.1. La est mon probl�me, la compatibilit� est parfaitement assur� mais je suis face � un probl�me.

    Je ne veux que la tablette serve exclusivement � mon application. C'est � dire au d�marrage la tablette ne lance que mon application (qui est en plein �cran bien s�r). Je ne veux pas d'explorer.exe, je ne veux rien d'autre que mon application et aussi je souhaiterais d�sactiver les fonctions Windows 8.

    Pour ceux qui connaissent, je parle de pouvoir faire apparaitre un bandeau sur la gauche ou alors de pouvoir r�duire l'application en partant du haut de l'�cran, tous ces raccourcis je souhaiterais les "interdire". Je pense que c'est r�alisable via les API mais j'ai du mal � savoir ou et qui chercher.

    Voil� merci pour votre aide

  2. #2
    Membre �prouv�
    Avatar de Freeze
    Homme Profil pro
    Inscrit en
    Octobre 2002
    Messages
    131
    D�tails du profil
    Informations personnelles :
    Sexe : Homme
    Localisation : France, Paris (�le de France)

    Informations forums :
    Inscription : Octobre 2002
    Messages : 131
    Par d�faut
    oui, ce que vous voulez est possible au moins en partie, je vous laisse quelques lignes de codes qui utilisent la libraire WinLock.dll qu'il faut mettre dans le m�me r�pertoire que le fichier ex�cutable :

    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
    //---------------------------------------------------------------------------
    TWindows::TWindows(void)
    {
       FHinstDLL=LoadLibrary("WinLock.dll");
     
       if (FHinstDLL)
       {
          FWinGoLock=(TWinGoLock)GetProcAddress(FHinstDLL,"WinGoLock");
          FWinFlagLock=(TWinFlagLock)GetProcAddress(FHinstDLL,"WinFlagLock");
          FWinEndLock=(TWinEndLock)GetProcAddress(FHinstDLL,"WinEndLock");
       }
    }
    //---------------------------------------------------------------------------
    TWindows::~TWindows(void)
    {
       if (FHinstDLL)
          FreeLibrary(FHinstDLL);
    }
    //---------------------------------------------------------------------------
    void TWindows::VerrouilleWindows(void)
    {
       if (FHinstDLL && FWinGoLock)
          FWinGoLock(0x001F);
    }
    //---------------------------------------------------------------------------
    void TWindows::DeverrouilleWindows(void)
    {
       if (FHinstDLL && FWinEndLock)
          FWinEndLock();
    }
    //---------------------------------------------------------------------------
    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
    class TWindows
    {
       private:
          typedef void (__stdcall *TWinGoLock) (Word);
          typedef void (__stdcall *TWinFlagLock) (Word);
          typedef void (__stdcall *TWinEndLock) (void);
     
          HINSTANCE FHinstDLL;   
          TWinGoLock FWinGoLock;
          TWinFlagLock FWinFlagLock;
          TWinEndLock FWinEndLock;
     
       public:
          void VerrouilleWindows(void);
          void DeverrouilleWindows(void);
     
          TWindows(void);
          ~TWindows(void);
    };
    Voil� le fichier WinLock.dll : WinLock.zip

    Comme je suis sympa, je vous rajoute quelques fonctions dont vous pourriez avoir besoin :

    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
    void TWindows::ActivationDemarrageAutomatique(AnsiString tag, AnsiString exename)
    {
       TRegistry *reg=new TRegistry();
       reg->RootKey=HKEY_LOCAL_MACHINE;
       reg->OpenKey("Software\\Microsoft\\Windows\\CurrentVersion\\Run",false);
       if (reg->ReadString(tag)!=exename)
          reg->WriteString(tag,exename);
       reg->CloseKey();
       delete reg;
    }
    //---------------------------------------------------------------------------
    void TWindows::DesactivationDemarrageAutomatique(AnsiString tag)
    {
       TRegistry *reg=new TRegistry();
       reg->RootKey=HKEY_LOCAL_MACHINE;
       reg->OpenKey("Software\\Microsoft\\Windows\\CurrentVersion\\Run",false);
       if (reg->KeyExists(tag))
          reg->DeleteValue(tag);
       reg->CloseKey();
       delete reg;
    }
    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
    bool TWindows::AdjustAutorisation(void)
    {
       HANDLE handle;
       LUID valeur;
       TOKEN_PRIVILEGES jeton;
       if (!OpenProcessToken(GetCurrentProcess(),TOKEN_ADJUST_PRIVILEGES | TOKEN_QUERY,&handle))
          return false;
       if (!LookupPrivilegeValue(0,SE_SHUTDOWN_NAME,&valeur))
          return false;
       jeton.PrivilegeCount=1;
       jeton.Privileges[0].Luid=valeur;
       jeton.Privileges[0].Attributes=SE_PRIVILEGE_ENABLED;
       AdjustTokenPrivileges(handle, false,&jeton,sizeof(TOKEN_PRIVILEGES),0,0);
       if (GetLastError())
          return false;
       return true;
    }
    //---------------------------------------------------------------------------
    void TWindows::FermerWindows(int type)
    {
       if (AdjustAutorisation())
       { 
          switch (type)
          {
             case ETEINDRE:
                ExitWindowsEx(EWX_FORCE | EWX_SHUTDOWN,0);
             break;
             case REBOOT:
                ExitWindowsEx(EWX_FORCE | EWX_REBOOT,0);
             break;
             case LOGOFF:
                ExitWindowsEx(EWX_FORCE | EWX_LOGOFF,0);
             break;
             case VEILLE:
                SetSystemPowerState(false,true);
             break;
          }
       }
    }
    Sinon, vous pouvez faire une fen�tre avec juste le bouton "fermer" activ� que vous bloquerez de la fa�on suivante dans l'�v�nement FormClose() :


  3. #3
    Membre averti
    Homme Profil pro
    �tudiant
    Inscrit en
    Octobre 2013
    Messages
    13
    D�tails du profil
    Informations personnelles :
    Sexe : Homme
    Localisation : France

    Informations professionnelles :
    Activit� : �tudiant
    Secteur : Sant�

    Informations forums :
    Inscription : Octobre 2013
    Messages : 13
    Par d�faut
    Merci beaucoup pour votre aide je regarde tout de suite et je vous tiens au courant.

    MERCI

    [edit] J'ai regard�, mais je ne comprend pas pas vraiment comment utiliser ce .dll, comment puis-je faire pour que lorsque j'appuie sur un bouton de la classe TForm1 appelle une des vos fonctions ?

  4. #4
    Membre �prouv�
    Avatar de Freeze
    Homme Profil pro
    Inscrit en
    Octobre 2002
    Messages
    131
    D�tails du profil
    Informations personnelles :
    Sexe : Homme
    Localisation : France, Paris (�le de France)

    Informations forums :
    Inscription : Octobre 2002
    Messages : 131
    Par d�faut
    Tout d'abord, il faut cr�er les fichiers Windows.cpp et Windows.h avec le code de la classe TWindows.
    Ensuite copier la dll dans le r�pertoire du fichier ex�cutable,
    Ensuite, dans le .h de la form

    Code : S�lectionner tout - Visualiser dans une fen�tre � part
    1
    2
    3
    4
    5
    6
    #include "Windows.h"
     
    ...
     
    private:
    TWindows *windows;
    Dans le .cpp de la form : Constructeur:

    Code : S�lectionner tout - Visualiser dans une fen�tre � part
    TWindows *windows = new TWindows();
    Destructeur:

    Bouton:

    Code : S�lectionner tout - Visualiser dans une fen�tre � part
    windows->VerrouilleWindows();
    ou

    Code : S�lectionner tout - Visualiser dans une fen�tre � part
    windows->DeverrouilleWindows();

  5. #5
    Membre averti
    Homme Profil pro
    �tudiant
    Inscrit en
    Octobre 2013
    Messages
    13
    D�tails du profil
    Informations personnelles :
    Sexe : Homme
    Localisation : France

    Informations professionnelles :
    Activit� : �tudiant
    Secteur : Sant�

    Informations forums :
    Inscription : Octobre 2013
    Messages : 13
    Par d�faut
    Pff.... Merci beaucoup j'avais tout simplement oublier de cr�er a classe ...

    Je vais donc utiliser ces fonction et voir si cela correspond � mes attentes. Uni id�e pour "tuer" le processus explorer.exe ?

    edit: j'arrive a compiler mais lorsque je tente d'executer une fonction j'ai une erreur qui apparait au sujet d'une violation d'acc�s

    edit2: Comment avez-vous eu des informations concernant cette dll car j'ai beau chercher je ne trouve rien la concernant...

    edit3: En continuant de me documenter je suis tomber sur les GPO, apparemment cela pourrait aussi r�pondre � mon probl�me ?

Discussions similaires

  1. question au sujet des threads
    Par Portanoo dans le forum G�n�ral Python
    R�ponses: 1
    Dernier message: 31/07/2008, 17h29
  2. Questions au sujet des archives et des packages
    Par lecharcutierdelinux dans le forum Administration
    R�ponses: 17
    Dernier message: 15/06/2007, 09h14
  3. Questions au sujet des activex
    Par Sonic dans le forum VB.NET
    R�ponses: 1
    Dernier message: 14/04/2007, 12h32
  4. Comment appeler des API windows en C ?
    Par JuanLopez1966 dans le forum Windows
    R�ponses: 6
    Dernier message: 22/12/2004, 10h34

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