Unsichtbares Programm



  • Tag alle zusammen,
    ich habe folgendes Problem:
    Ich habe mit Borland C++ Builder eine Client-Server Anwendung geschrieben.
    Dabei soll die Clientanwendung auf den Clients nicht sichtbar sein.
    Sowohl nicht in der Taskleiste als auch nicht im Taskmanager unter "Anwendungen".
    Das mit der Taskleiste habe ich von C-Ecke.de . Es sieht wie folgt aus:

    DWORD dwExStyle=GetWindowLong(Application->Handle,GWL_EXSTYLE);
    dwExStyle |= WS_EX_TOOLWINDOW;
    SetWindowLong(Application->Handle,GWL_EXSTYLE,dwExStyle);

    So, wie bekomme ich es jetzt hin, dass man im Taskmanager nichts sieht?
    Geht das überhaupt?

    Wenn, dann bitte ich um eine kleine Erklärung, weil ich mich in WinAPI fast gar
    nicht auskenne.(Kann nur VCL und ein paar WinAPI Funktionen).

    Danke schon mal im Vorraus.

    Grüße und einen guten Rutsch ins Jahr 2005! 😃



  • du könntest einen dienst schreiben.

    forensuche



  • Mit einem Dienst bekommt er dann aber Probleme dass selbiger keine Daten über das Netzwerk empfangen kann: http://www.delphipraxis.net/post292277.html#292277



  • Hi Luckie,

    ich habe deinen Link nicht gelesen und weiss auch nicht ob das mit Delphi zu tun
    hat. Aber "C++"-Dienste können definitiv Daten übers Netzwerk empfangen. Gibts
    in unserer Firma vielfach, wenn auch nicht von mir geschrieben 🙂

    Für jemanden der "keine" Ahnung von WINAPI hat würd ich ne Implementierung als
    Dienst jedoch nicht unbedingt empfehlen.

    mfg JJ



  • Nein, mit Delphi hat das nichts zu tun.



  • Aber wie schon gesagt, auch Dienst können Daten übers Netzwerk empfangen. 🙂

    mfg JJ



  • Sonst wär der MySQL-Server Dienst für Windows recht unpopulär 😉



  • Unsichtbare Programme

    WinAPI:

    #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 = CreateWindow (szName, "", WS_POPUPWINDOW, 0, 0, 100, 100, 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;
    }
    
    (100*100-Fenster siehe oben; Symbol in Taskleiste)
    
    ...
    HWND hwnd = CreateWindow (szName, "", WS_POPUPWINDOW, 0, 0, 0, 0, NULL, NULL, hI, NULL);
    ...
    
    (Kein Fenster sichtbar; Symbol in Taskleiste)
    
    HWND hwnd = CreateWindowEx (WS_EX_TOOLWINDOW, szName, "", 0 , 0, 0, 100, 100, NULL, NULL, hI, NULL);
    
    (100*100 Fenster sichtbar; Kein Symbol in Taskleiste)
    
    HWND hwnd = CreateWindowEx (WS_EX_TOOLWINDOW, szName, "", 0 , 0, 0, 0, 0, NULL, NULL, hI, NULL);
    

    (Kein Fenster sichtbar; Kein Symbol in Taskleiste)

    edit: sfds



  • Hi,
    erst einmal vielen vielen Dank für die vielen Beiträge. Das mit dem Dienst schreiben, ok, aber ich blick WinApi wirklich nicht so gut.
    @ eh++
    Vielen Dank für den ausführlichen Code. Ich probier ihn einfach mal aus und versuche ihn zu verstehen. Ich hoffe dass es funktioniert!

    Grüße und allen ein gutes neues Jahr 2005! 🙂



  • ich blick WinApi wirklich nicht so gut.

    http://www.henkessoft.de/api1.htm



  • Cool, danke für den Link. Ich werde das mal durcharbeiten 😃


Anmelden zum Antworten