begin process at 2012 05 28 22:44:26
  Trouver un code source :
 
dans
 
Accueil > Forum > 

Archive C/C++

 > 

Archives

 > 

Au secours

 > 

continuer a faire tourner uen appli en la reduisant dans le systeme tray


Derniers messages déposésPoser une question dans le forum ou lancer une discussion

continuer a faire tourner uen appli en la reduisant dans le systeme tray

vendredi 23 juillet 2004 à 21:50:09 | continuer a faire tourner uen appli en la reduisant dans le systeme tray

Steph115

Membre Club
Slt a tous,

Voila je pense que le titre est bien detaille

Alors voila j'ai un prog qui met l'appli dans le systemtray (d'ailleur savez vosu comment faire pour quand on quitte sur reduire on met l'appli hidden dans le systray) et par la meme occasion comment faire pour que quand l'appli est reduite elle continue de tourner.

Si qqun a une idee ou si vous avez un lien vers des sources(pourtant j'ai cherche) il est le bienvenue.

Merci ++ Nexus

Chaque problème a sa solution. S'il n'y a pas de solution c'est qu'il n'y a pas de problème.
vendredi 23 juillet 2004 à 22:17:11 | Re : continuer a faire tourner uen appli en la reduisant dans le systeme tray

xarier

Oki ami :)

pour ca tu dois realiser des thread :)

Life is Short
vendredi 23 juillet 2004 à 22:18:12 | Re : continuer a faire tourner uen appli en la reduisant dans le systeme tray

xarier

Réponse acceptée !
voila un petit exemple sur comment realiser des thread (piké du site developez)


#include <windows.h>
#include <stdio.h>
#include <conio.h>

// prototye de la procédure utilisée pour notre 2e thread
DWORD WINAPI ThreadProc(LPVOID lpParam);

int main(int argc, char* argv[])
{
DWORD ThreadId;
// On démarre le thread. ThreadId est l'identifiant du thread
// ThreadId ne nous est d'aucune utilité dans cet exmple car le thread se termine de lui même
CreateThread(NULL,NULL,ThreadProc,NULL,NULL,&ThreadId);

// Nous sommes en attente mais le thread peut écrire dans la console
Sleep(2000);

// Le thread est maintenant terminé, on quitte
printf("On ferme!\nPressez une touche !\n");

// Pressez une touche !
getch();
return 0;
}

// Procédure utilisée par le thread
DWORD WINAPI ThreadProc(LPVOID lpParam)
{
// Pendant que le thread principal est en attente, nous affichons sur la console
printf("Je suis actif...\n");

// On ferme, le thread va être arrèté par le système dès que cette fonction retournera
return 0;
}
Life is Short
vendredi 23 juillet 2004 à 22:31:41 | Re : continuer a faire tourner uen appli en la reduisant dans le systeme tray

scolinks

Oui il faut un thread pour qu'il tourne...
Le code pour systray est ici:
http://www.cppfrance.com/code.aspx?ID=19613
(Cherche d'abord les sources sur cppfrance parcequ'on a plein ici!)
J'espere que ça t'aide!
(Des remerciements a "swonder" qui a ecrit le source sur le systray!)
.486
.model flat, stdcall
option casemap:none

vendredi 23 juillet 2004 à 22:40:53 | Re : continuer a faire tourner uen appli en la reduisant dans le systeme tray

xarier

Merci alller beybey
Life is Short
vendredi 23 juillet 2004 à 22:41:08 | Re : continuer a faire tourner uen appli en la reduisant dans le systeme tray

Steph115

Membre Club
En fait pour moi c un peu complique LordBob que je remercie m'a fait une ptite source qui permet d'utilsier la systray
lol ca va faire gros dans le forum mais voila je sais pas trop ou mettre le thread j'ai bien compris son fonctionnement mais c la premiere fosi que je touche au systray et au thread :

#include "calendrier.h"

