Comment pourriez-vous programmer une application C/C++ qui pourrait fonctionner sans ouvrir une fenêtre ou une console?Créer une application sans fenêtre
Répondre
Lorsque vous écrivez un programme WinMain, vous obtenez automatiquement l'option/Sous-système à Windows dans le compilateur. (En supposant que vous utilisez Visual Studio). Pour tout autre compilateur, une option similaire peut être présente mais le nom du flag peut être différent.
Cela provoque le compilateur pour créer une entrée dans le format de fichier exécutable (PE format) qui marque l'exécutable en tant qu'exécutable Windows. Une fois que cette information est présente dans l'exécutable, le chargeur système qui démarre le programme traitera votre binaire comme un exécutable Windows et non comme un programme console, et par conséquent, il ne provoquera pas l'ouverture automatique des fenêtres de console lors de son exécution. Mais un programme Windows n'a besoin de créer aucune fenêtre s'il ne le souhaite pas, comme tous les programmes et services que vous voyez dans la barre des tâches, mais qui ne voient aucune fenêtre correspondante pour eux. Cela peut également se produire si vous créez une fenêtre, mais choisissez de ne pas l'afficher.
Tout ce que vous devez faire, pour réaliser tout cela est,
#include <Windows.h>
int WinMain(HINSTANCE hInstance,
HINSTANCE hPrevInstance,
LPTSTR lpCmdLine,
int cmdShow)
{
/* do your stuff here. If you return from this function the program ends */
}
La raison pour laquelle vous avez besoin d'un WinMain lui-même est qu'une fois que vous marquez le sous-système que Windows, l'éditeur de liens suppose que votre fonction de point d'entrée (qui est appelée après le chargement du programme et l'initialisation de la bibliothèque C Run TIme) sera WinMain et non principale. Si vous ne fournissez pas WinMain dans un tel programme, vous obtiendrez une erreur de symbole non résolue pendant le processus de liaison.
J'ai une exigence similaire où j'utilise une minuterie. Je veux que le programme fonctionne sans s'arrêter. Dans ce programme, une minuterie a été réglée. alors comment puis-je le faire. ? –
ne devrait pas être int WINAPI WinMain (...)? – uceumern
Dans les fenêtres:
#include <windows.h>
int APIENTRY WinMain(HINSTANCE hInstance,
HINSTANCE hPrevInstance,
LPTSTR lpCmdLine,
int nCmdShow)
{
// <-- Program logic here
return 0;
}
Assurez-vous d'utiliser le commutateur de liaison/SUBSYSTEM comme mentionné par Adam Mitz.
Sur les autres plateformes:
int main(int argc, char**argv)
{
// <-- Program logic here
return 0;
}
Deux plaintes: WinMain est inutile si vous n'incluez pas windows.h; et retourne 0; est optionnel en main. – coppro
Vous voulez retourner 0 afin que vous puissiez signifier le succès des programmes qui l'appellent. –
Si vous créez une application de console et que vous avez int Main pour Windows, vous aurez une fenêtre de console lorsque vous double-cliquez sur l'exe. –
Si vous utilisez MSVC ou Visual Studio il suffit d'utiliser le nouvel Assistant de projet et sélectionnez l'application Console .
application de la console ouvrira toujours une fenêtre de la console quand il fonctionne – computinglife
Etes-vous sûr de savoir de quoi vous parlez? http://fr.wikipedia.org/wiki/Win32_console Je ne pense pas !!! La dernière fois que j'ai regardé une application de console était une application non gui win32 !!! – jussij
jussij - Correct. c'est une application CLUI. et afin d'interagir avec cette CLUI, Windows crée une interface graphique CL pour vous. – Aaron
Si vous avez besoin de lancer votre programme de manière contiguë sans avoir de console ou de fenêtre, vous pourriez trouver utile deamon on *NIX ou services on Windows, cet exemple .NET si vous avez besoin de win32, google google un peu pour l'échantillon.
Depuis votre question marquée comme win32 je suppose que les services sont plus pertinents pour vous.
Utilisez l'Assistant Visual Studio pour créer l'application Win32. Mais ne créez pas la fenêtre, c'est-à-dire que vous supprimez la fonction de création de fenêtre. Alternativement, nous pouvons créer une application Win Service.
Dans Visual Studio Express 2010 après avoir défini le sous-système sur Windows (comme suggéré par user17224), ou en modifiant le principal à WinMain (comme suggéré par user17224 et Brian R. Bondy), on peut définir la fonction d'entrée dans propriétés, éditeur de liens, avancé, point d'entrée: tapez simplement main dans la zone de texte.
- 1. bibliothèque d'entrée Linux/X11 sans créer une fenêtre
- 2. Créer une petite application 'fenêtre-forme' qui court n'importe où
- 3. Comment créer une fenêtre Cocoa par programme?
- 4. Comment créer un fichier sans fenêtre d'invite de commande
- 5. Flex-AIR: Créer une application sans onglet dans la barre des tâches?
- 6. wxPython: comment créer une fenêtre shell bash?
- 7. Créer une application de streaming sur iPhone
- 8. Comment créer une application SaaS?
- 9. Application AWT sans Flicker
- 10. Comment créer une fenêtre non interactive dans le MFC
- 11. Comment créer une fenêtre de navigateur dans J2ME?
- 12. NSAlert peut-il être utilisé pour créer une fenêtre flottante?
- 13. Comment fermer une application C# sans formulaire
- 14. sans fenêtre .wmv dans firefox
- 15. Java Keylistener sans fenêtre étant ouvert?
- 16. Pour créer une application pour un site Internet sans son API et schéma
- 17. Comment créer une application web java
- 18. Comment créer une application SQL Compact 2008
- 19. IPhone créer une application de chat
- 20. Comment créer une application d'assemblage de document?
- 21. comment créer une application dés iphone
- 22. Flex: créer une application de modèle?
- 23. comment créer une application mobile dans asp.net
- 24. Comment créer une petite application Adobe AIR?
- 25. Comment créer une fenêtre enfant DirectX flottante avec Delphi?
- 26. Comment implémenter une fenêtre sans chrome avec WPF?
- 27. Comment lancer une nouvelle fenêtre de navigateur sans barre d'outils?
- 28. Comment créer une fenêtre transparente avec des boutons non rectangulaires?
- 29. créer une fenêtre pop-up à l'intérieur de la fonction
- 30. Comment créer une fenêtre compeletely transparente avec MFC?
fil connexes: http://stackoverflow.com/questions/13051412/how-to-hide-the-console-window-in-a-win32-project-using-visual-studio-2010 – BuvinJ