Accueil > Forum > > > > continuer a faire tourner uen appli en la reduisant dans le systeme tray
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
|
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
|
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
|
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
|
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.
|
|
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
Livres en rapport
|
Derniers Blogs
IMAGINE CUP 2012, MAKE A SIGN EN FINALEIMAGINE CUP 2012, MAKE A SIGN EN FINALE par junarnoalg
Voilà qui est fait, la nouvelle est officielle ! L'équipe belge "Make a Sign" va au pays des kangourous défendre son projet dans la catégorie Software Design. http://www.imaginecup.com/CompetitionsContent/Competition/WorldwideFinalists.aspx V...
Cliquez pour lire la suite de l'article par junarnoalg KINECT 1.5 IS OUT !KINECT 1.5 IS OUT ! par Vko
La version 1.5 du Kinect For Microsoft vient tout juste de sortir ! Plein de nouveautés: Tracking de squelette en Near Mode Détection en position assise Détection faciale avec un SDK dédié Documentation et des guideline (enfin) Un out...
Cliquez pour lire la suite de l'article par Vko LES ACTUALITéS DE LA SEMAINE SUR C2I.FR (14 MAI - 20 MAI) LES ACTUALITéS DE LA SEMAINE SUR C2I.FR (14 MAI - 20 MAI) par richardc
Mise à jour des Web API du 14 Mai
Réservez dès maintenant votre journée du 20 juin pour le Windows Azure Dev Camp 2012 à Paris
Mise à jour de Team Foundation Service
MechCommander 2 sur Windows 8
Entity Framework 5 Release Candidate e...
Cliquez pour lire la suite de l'article par richardc REACTIVE EXTENSIONS : CONSOMMER DES SERVICES AVEC RX PARTIE 3, LES PIèGES à éVITERREACTIVE EXTENSIONS : CONSOMMER DES SERVICES AVEC RX PARTIE 3, LES PIèGES à éVITER par Groc
Une mauvaise utilisation de rx lors de l'écriture d'une couche d'accès à des services peut conduire à des cas embarassants avec des erreurs mal gérées, des appels qui ne partent lorsqu'ils le devraient, et même des résultats incorrects . le tout nuis...
Cliquez pour lire la suite de l'article par Groc SHAREPOINT BLOG SITE, PROBLèME D'ARCHIVESSHAREPOINT BLOG SITE, PROBLèME D'ARCHIVES par junarnoalg
Dernièrement, nous avons migré le site
myTIC
vers un nouveau serveur SharePoint 2010. Dans les contenus que nous vouloins récupérer, nous avions un certain nombre de blogs.
Nous avons utilisé les commandes Power...
Cliquez pour lire la suite de l'article par junarnoalg
Logiciels
sDEVIS-FACTURES vlPRO (8.1.0.3)SDEVIS-FACTURES VLPRO (8.1.0.3)sDEVIS-FACTURES vlPRO a été mis au point pour les particuliers, créateurs, entrepreneurs, artisa... Cliquez pour télécharger sDEVIS-FACTURES vlPRO 974 Application Server (12.2.4.6)974 APPLICATION SERVER (12.2.4.6)Développez de puissantes applications dans un environnement de 'cloud computing', clusterisé, séc... Cliquez pour télécharger 974 Application Server vPicture (1.4.2.1)VPICTURE (1.4.2.1)Avec vPicture, hébergez vos images facilement et rapidement.
vPicture est un utilitaire simple, ... Cliquez pour télécharger vPicture Easy-Planning (2.2.1.6)EASY-PLANNING (2.2.1.6)Easy-Planning permet de créer des plannings sous la représentation de diagrammes et est adapté au... Cliquez pour télécharger Easy-Planning COM-BACKUP (2.0)COM-BACKUP (2.0)
COM-BACKUP est un logiciel de sauvegarde qui permet de planifier les sauvegardes de vos dossiers ...
Cliquez pour télécharger COM-BACKUP
|