HINSTANCE hInst;
BOOL AffichageMenu = FALSE;

// fonction pour ajouter l'icone a la systray
BOOL AddIcone(HINSTANCE hInst, HWND hWnd, UINT id, LPTSTR IconName, char *infobulle)
{
BOOL res;

NOTIFYICONDATA trid;

trid.cbSize = sizeof(NOTIFYICONDATA);
trid.hWnd = hWnd;
trid.uID = id;
trid.uFlags = NIF_MESSAGE | NIF_ICON | NIF_TIP;
trid.uCallbackMessage = WM_TRAY_ICONE;
trid.hIcon = LoadIcon(hInst, IconName);

if (infobulle)
lstrcpyn(trid.szTip, infobulle, sizeof(trid.szTip));
else
trid.szTip[0] = '\0';

res = Shell_NotifyIcon(NIM_ADD, &trid);

return res;
}

// fonction pour enlever l'icone de la systray
BOOL RetIcone(HWND hWnd, UINT id)
{
BOOL res;

NOTIFYICONDATA trid;
trid.cbSize = sizeof(NOTIFYICONDATA);
trid.hWnd = hWnd;
trid.uID = id;

res = Shell_NotifyIcon(NIM_DELETE, &trid);

return res;
}

// fonction pour la console
void StartConsole()
{
AllocConsole(); // affiche console
SetConsoleTitle("Calendrier by A&Nexus"); // titre console

// redirection flux entree/sortie
freopen("conin$", "r", stdin);
freopen("conout$", "w", stdout);
freopen("conout$", "w", stderr);

// le reste de la fonction est le code du programme console que l'on souhaite qu'il
// realise, comme un programme console "normal"

main_console();

FreeConsole();
}

// fonction permettant de quitter le menu A Propos
BOOL CALLBACK APDDialogProc (HWND hWnd, UINT message, WPARAM wParam, LPARAM lParam)
{
switch (message)
{
case WM_INITDIALOG:
return TRUE;

case WM_COMMAND:
switch (LOWORD(wParam))
{
case ID_APROPOS_OK:
EndDialog(hWnd, 0);
return TRUE;
}
break;
}
return FALSE;
}

// fonction principal du programme
BOOL CALLBACK MainDlgProc(HWND hWnd, UINT msg, WPARAM wParam, LPARAM lParam)
{
switch(msg)
{
// initialisation de la boite de dialogue (on ajoute le prog a la systray)
case WM_INITDIALOG:
SetClassLong(hWnd, GCL_HICON, (long)LoadIcon(hInst, (LPCTSTR)IDI_ICON));
AddIcone(hInst, hWnd, 2, MAKEINTRESOURCE(IDI_ICON), "Calendrier by A&Nexus");

// on rend invisible le dialog
WINDOWPLACEMENT My_Hwnd;
My_Hwnd.length = sizeof(WINDOWPLACEMENT);
My_Hwnd.showCmd = SW_HIDE;
SetWindowPlacement(hWnd,&My_Hwnd);
break;

case WM_COMMAND:
{
switch(LOWORD(wParam))
{
case IDCANCEL: // on ferme le programme
{
EndDialog(hWnd, FALSE);
return TRUE;
}

case ID_TRAY_ITEM_1: // Affichage Console
{
StartConsole();
return TRUE;
}

case ID_TRAY_ITEM_2: // Affichage A Propos
{
DialogBox((HINSTANCE) GetModuleHandle (NULL), MAKEINTRESOURCE(IDD_APROPOS), hWnd, APDDialogProc);
return TRUE;
}

case ID_TRAY_ITEM_3: // quitter le programme
{
RetIcone(hWnd, 2); // on retire l'icone de la systray
EndDialog(hWnd, FALSE); // on ferme la boite de dialogue

return TRUE;
}
}
}

case WM_TRAY_ICONE: // pour l'affichage menu
{
// seulement si double clik gauche ou clic droit
if(AffichageMenu || (lParam != WM_RBUTTONUP && lParam != WM_LBUTTONDBLCLK))
return FALSE;

HMENU menu = LoadMenu(hInst, MAKEINTRESOURCE(IDR_MENUTRAY));

if(!menu)
return FALSE;

HMENU submenu = GetSubMenu(menu, 0);

if(!submenu)
return FALSE;

// si clique droit
if(lParam == WM_RBUTTONUP)
{
AffichageMenu = TRUE;
POINT mouse;
GetCursorPos(&mouse);
SetMenuDefaultItem(submenu, ID_TRAY_ITEM_1, FALSE);
SetForegroundWindow(hWnd);
TrackPopupMenu(submenu, TPM_RETURNCMD || TPM_RIGHTALIGN, mouse.x, mouse.y, 0, hWnd, NULL);
AffichageMenu = FALSE;
DestroyMenu(submenu);
DestroyMenu(menu);

return TRUE;
}
else // sinon c'est un double clique gauche
{
StartConsole();
return TRUE;
}
}

default:
return FALSE;
}

return TRUE;
}

