Auto cacher une fenetre d'un programme [Résolu]

Signaler
Messages postés
1243
Date d'inscription
jeudi 31 mars 2005
Statut
Membre
Dernière intervention
3 août 2016
-
Messages postés
1243
Date d'inscription
jeudi 31 mars 2005
Statut
Membre
Dernière intervention
3 août 2016
-
Yop à tous,

Voila, j'ai un programme dont j'aimerai bien qu'il tourne en arrière plan. Pour cela je voudrait que dés qu'il se lance, la fenêtre principale se cache automatique, car je n'ai pas envie de l'avoir dans mes pates dans ma barre. Seulement voila, impossible. J'ai esseye la fonction ShowWindow après la création de la fenêtre, cela ne va pas, alors que via un autre programme et avec cette mm fonction cela fonctionne nickel. J'ai esseye aussi en retirant le style WS_VISIBLE, cela ne change rien, j'ai regarder sur la MSDN après les autre style qu'une fenêtre peut avoir, j'ai rien trouver d'intéressant.

Si quelqu'un peut m'aider,

Merci d'avance.

++
deck_bsd
___________________________________
[http://deck-bsd.eurower.net]

14 réponses

Messages postés
1910
Date d'inscription
vendredi 18 juin 2004
Statut
Modérateur
Dernière intervention
14 novembre 2014
13
Voici un exemple avec timer. Il émet un bip toutes les secondes et s'auto-détruit après 20 bips:

#include <windows.h>

int WINAPI WinMain(HINSTANCE hinst, HINSTANCE hprev, LPSTR cmd, int show)
{
    MSG msg;
    SetTimer(0,0,1000,0);
    int compteur=0;
    while (GetMessage(&msg, 0, 0, 0))
    {
        switch(msg.message)
        {
        case WM_TIMER:
            Beep(800,30);
            compteur++;
            break;
        default:
            break;
        }
        if (compteur==20) break;
    }
    return 0;
}

Si tu veux utiliser le clavier il faudra un petit hook global.
Messages postés
1910
Date d'inscription
vendredi 18 juin 2004
Statut
Modérateur
Dernière intervention
14 novembre 2014
13
Je viens de poster un code source comme exemple. J'espère qu'il te sera utile:
http://www.cppfrance.com/code.aspx?ID=43899
Messages postés
178
Date d'inscription
mardi 16 août 2005
Statut
Membre
Dernière intervention
25 août 2010
1
Comment tu lances ton programme (code, shell) ?
Messages postés
1243
Date d'inscription
jeudi 31 mars 2005
Statut
Membre
Dernière intervention
3 août 2016
2
J'ai dans l'idée de le lancer au démarrage, mais pour le moment je l'éxécute normalement mdr, je clique dessus :D

Pour ce qui est du code de création de la fenêtre, ben c'est le code généré par visual studio, donc le code normale.

++
deck_bsd
___________________________________
[http://deck-bsd.eurower.net]
Messages postés
966
Date d'inscription
samedi 3 avril 2004
Statut
Membre
Dernière intervention
4 mars 2010
4
Mets voir le code que tu utilises pour créer la fenêtre, parce que normalement sans WS_VISIBLE on n'est pas sensé la voir.
Messages postés
1243
Date d'inscription
jeudi 31 mars 2005
Statut
Membre
Dernière intervention
3 août 2016
2
voila :D

WNDCLASSEX     wndcls;
  memset(&wndcls, 0, sizeof(WNDCLASSEX));
  wndcls.cbSize = sizeof(WNDCLASSEX);
  wndcls.lpfnWndProc   = AppWndProc;
  wndcls.style         = CS_HREDRAW | CS_VREDRAW;
  wndcls.hInstance     = hinst;
  wndcls.lpszClassName = szappname;
  wndcls.hbrBackground = (HBRUSH) GetStockObject(WHITE_BRUSH);
  wndcls.hCursor       = LoadCursor(0, IDC_ARROW);
  if(!RegisterClassEx(&wndcls)) return 0;
  hmain = CreateWindowEx(0, szappname, szappname, WS_OVERLAPPED | WS_SYSMENU,
                        CW_USEDEFAULT, CW_USEDEFAULT, CW_USEDEFAULT, CW_USEDEFAULT,
                        0, 0, hinst, 0);
                       
  return (hmain != 0);

++
deck_bsd
___________________________________
[http://deck-bsd.eurower.net]
Messages postés
1910
Date d'inscription
vendredi 18 juin 2004
Statut
Modérateur
Dernière intervention
14 novembre 2014
13
Salut,
A quoi te sert de créer une fenêtre qui ne sera pas visible? Tu peux créer une application Win32 sans fenêtre.
Messages postés
1243
Date d'inscription
jeudi 31 mars 2005
Statut
Membre
Dernière intervention
3 août 2016
2
Parce que je vai quand mm avoir besoin de certain messages de celle-ci

++
deck_bsd
___________________________________
[http://deck-bsd.eurower.net]
Messages postés
1910
Date d'inscription
vendredi 18 juin 2004
Statut
Modérateur
Dernière intervention
14 novembre 2014
13
Quels messages par exemple?
Messages postés
1243
Date d'inscription
jeudi 31 mars 2005
Statut
Membre
Dernière intervention
3 août 2016
2
En faite ce dont j'ai besoin, c'est de pouvoir faire un programme totalement invisble dans le bureau et dans les application du gestionnaire de tâche, mais  tout de mm visible dans la liste des processus actif en cas de plantage. Et apart créer un prog avec une fenêtre invisible je ne voi pas comment faire d'autre.

++
deck_bsd
___________________________________
[http://deck-bsd.eurower.net]
Messages postés
966
Date d'inscription
samedi 3 avril 2004
Statut
Membre
Dernière intervention
4 mars 2010
4
Ecoute testé ton code chez moi => fenêtre invisible. T'as pas mis un ShowWindow(hmain,nCmdShow) quelque part des fois?
Si non mets ton code en entier parce que le bug n'est pas là.
Cela dit un proc sans fenêtre est visible dans la liste des proc actifs et tu peux faire une boucle de msg sans fenêtre, t'auras juste pas de WndProc mais tu peux quand même récupérer les messages dans la boucle.
Messages postés
1910
Date d'inscription
vendredi 18 juin 2004
Statut
Modérateur
Dernière intervention
14 novembre 2014
13
Une application win32 sans fenêtre( ou même un service) répond exactement à ce que tu veux faire. Reste à savoir quels messages tu veux utiliser et pourquoi.
Messages postés
1243
Date d'inscription
jeudi 31 mars 2005
Statut
Membre
Dernière intervention
3 août 2016
2
Non pas un service car celui-ci ne doit pas etre actif avant le log. En faite j'ai surtout besoins du message WM_TIMER qui il est vrai n'a rien avoir avec la présence ou non d'une fenêtre, pour le reste je me débrouillerai. Oki un prog sans fenêtre, mais cela me perturbe un peut lol, surtout pour la boucle des messages , hwnd sera quoi ?

++
deck_bsd
___________________________________
[http://deck-bsd.eurower.net]
Messages postés
1243
Date d'inscription
jeudi 31 mars 2005
Statut
Membre
Dernière intervention
3 août 2016
2
Nickel, un grand merci racpp :D C'est vraiment ce qu'il me faut :D

++
deck_bsd
___________________________________
[http://deck-bsd.eurower.net]