Pagina 1 di 2 1 2 ultimoultimo
Visualizzazione dei risultati da 1 a 10 su 12
  1. #1

    c++ background senza console

    salve ragazzi volevo chiedere come si fa a lanciare un programma direttamente in background, che sia visibile solo nei processi.
    Questo codice mi permette di nascondere la console di avvio
    codice:
    #include <windows.h>
    
    int WINAPI WinMain(HINSTANCE inst,HINSTANCE prev,LPSTR cmd,int show)
    {
      // program starts here
      return 0;
    }
    
    // int main()  <--- do not have a main() anywhere in your program
    ma appare comunque un flash che nasconde la console.
    Volevo sapere se è possibile quando si clicca sull'eseguibile del programma, che questo parta solo in background senza il flash della finestra nascosta.
    Come si potrebbe fare?

  2. #2
    Devi impostare il tuo ambiente di sviluppo per generare un eseguibile GUI invece che un eseguibile console; di base è un'opzione del linker, ma se usi un IDE in genere dovresti trovare l'opzione da qualche parte nelle proprietà del progetto (ma forse fai prima a creare direttamente un progetto GUI).

    Per inciso, il codice sul forum va racchiuso tra tag [code] ... [/code], altrimenti perde l'indentazione; qui ho corretto io, in futuro ricordatene.
    Amaro C++, il gusto pieno dell'undefined behavior.

  3. #3
    Originariamente inviato da MItaly
    Devi impostare il tuo ambiente di sviluppo per generare un eseguibile GUI invece che un eseguibile console; di base è un'opzione del linker, ma se usi un IDE in genere dovresti trovare l'opzione da qualche parte nelle proprietà del progetto (ma forse fai prima a creare direttamente un progetto GUI).

    Per inciso, il codice sul forum va racchiuso tra tag [code] ... [/code], altrimenti perde l'indentazione; qui ho corretto io, in futuro ricordatene.

    cioa grazie delle info, ma con devc++ quale sarebbe l'opzione? nuovo prgetto- Windows application? oppure non è quello?

  4. #4
    Utente di HTML.it L'avatar di oregon
    Registrato dal
    Jul 2005
    residenza
    Roma
    Messaggi
    36,476
    Mi sembra sia proprio Windows Application ma forse ti servirebbe un Servizio NT (che non scriverei con DevC++ ...)
    No MP tecnici (non rispondo nemmeno!), usa il forum.

  5. #5
    Originariamente inviato da oregon
    Mi sembra sia proprio Windows Application ma forse ti servirebbe un Servizio NT (che non scriverei con DevC++ ...)
    si dovrebbe essere windows apllication, ma la parte di codice posso usare la stessa?

  6. #6
    Utente di HTML.it L'avatar di oregon
    Registrato dal
    Jul 2005
    residenza
    Roma
    Messaggi
    36,476
    Dipende da cosa devi scrivere ...
    No MP tecnici (non rispondo nemmeno!), usa il forum.

  7. #7
    Originariamente inviato da oregon
    Dipende da cosa devi scrivere ...
    lo stesso programma che ho scritto prima, solamente che deve vedersi solo nei processi, deve lavorare in background senza il flash iniziale della console invisibile che è alquanto fastidioso.


    codice:
    #include <windows.h>
    
    /*  Declare Windows procedure  */
    LRESULT CALLBACK WindowProcedure (HWND, UINT, WPARAM, LPARAM);
    
    /*  Make the class name into a global variable  */
    char szClassName[ ] = "WindowsApp";
    
    int WINAPI WinMain (HINSTANCE hThisInstance,
                        HINSTANCE hPrevInstance,
                        LPSTR lpszArgument,
                        int nFunsterStil)
    
    {
        HWND hwnd;               /* This is the handle for our window */
        MSG messages;            /* Here messages to the application are saved */
        WNDCLASSEX wincl;        /* Data structure for the windowclass */
    
        /* The Window structure */
        wincl.hInstance = hThisInstance;
        wincl.lpszClassName = szClassName;
        wincl.lpfnWndProc = WindowProcedure;      /* This function is called by windows */
        wincl.style = CS_DBLCLKS;                 /* Catch double-clicks */
        wincl.cbSize = sizeof (WNDCLASSEX);
    
        /* Use default icon and mouse-pointer */
        wincl.hIcon = LoadIcon (NULL, IDI_APPLICATION);
        wincl.hIconSm = LoadIcon (NULL, IDI_APPLICATION);
        wincl.hCursor = LoadCursor (NULL, IDC_ARROW);
        wincl.lpszMenuName = NULL;                 /* No menu */
        wincl.cbClsExtra = 0;                      /* No extra bytes after the window class */
        wincl.cbWndExtra = 0;                      /* structure or the window instance */
        /* Use Windows's default color as the background of the window */
        wincl.hbrBackground = (HBRUSH) COLOR_BACKGROUND;
    
        /* Register the window class, and if it fails quit the program */
        if (!RegisterClassEx (&wincl))
            return 0;
    
        /* The class is registered, let's create the program*/
        hwnd = CreateWindowEx (
               0,                   /* Extended possibilites for variation */
               szClassName,         /* Classname */
               "Windows App",       /* Title Text */
               WS_OVERLAPPEDWINDOW, /* default window */
               CW_USEDEFAULT,       /* Windows decides the position */
               CW_USEDEFAULT,       /* where the window ends up on the screen */
               544,                 /* The programs width */
               375,                 /* and height in pixels */
               HWND_DESKTOP,        /* The window is a child-window to desktop */
               NULL,                /* No menu */
               hThisInstance,       /* Program Instance handler */
               NULL                 /* No Window Creation data */
               );
    
        /* Make the window visible on the screen */
        ShowWindow (hwnd, nFunsterStil);
    
        /* Run the message loop. It will run until GetMessage() returns 0 */
        while (GetMessage (&messages, NULL, 0, 0))
        {
            /* Translate virtual-key messages into character messages */
            TranslateMessage(&messages);
            /* Send message to WindowProcedure */
            DispatchMessage(&messages);
        }
    
        /* The program return-value is 0 - The value that PostQuitMessage() gave */
        return messages.wParam;
    }
    
    
    /*  This function is called by the Windows function DispatchMessage()  */
    
    LRESULT CALLBACK WindowProcedure (HWND hwnd, UINT message, WPARAM wParam, LPARAM lParam)
    {
        switch (message)                  /* handle the messages */
        {
            case WM_DESTROY:
                PostQuitMessage (0);       /* send a WM_QUIT to the message queue */
                break;
            default:                      /* for messages that we don't deal with */
                return DefWindowProc (hwnd, message, wParam, lParam);
        }
    
        return 0;
    }
    questo è il codice che mi si presenta con devc++ iniziando il progetto come application windows, dove vado a inserire in tutto questo il mio vecchio codice del progetto normale?
    grazie in anticipo

  8. #8
    Utente di HTML.it L'avatar di oregon
    Registrato dal
    Jul 2005
    residenza
    Roma
    Messaggi
    36,476
    Tutto il tuo codice quale ? Continuo a non vederlo ....
    No MP tecnici (non rispondo nemmeno!), usa il forum.

  9. #9
    Originariamente inviato da oregon
    Tutto il tuo codice quale ? Continuo a non vederlo ....
    Il codice è questo:

    codice:
    #include <iostream>
    using namespace std;
    
    
    #if       _WIN32_WINNT < 0x0500
      #undef  _WIN32_WINNT
      #define _WIN32_WINNT   0x0500
    #endif
    #include <windows.h>
    
    void timeout()
      {
      for (int cntr = 3; cntr > 0; cntr--)
        {
        cout << "\r" << cntr << flush;
        Sleep( 1000 );
        }
      cout << "\r" << flush;
      }
    
    
    int main()
      {
      
      ShowWindow( GetConsoleWindow(), SW_HIDE );
    
      timeout();
      ShowWindow( GetConsoleWindow(), SW_RESTORE );
    
      cout << "All done!\n";
      system("pause");
      }
    Vorrei facesse tutto in background il conteggio, senza il flash della console iniziale....

  10. #10
    qualche consiglio?

Permessi di invio

  • Non puoi inserire discussioni
  • Non puoi inserire repliche
  • Non puoi inserire allegati
  • Non puoi modificare i tuoi messaggi
  •  
Powered by vBulletin® Version 4.2.1
Copyright © 2024 vBulletin Solutions, Inc. All rights reserved.