// fonction permettant que le prog n'apparaisse pas dans la taskbar
BOOL CALLBACK DemDlgProc(HWND hWnd, UINT msg, WPARAM wParam, LPARAM lParam)
{
switch(msg)
{
case WM_INITDIALOG: // initialisation de ma boite de dialogue
PostMessage(hWnd, bnuSWOW_APP, 0, 0);
return TRUE;

case bnuSWOW_APP:
DialogBoxParam(hInst, MAKEINTRESOURCE(IDD_MAIN), hWnd, MainDlgProc, 0
);
EndDialog(hWnd, 0);
}
return 0;
}

// fonction WinMain
int APIENTRY WinMain(HINSTANCE hInstance, HINSTANCE hPrevInstance, LPSTR lpCmdLine, int nCmdShow)
{
hInst = hInstance;

StartConsole();

DialogBox(hInst, MAKEINTRESOURCE(IDD_DEM), 0, (DLGPROC)DemDlgProc);

return 0;
}

Ca fait pas si gros finalement
main_console est mon appli console.

Un gros merci a celui qui trouve la reponse (gspr qu' elle n'est pas bien dur)

Merci ++ Nexus le new....

Chaque problème a sa solution. S'il n'y a pas de solution c'est qu'il n'y a pas de problème.
vendredi 23 juillet 2004 à 22:48:54 | Re : continuer a faire tourner uen appli en la reduisant dans le systeme tray

xarier

ben tu le met la creation du theard dans le winmain et voila
Life is Short
vendredi 23 juillet 2004 à 23:11:05 | Re : continuer a faire tourner uen appli en la reduisant dans le systeme tray

Steph115

Membre Club
Ok merci ca marche je peux utiliser les autres options de la systray totu en faisaint le programme mais en fait j'ai un autre probleme serieux car pour lancer mon programme le source me le lance mais apres je susi oblige de quitter le programme comment faire pour lui dire SI(bouton reduire OU bouton croix enclenche)
ALORS
je reduit ma fenetre dans le systeme tray prete a etre reouverte si je rappelle ma fonction StartConsole();


// fonction pour la console
void StartConsole()
{
AllocConsole(); // affiche console
SetConsoleTitle("Calendrier by A&Nexus"); // titre console

// redirection flux entree/sortie
freopen("conin$", "r", stdin);
freopen("conout$", "w", stdout);
freopen("conout$", "w", stderr);

// le reste de la fonction est le code du programme console que l'on souhaite qu'il
// realise, comme un programme console "normal"

main_console();

//Quitte la console
FreeConsole();
}


Chaque problème a sa solution. S'il n'y a pas de solution c'est qu'il n'y a pas de problème.
vendredi 23 juillet 2004 à 23:24:21 | Re : continuer a faire tourner uen appli en la reduisant dans le systeme tray

