unsichtbare anwedung...



  • @Cpp_Junky oh man

    das ich das tun kann ist mir bewußt.

    Ich will ein Errinerungsprogramm bastelt und dazu in WM_TIMER message reagieren.

    Daher hab ich ja auch "und Beenden die Anwendung" geschrieben!!!!!!!!

    😡



  • Bitte freundlich bleiben, wenn ne Antwort erwünscht ist. Sonst ist hier ganz schnell dicht.

    EDIT:
    Satz deutsch gemacht 😉

    [ Dieser Beitrag wurde am 02.10.2002 um 15:03 Uhr von dEUs editiert. ]



  • Was ist ???
    Also so richtig weißt Du nicht, was Du willst, oder??

    Siehe:

    - wie kann ich es mit der MFC schaffen, dass 1. kein fenster angezeigt wird?
    2. kein icon in der taskleiste (auch nicht im systray) ?
    - Ich will ein Errinerungsprogramm bastelt und dazu in WM_TIMER message reagieren.

    Bedeutet also folgendes: Ich will mir keinen Fernseher kaufen, aber trotzdem abends zu Hause TVTotal schauen, wie mach ich das?



  • Original erstellt von RenéG:
    **Was ist ???
    Also so richtig weißt Du nicht, was Du willst, oder??

    Siehe:
    Bedeutet also folgendes: Ich will mir keinen Fernseher kaufen, aber trotzdem abends zu Hause TVTotal schauen, wie mach ich das?**

    Mit einer TV-Karte! 😃 ...nee Spaß beiseite...

    - wie kann ich es mit der MFC schaffen, dass 1. kein fenster angezeigt wird?
    2. kein icon in der taskleiste (auch nicht im systray) ?
    - Ich will ein Errinerungsprogramm bastelt und dazu in WM_TIMER message reagieren

    Ich würde mir ein kleines Progg basteln(Win32) und es per "Geplante Tasks" starten...



  • @Hexagon

    Ich würde mir ein kleines Progg basteln(Win32) und es per "Geplante Tasks" starten...

    geht leider nicht da es auch unter nt 4 laufen soll und es dort sowas nicht gibt.

    @RenéG

    - wie kann ich es mit der MFC schaffen, dass 1. kein fenster angezeigt wird?
    2. kein icon in der taskleiste (auch nicht im systray) ?
    - Ich will ein Errinerungsprogramm bastelt und dazu in WM_TIMER message reagieren.

    Ich will ein Dialog nicht sichtbar und nicht in der Taskleiste. Wiso geht beides nicht??

    <:D> Hi!
    Schau dir mal folgenden Beitrag an:
    http://f25.parsimony.net/forum63133/messages/2833.htm

    hat diesen link gepostet und dort wurde eine Möglichkeit beschrieben die bei mir nicht funkts.

    Gibt es keine weitere Möglichkeit z.B. mit der win api ???



  • @Deadmaker_HUNTER:
    Timer lassen sich auch ohne Dialog-Klasse programmieren.



  • ich glaube hier liegt irgendwie eine verwechslung vor

    ich bin nicht "< >"

    frag mich auch was er hier im thread will 😵

    ich checke erstmal cpp_junky's version

    thx4help bis hierhin 🙂



  • Cpp_Junky Timer lassen sich auch ohne Dialog-Klasse programmieren.

    finde kein WM_TIMER Ereigniss bei der App

    Deadmaker_HUNTER frag mich auch was er hier im thread will 😵

    naja wuzu ein neues Thread aufmachen wenn in dem hier das Thema ist das ich suche??



  • Das kann man sich doch ganz schnell selberschreiben. Versuchs mal mit GetTickCount(); Das ganze musst du dann nur in Minuten/Stunden/wasauchimmer umrechnen. Such im Internet nach Timer-Klassen! Es gibt mit Sicherheit noch mehr Alternativen.



  • Ich hab jetzt den Code aus dem Beispiel im FAQ benutzt, aber hab das problem, dass sich die anwendung kurz nach dem start selber beendet 😞

    und ich kann auch nicht alles in InitInstance machen, weil ich einen CAsyncSocket oder CSocket benutze.



  • Ich hab mir auchmal sowas erstellt:

    //In InitInstance
        CxxxDlg dlg;
        m_pMainWnd = &dlg;
        dlg.Create(IDD_XXX_DIALOG);
        dlg.ProcessMessages();
    

    Dann der CxxxDlg die Funktion ProcessMessages hinzufügen:

    void ProcessMessages()
    {
        MSG m_msgCur;
        while(GetMessage(&m_msgCur, NULL, NULL, NULL))
        {
            if (!PreTranslateMessage(&m_msgCur))
            {
                TranslateMessage(&m_msgCur);
                DispatchMessage(&m_msgCur);
            }
        };
    }
    

    Nun kannst wie bei einem normalen Dialog WM_Timer hinzufügen. Bei Close etc musst du aber DestroyWindow aufrufen und nicht die CDialog::Onxxx() !



  • in InitInstance()
    
        m_pMainWnd = new CMainFrame();
        m_pMainWnd->ShowWindow(SW_HIDE);
        m_pMainWnd->UpdateWindow();
    
    CMainFrame::CMainFrame()
    {
        RECT r;
        r.left   = 0;
        r.top    = 0;
        r.right  = 0;
        r.bottom = 0;
    
            Create( NULL, "Simple Nonvisible MFC App", WS_EX_TOOLWINDOW, r, NULL, NULL, 0, NULL );
    }
    

    Noch besser ist jedoch direkt WinAPI (MFC unsichtbar macht wenig Sinn):

    #include <windows.h> 
    unsigned int HotKeyID1 = 100; 
    unsigned int HotKeyID2 = 101; 
    
    LRESULT CALLBACK WndProc (HWND hwnd, UINT message, WPARAM wParam, LPARAM lParam) 
    { 
     switch (message) 
     { 
      case WM_HOTKEY: 
        if(wParam == HotKeyID1) MessageBox(hwnd, "Alt+Shift+F11 wurde gedrückt." , "Nachricht WM_HOTKEY wurde erzeugt.", MB_OK); 
        if(wParam == HotKeyID2) MessageBox(hwnd, "Alt+Shift+F12 wurde gedrückt." , "Nachricht WM_HOTKEY wurde erzeugt.", MB_OK); 
      return 0; 
    
      case WM_DESTROY: 
        PostQuitMessage (0); 
      return 0; 
     } 
    
     return DefWindowProc (hwnd, message, wParam, lParam); 
    } 
    
    int WINAPI WinMain (HINSTANCE hI, HINSTANCE hPrI, PSTR szCmdLine, int iCmdShow) 
    { 
      char szName[] = "MeineKlasse"; 
      HBRUSH MyBrush = CreateSolidBrush( RGB( 0, 150, 255 ) ); 
      WNDCLASS wc; 
      MSG msg; 
    
      wc.style         = CS_HREDRAW | CS_VREDRAW; 
      wc.lpfnWndProc   = WndProc; 
      wc.cbClsExtra    = 0; 
      wc.cbWndExtra    = 0; 
      wc.hInstance     = hI; 
      wc.hIcon         = LoadIcon (NULL, IDI_WINLOGO); 
      wc.hCursor       = 0; 
      wc.hbrBackground = MyBrush; 
      wc.lpszMenuName  = NULL; 
      wc.lpszClassName = szName; 
    
      RegisterClass (&wc); 
    
      HWND hwnd = CreateWindowEx (WS_EX_TOOLWINDOW, szName, "", 0 , 0, 0, 0, 0, NULL, NULL, hI, NULL); 
    
      RegisterHotKey(hwnd, HotKeyID1, MOD_ALT | MOD_SHIFT, VK_F11); 
      RegisterHotKey(hwnd, HotKeyID2, MOD_ALT | MOD_SHIFT, VK_F12); 
    
      ShowWindow   (hwnd, iCmdShow); 
      UpdateWindow (hwnd); 
    
      while (GetMessage (&msg, NULL, 0, 0)) 
      { 
        TranslateMessage (&msg); 
        DispatchMessage  (&msg); 
      } 
      return msg.wParam; 
    }
    




  • Schau mal in die FAQ unter Programm als Service



  • Ich würde auch direkt Winapi vorschlagen, und dann halt auf WM_TIMER reagieren, falls du irgendwelche MFC-Klassen verwendest, kannst du ja trozdem die passenden Headers einbinden.


Anmelden zum Antworten