Auf die Zwischenablage zugreifen.



  • Ich google jetzt schon geraume Zeit, weiß aber nicht wie ich mein Problem am besten lösen könnte.

    Ich will auf den aktuellen Inhalt des Desktops zugreifen und bestimmte Farbwerte von Pixeln bestimmen können. Meine Ideen:

    1.) Per DirectX direkt auf den Grafikkartenspeicher zugreifen

    oder

    2.) Ganz simpel die Zwischenablage füllen und darauf zugreifen.

    Bei Lösung zwei weiß ich aber nicht wie mir GetClipboardData (auf den Inhalt zugreifen) weiterhelfen könnte, in diesem Falle ist die MSDN echt nicht ergiebig.

    Habt ihr eine gute Idee?



  • Du willst einfach nur an die Pixel des aktuellen Desktops kommen ?!
    WinAPI-Code wäre:

    HDC deskDC;
    COLORREF pixel;
    TCHAR blupp[100];
    
    deskDC=GetDC(HWND_DESKTOP);
       pixel=GetPixel(deskDC,10,10);
       sprintf(blupp,"Der Pixel an der Stelle (10/10) ist r:%i, g:%i, b:%i",GetRValue(pixel),GetGValue(pixel),GetBValue(pixel));
       MessageBox(0,blupp,"bla",MB_OK);
    ReleaseDC(HWND_DESKTOP,deskDC);
    


  • Du meinst so etwas wie einen Screenshot machen? Da gibt es einige Samples mit WinAPI, wenn ich mich nicht irre sogar eins bei den MSDN-Samples.

    http://www.c-plusplus.net/forum/viewtopic-var-t-is-105677.html



  • Das HWND_DESKTOP kriegst du mit GetDesktopWindow.

    Die DirectDraw Variante klingt aber auch ok.



  • geeky schrieb:

    Du willst einfach nur an die Pixel des aktuellen Desktops kommen ?!
    WinAPI-Code wäre:

    HDC deskDC;
    COLORREF pixel;
    TCHAR blupp[100];
    
    deskDC=GetDC(HWND_DESKTOP);
       pixel=GetPixel(deskDC,10,10);
       sprintf(blupp,"Der Pixel an der Stelle (10/10) ist r:%i, g:%i, b:%i",GetRValue(pixel),GetGValue(pixel),GetBValue(pixel));
       MessageBox(0,blupp,"bla",MB_OK);
    ReleaseDC(HWND_DESKTOP,deskDC);
    

    Das sieht so ziemlich genau nach dem aus was ich suche.
    Ich teste es eben aus 🙂



  • Ausgiebig getestet und für gut befunden, danke sehr 👍


Anmelden zum Antworten