xarier

ben tu met une var globale nomé par exemple
bool isminimized=false;

puis dans l'evenement de reduction de la feulle tu donne met

isminimized =true;

alors la tu aura une var qui te determinera la si t en minimized ou non ;)
juste des astuce
Life is Short
vendredi 23 juillet 2004 à 23:28:08 | Re : continuer a faire tourner uen appli en la reduisant dans le systeme tray

Steph115

Membre Club
ok je te remercie mais comment faire pour la minimiser cette console sachant qu'elle s'ouvre et se ferme a chaque appel de cette fonction.
pusique je fais un AllocConsole(); et un FreeConsole();



Merci. ++ Nexus

Chaque problème a sa solution. S'il n'y a pas de solution c'est qu'il n'y a pas de problème.

1 2

Cette discussion est classée dans : appli, tourner, continuer, uen, reduisant


Répondre à ce message

Sujets en rapport avec ce message

Creer un service sous NT ou win2000 [ par waxman ] Bonjour, je cherche desesperement comment creer un service sous nt ou 2000. J'ai deja developpé mon appli mais je n'arrive pas à la declarer en tant q Creer un service sous NT ou win2000 [ par waxman ] Bonjour, je cherche desesperement comment creer un service sous nt ou 2000. J'ai deja developpé mon appli mais je n'arrive pas à la declarer en tant q Creer un service sous NT ou win2000 [ par waxman ] Bonjour, je cherche desesperement comment creer un service sous nt ou 2000. J'ai deja developpé mon appli mais je n'arrive pas à la declarer en tant q Creer un service sous NT ou win2000 [ par waxman ] Bonjour, je cherche desesperement comment creer un service sous nt ou 2000. J'ai deja developpé mon appli mais je n'arrive pas à la declarer en tant q URGENT!!! appli dos lancer par interface visual c++ avec param [ par olivier ] Comment puis je lancer une appli dos qui prend une ou trois chaines de caracteres comme parametre grace a une interface graphique en visual c++.Merci la question qui tue ! [ par cedcrow ] Salut,je lance une application windows fille(B) à partir d'une dll d'une appli windows mère(A). Pour cela je fait un spawn avec le paramètre _P_WAIT p refresh !!!! [ par cedcrow ] Salut, J'ai un petit prob de refresh de fenetre. Je m'explique :à partir d'une appli mère A, je lance une appli fille B par la méthode_spawnl avec com Récupérer le Handle de l'appli [ par Stoomm ] Bonjour,Explication :J'ai une classe D3Dapp qui crée la fenetre.Dans une autre classe (qui va servir a D3Dapp), j'aimerais récupérer le handle de la f raccourcis clavier [ par denver ] Bonjour, tout d'abord merci a tous pour l'aide que vous apportez a des ignorants comme moi!! :)bon voila mon probleme:mon prog en c++ doit coller une raccourcis clavier [ par denver ] Bonjour, tout d'abord merci a tous pour l'aide que vous apportez a des ignorants comme moi!! :)bon voila mon probleme:mon prog en c++ doit coller une


Nos sponsors


Sondage...

CalendriCode

Mai 2012
LMMJVSD
 123456
78910111213
14151617181920
21222324252627
28293031   

Consulter la suite du CalendriCode

A découvrir



 
Développement réalisé par Nicolas SOREL (Nix) avec l'aide de : Cyril DURAND et Emmanuel (EBArtSoft), Merci à Vincent pour ses précieux conseils.
CodeS-SourceS.com© Toute reproduction même partielle est interdite sauf accord écrit du Webmaster
CodeS-SourceS.com© est une marque déposée tous droits réservés

Google Coop CodeS-SourceS Google Coop CodeS-SourceS
Temps d'éxécution de la page : 1,045 sec (4)

Nous contacter | Annoncer sur CodeS-SourceS | Mentions légales