Question

Je suis en train de masquer la fenêtre de la console quand mon C l'application de lancement avec cette simple WinAPI code:

#define CONSOLE_NAME "6FD66E14-FF0F-4B94-B8AF-AFE3D42DC399"

void hide_window(void)
{
    // Ставим заголовок для консольного окна / Setting window caption
    SetConsoleTitle(TEXT(CONSOLE_NAME));

    // Находим по заголовку Handle для окна / Searching Handle of the window
    HWND hWnd = FindWindow(NULL, TEXT(CONSOLE_NAME));
    if (hWnd == 0)
    {
        ErrorExit(TEXT("FindWindow"));
    }

    // Скрываем консоль / Hidding console
    ShowWindow(hWnd, SW_HIDE);
}

int _tmain(int argc, _TCHAR* argv[])
{
    hide_window();

    /* other code */
}

Tout fonctionne bien, si aucun antivirus activé, mais quand Kaspersky est en cours d'exécution et de contrôle le système, je ne peux pas trouver du travail, le code ci-dessus, parce que hWnd == 0 est vrai et GetLastError() = 183 erreur ("Impossible de créer un fichier déjà existant.") vient de lancer!

Question:Que puis-je faire?Tout ce que je besoin est de masquer la fenêtre de la console.

S'il vous plaît, m'aider avec ce genre de choses.

Un grand merci!

PS.À L'Aide De Visual Studio 2010 (Visual C++)

Était-ce utile?

La solution

Appelez simplement FreeConsole() se débarrasser de lui et AllocConsole() pour en créer un nouveau.

Autres conseils

Vous feriez mieux de créer un nouveau projet Visual Studio basé sur le "Projet Win32" au lieu de "Win32 Console Application".Ensuite, une console ne sera pas créé automatiquement.(Vous pouvez toujours en créer un dans le code si vous le voulez). Ceci permettra de définir la /sous-système:WINDOWS compilateur paramètre parmi d'autres.

Vous ne pas créer une interface graphique dans un non-application de la console, et vous n'avez pas à avoir un WndProc() fonction.

En réponse à "@Ian Goldby Pourriez-vous me donner le lien vers le code source de la façon de le faire?"

Il n'y a pas tout le code source en tant que telle.Il suffit de créer un nouveau Visual C++ Win32 Projet (pas d'Application Console Win32).Dans l'Assistant, vérifiez que "application Windows" est sélectionné.L'assistant va générer beaucoup de modèle de code, mais vous pouvez supprimer tous les de ce, sauf pour le squelette de la _tWinMain() fonction.C'est la fonction qui sera appelée lorsque l'application démarre.Il suffit de coller votre code ici.

Sinon, cochez la case "projet Vide" dans la boîte de la dernière étape de l'assistant, et de fournir votre propre main.c fichier et votre propre _tWinMain() fonction.Vous pourriez trouver cela plus facile.

De toute façon, votre application va fonctionner comme avant, sauf que, parce que c'est une application graphique plutôt que d'une application Console, le système d'exploitation ne pas créer automatiquement une fenêtre de Console pour lui quand il démarre.(Donc évidemment des fonctions comme printf/scanf etc ne fonctionne pas.)

Licencié sous: CC-BY-SA avec attribution
Non affilié à StackOverflow
scroll top