Return Styles: Pseud0ch, Terminal, Valhalla, NES, Geocities, Blue Moon.

Pages: 1-

a challenger appears

Name: Anonymous 2008-04-02 1:35

i challenge you, /prog/, to create a program that

1. takes a screenshot of the current desktop
2. exports it to a .bmp image, with a file name equal to the name of the application plus an eight digit random number.
3. compiles to less than 4.00 kb

i have achieved the above.
can you, /prog/?
are you EXPERT enough?

Name: Anonymous 2008-04-02 1:47

Yes. You only need to make your resolution small enough, such as 10*10px. Problem solved, thread over.

Name: Anonymous 2008-04-02 1:53

file name xxx.sh:

#!/bin/bash
import -window root xxx.sh`dd if=/dev/random bs=1 count=8`.bmp

a winrar is me

Name: Anonymous 2008-04-02 1:54

>>1
A .bmp? Why?

Name: Anonymous 2008-04-02 2:10

Because that's what his teacher asked him to do

Name: Anonymous 2008-04-02 2:13

>>2
he means have the program compile to less than 4.00 kb, not the image output.
changing screen resolution would be ineffectual in this case.

you are clearly not an EXPERT in understanding common grammar

Name: Anonymous 2008-04-02 2:16

this is pointless, i have a perl script take my screenshots and it works well and didn't take more than a 10 minutes to write

#!/usr/bin/perl

use warnings;
use strict;
use POSIX qw(strftime);

use constant SCREENSHOTS     => 'picz/screenshots';
use constant FILEEXT        => 'png';
use constant PREFIX            => 'laptop_';
use constant SCREEN_CMD        => "import -window root -screen";

$|=1;

my $filename = PREFIX.`uname`."-".`uname -r`."-".strftime("%F", localtime(time()));
$filename =~ s/[\r\n]//g;
my $append = '';
my $c = 0;

my $fullname = SCREENSHOTS."/".$filename.".".FILEEXT;

while(-f $fullname) {
    $c++;
    $append = "-".$c;
    $fullname = SCREENSHOTS."/".$filename.$append.".".FILEEXT;
}

for(my $c=1;$c<5;$c++) {
    print("\a");
    sleep(1);
}
   
system(SCREEN_CMD." ".$fullname);

exit(0);


like people say, using import is all you need on a posix system but i have this script so it automatically saves my screenshots in order and gives me a few seconds, thought i think import can do this builtin

Name: Anonymous 2008-04-02 2:17

base64decode the following, save as .exe and run on windows. 4.00kb exactly, i believe



TVqQAAMAAAAEAAAA//8AALgAAAAAAAAAQAAAAAAAAAAAAAAAAAAAAAAAAAAA
AAAAAAAAAAAAAAAAAAAAuAAAAA4fug4AtAnNIbgBTM0hVGhpcyBwcm9ncmFt
IGNhbm5vdCBiZSBydW4gaW4gRE9TIG1vZGUuDQ0KJAAAAAAAAAB1n/nbMf6X
iDH+l4gx/peIsuKZiDD+l4h+3J6IMP6XiAfYmogw/peIUmljaDH+l4gAAAAA
AAAAAFBFAABMAQMAUgfzRwAAAAAAAAAA4AAPAQsBBgAAEAAAABAAAABQAABA
ZwAAAGAAAABwAAAAAEAAABAAAAACAAAEAAAAAQAAAAQAAAAAAAAAAIAAAAAQ
AAAAAAAAAgAAAAAAEAAAEAAAAAAQAAAQAAAAAAAAEAAAAAAAAAAAAAAAAHAA
ANQAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA
AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA
AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAVVBYMAAAAAAAUAAAABAAAAAA
AAAABAAAAAAAAAAAAAAAAAAAgAAA4FVQWDEAAAAAABAAAABgAAAACgAAAAQA
AAAAAAAAAAAAAAAAAEAAAOBVUFgyAAAAAAAQAAAAcAAAAAIAAAAOAAAAAAAA
AAAAAAAAAABAAADAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA
AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA
AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA
AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA
AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA
AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA
AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA
AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA
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
PHAAAAAAAAAAAAAAAAAAAG1wAABYcAAAAAAAAAAAAAAAAAAAAAAAAAAAAAB6
cAAAiHAAAJhwAACocAAAtnAAAMRwAAAAAAAAZAAAgAAAAABLRVJORUwzMi5E
TEwATVNWQlZNNjAuRExMAAAATG9hZExpYnJhcnlBAABHZXRQcm9jQWRkcmVz
cwAAVmlydHVhbFByb3RlY3QAAFZpcnR1YWxBbGxvYwAAVmlydHVhbEZyZWUA
AABFeGl0UHJvY2VzcwAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA
AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA
AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA
AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA
AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA
AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA
AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA
AA==

Name: Anonymous 2008-04-02 2:22

>>7
sleep(1)
fail.
import -pause N etc

Name: Anonymous 2008-04-02 2:47

>>3
I JUST TRIED IT BUT ITS TAKING A LONG TIME

Name: Anonymous 2008-04-02 3:56

I could probably do it in under 1Kb of Asm on Windows.

Name: Anonymous 2008-04-02 4:50

>>11
I could probably do it in under 64b of Asm on Amiga.

In other words, code or you can't. No one cares about what you probably could do.

Name: Anonymous 2008-04-02 5:09

screencapture `perl -e 'print"name";for(1..8) {print int(rand(10));}print".png"'`

Name: Anonymous 2008-04-02 5:47

//Compile with
//cl screenshot.cpp /Os /DUNICODE /link /entry:ss /subsystem:windows kernel32.lib user32.lib gdi32.lib
//Shit code, isn't it? I'm too lazy to make it good.
//In before NULL, NULL, NULL, NULL, NULL, NULL, NULL, NULL, NULL, NULL, NULL, NULL, NULL, NULL, NULL, NULL, NULL, NULL, NULL, NULL, NULL, NULL, NULL, NULL, NULL, NULL, NULL, NULL, NULL, NULL, NULL, NULL, NULL, NULL, NULL, NULL, NULL, NULL, NULL, NULL, NULL, NULL, NULL, NULL, NULL, NULL, NULL, NULL, NULL, NULL, NULL, NULL, NULL, NULL, NULL, NULL, NULL, NULL, NULL, NULL, NULL, NULL, NULL, NULL, NULL, NULL, NULL, NULL, NULL, NULL, NULL, NULL, NULL, NULL, NULL, NULL, NULL, NULL, NULL, NULL, NULL, NULL, NULL, NULL

#include <windows.h>
#include <windowsx.h>

void errhandler(char* str, void* = 0) {
    MessageBoxA(HWND_DESKTOP, str, "Error", MB_OK);
    ExitProcess(EXIT_FAILURE);
}

PBITMAPINFO CreateBitmapInfoStruct(HWND hwnd, HBITMAP hBmp)
{
    BITMAP bmp;
    PBITMAPINFO pbmi;
    WORD    cClrBits;

    // Retrieve the bitmap color format, width, and height.
    if (!GetObject(hBmp, sizeof(BITMAP), (LPSTR)&bmp))
        errhandler("GetObject", hwnd);

    // Convert the color format to a count of bits.
    cClrBits = (WORD)(bmp.bmPlanes * bmp.bmBitsPixel);
    if (cClrBits == 1)
        cClrBits = 1;
    else if (cClrBits <= 4)
        cClrBits = 4;
    else if (cClrBits <= 8)
        cClrBits = 8;
    else if (cClrBits <= 16)
        cClrBits = 16;
    else if (cClrBits <= 24)
        cClrBits = 24;
    else cClrBits = 32;

    // Allocate memory for the BITMAPINFO structure. (This structure
    // contains a BITMAPINFOHEADER structure and an array of RGBQUAD
    // data structures.)

     if (cClrBits != 24)
         pbmi = (PBITMAPINFO) LocalAlloc(LPTR,
                    sizeof(BITMAPINFOHEADER) +
                    sizeof(RGBQUAD) * (1<< cClrBits));

     // There is no RGBQUAD array for the 24-bit-per-pixel format.

     else
         pbmi = (PBITMAPINFO) LocalAlloc(LPTR,
                    sizeof(BITMAPINFOHEADER));

    // Initialize the fields in the BITMAPINFO structure.

    pbmi->bmiHeader.biSize = sizeof(BITMAPINFOHEADER);
    pbmi->bmiHeader.biWidth = bmp.bmWidth;
    pbmi->bmiHeader.biHeight = bmp.bmHeight;
    pbmi->bmiHeader.biPlanes = bmp.bmPlanes;
    pbmi->bmiHeader.biBitCount = bmp.bmBitsPixel;
    if (cClrBits < 24)
        pbmi->bmiHeader.biClrUsed = (1<<cClrBits);

    // If the bitmap is not compressed, set the BI_RGB flag.
    pbmi->bmiHeader.biCompression = BI_RGB;

    // Compute the number of bytes in the array of color
    // indices and store the result in biSizeImage.
    // For Windows NT, the width must be DWORD aligned unless
    // the bitmap is RLE compressed. This example shows this.
    // For Windows 95/98/Me, the width must be WORD aligned unless the
    // bitmap is RLE compressed.
    pbmi->bmiHeader.biSizeImage = ((pbmi->bmiHeader.biWidth * cClrBits +31) & ~31) /8
                                  * pbmi->bmiHeader.biHeight;
    // Set biClrImportant to 0, indicating that all of the
    // device colors are important.
     pbmi->bmiHeader.biClrImportant = 0;
     return pbmi;
 }

void CreateBMPFile(HWND hwnd, LPTSTR pszFile, PBITMAPINFO pbi,
                  HBITMAP hBMP, HDC hDC)
 {
     HANDLE hf;                 // file handle
    BITMAPFILEHEADER hdr;       // bitmap file-header
    PBITMAPINFOHEADER pbih;     // bitmap info-header
    LPBYTE lpBits;              // memory pointer
    DWORD dwTotal;              // total count of bytes
    DWORD cb;                   // incremental count of bytes
    BYTE *hp;                   // byte pointer
    DWORD dwTmp;

    pbih = (PBITMAPINFOHEADER) pbi;
    lpBits = (LPBYTE) GlobalAlloc(GMEM_FIXED, pbih->biSizeImage);

    if (!lpBits)
         errhandler("GlobalAlloc", hwnd);

    // Retrieve the color table (RGBQUAD array) and the bits
    // (array of palette indices) from the DIB.
    if (!GetDIBits(hDC, hBMP, 0, (WORD) pbih->biHeight, lpBits, pbi,
        DIB_RGB_COLORS))
    {
        int i = GetLastError();
        errhandler("GetDIBits", hwnd);
    }

    // Create the .BMP file.
    hf = CreateFile(pszFile,
                   GENERIC_READ | GENERIC_WRITE,
                   (DWORD) 0,
                    NULL,
                   CREATE_ALWAYS,
                   FILE_ATTRIBUTE_NORMAL,
                   (HANDLE) NULL);
    if (hf == INVALID_HANDLE_VALUE)
        errhandler("CreateFile", hwnd);
    hdr.bfType = 0x4d42;        // 0x42 = "B" 0x4d = "M"
    // Compute the size of the entire file.
    hdr.bfSize = (DWORD) (sizeof(BITMAPFILEHEADER) +
                 pbih->biSize + pbih->biClrUsed
                 * sizeof(RGBQUAD) + pbih->biSizeImage);
    hdr.bfReserved1 = 0;
    hdr.bfReserved2 = 0;

    // Compute the offset to the array of color indices.
    hdr.bfOffBits = (DWORD) sizeof(BITMAPFILEHEADER) +
                    pbih->biSize + pbih->biClrUsed
                    * sizeof (RGBQUAD);

    // Copy the BITMAPFILEHEADER into the .BMP file.
    if (!WriteFile(hf, (LPVOID) &hdr, sizeof(BITMAPFILEHEADER),
        (LPDWORD) &dwTmp,  NULL))
    {
       errhandler("WriteFile", hwnd);
    }

    // Copy the BITMAPINFOHEADER and RGBQUAD array into the file.
    if (!WriteFile(hf, (LPVOID) pbih, sizeof(BITMAPINFOHEADER)
                  + pbih->biClrUsed * sizeof (RGBQUAD),
                  (LPDWORD) &dwTmp, ( NULL)))
        errhandler("WriteFile", hwnd);

    // Copy the array of color indices into the .BMP file.
    dwTotal = cb = pbih->biSizeImage;
    hp = lpBits;
    if (!WriteFile(hf, (LPSTR) hp, (int) cb, (LPDWORD) &dwTmp,NULL))
           errhandler("WriteFile", hwnd);

    // Close the .BMP file.
     if (!CloseHandle(hf))
           errhandler("CloseHandle", hwnd);

    // Free memory.
    GlobalFree((HGLOBAL)lpBits);
}

void ss() {
    HWND hDesktopWindow = GetDesktopWindow();
    HDC hDesktopDC = GetWindowDC(HWND_DESKTOP);
    int width = GetSystemMetrics(SM_CXSCREEN), height = GetSystemMetrics(SM_CYSCREEN);
    HBITMAP hBitmap = CreateCompatibleBitmap(hDesktopDC, width, height);
    HDC hBitmapDC = CreateCompatibleDC(hDesktopDC);
    SelectBitmap(hBitmapDC, hBitmap);
    BitBlt(hBitmapDC,0,0,width,height, hDesktopDC,0,0, SRCCOPY);
    DeleteDC(hBitmapDC);
    ReleaseDC(HWND_DESKTOP, hDesktopDC);

    BITMAP bitmap;
    GetObject(hBitmap, sizeof(bitmap), &bitmap);

    BITMAPINFOHEADER bi = { sizeof BITMAPINFOHEADER, bitmap.bmWidth, bitmap.bmHeight, 1, bitmap.bmPlanes * bitmap.bmBitsPixel,
        BI_RGB };

    int colors = 1 << bi.biBitCount;
    if(colors > 256)
        colors = 0;
    unsigned length = bi.biSize + colors * sizeof RGBQUAD;

    HDC hDC = GetDC(NULL);
    HPALETTE hPal = (HPALETTE)GetStockObject(DEFAULT_PALETTE);

    SelectPalette(hDC, hPal, FALSE);
    RealizePalette(hDC);

    HANDLE hDIB = GlobalAlloc(GMEM_FIXED, length);
    if(!hDIB)
        errhandler("GlobalAlloc", 0);

    LPBITMAPINFOHEADER lpbi = (LPBITMAPINFOHEADER)hDIB;
    *lpbi = bi;

    if(!GetDIBits(hDC, hBitmap, 0, bi.biHeight, NULL, (LPBITMAPINFO)lpbi, DIB_RGB_COLORS))
        errhandler("GetDIBits186");

    bi = *lpbi;
    if (bi.biSizeImage == 0){
        bi.biSizeImage = ((((bi.biWidth * bi.biBitCount) + 31) & ~31) / 8)
                        * bi.biHeight;
    }

    length += bi.biSizeImage;
    hDIB = GlobalReAlloc(hDIB, length, GMEM_MOVEABLE);
    if(!hDIB)
        errhandler("GlobalRealloc");

    lpbi = (LPBITMAPINFOHEADER)hDIB;
    BOOL bGotBits = GetDIBits( hDC, hBitmap,
                0L,                // Start scan line
                (DWORD)bi.biHeight,        // # of scan lines
                (LPBYTE)lpbi             // address for bitmap bits
                + (bi.biSize + colors * sizeof RGBQUAD),
                (LPBITMAPINFO)lpbi,        // address of bitmapinfo
                (DWORD)DIB_RGB_COLORS);        // Use RGB for color table

    if(!bGotBits)
    {
        errhandler("GetDIBits2");
    }

    PBITMAPINFO info = CreateBitmapInfoStruct(NULL,hBitmap);
    CreateBMPFile(0, L"ss12345678.bmp", info, (HBITMAP)hBitmap, hDC);
    ExitProcess(0);
}

Name: Anonymous 2008-04-02 5:48

^ pretend there were code tags

Name: Anonymous 2008-04-02 8:40

>>14 is clearly superior to >>3
There's no reason at all to use unix

Name: Anonymous 2008-04-02 12:12

>>16
There's no reason at all to use unix
Aside from the fact it isn't shit.

Name: Anonymous 2008-04-02 17:58

>>14
NULL, NULL, NULL, NULL, NULL, NULL, NULL, NULL, NULL, NULL, NULL, NULL, NULL, NULL, NULL, NULL, NULL, NULL, NULL, NULL, NULL, NULL, NULL, NULL, NULL, NULL, NULL, NULL, NULL, NULL, NULL, NULL, NULL, NULL, NULL, NULL, NULL, NULL, NULL, NULL, NULL, NULL, NULL, NULL, NULL, NULL, NULL, NULL, NULL, NULL, NULL, NULL, NULL, NULL, NULL, NULL, NULL, NULL, NULL, NULL, NULL, NULL, NULL, NULL, NULL, NULL, NULL, NULL, NULL, NULL, NULL, NULL, NULL, NULL, NULL, NULL, NULL, NULL, NULL, NULL, NULL, NULL, NULL, NULL, NULL, NULL, NULL, NULL, NULL, NULL, NULL, NULL, NULL, NULL, NULL, NULL, NULL, NULL, NULL, NULL, NULL, NULL, NULL, NULL, NULL, NULL, NULL, NULL, NULL, NULL, NULL, NULL, NULL, NULL, NULL, NULL, NULL, NULL, NULL, NULL, NULL, NULL, NULL, NULL, NULL, NULL, NULL, NULL, NULL, NULL, NULL, NULL, NULL, NULL, NULL, NULL, NULL, NULL, NULL, NULL, NULL, NULL, NULL, NULL, NULL, NULL, NULL, NULL, NULL, NULL, NULL, NULL, NULL, NULL, NULL, NULL, NULL, NULL, NULL, NULL, NULL, NULL, NULL, NULL, NULL, NULL, NULL, NULL, NULL, NULL, NULL, NULL, NULL, NULL, NULL, NULL, NULL, NULL, NULL, NULL, NULL, NULL, NULL, NULL, NULL, NULL, NULL, NULL, NULL, NULL, NULL, NULL, NULL, NULL, NULL, NULL, NULL, NULL, NULL, NULL, NULL, NULL, NULL, NULL, NULL, NULL, NULL, NULL, NULL, NULL, NULL, NULL, NULL, NULL, NULL, NULL, NULL, NULL, NULL, NULL, NULL, NULL, NULL, NULL, NULL, NULL

Name: Anonymous 2008-04-03 4:33

>>18
that's not true!!!

Name: Anonymous 2008-04-03 4:48

>>17
Less shit than Windows, maybe, but still quite shit. Plan 9 fo lyfe!

Name: Anonymous 2008-04-03 8:20

#!/bin/sh
scrot

Name: Anonymous 2008-04-03 9:13

>>20
p9 is unix.
It's POSIX too.

Name: Anonymous 2008-04-03 11:06

Wrappers for import are NOT screenshot-taking programs. import is the program. A five-line bash script is not a program.

Name: Anonymous 2008-04-03 11:12

>>22
OH HOW WRONG YOU ARE

Name: Anonymous 2008-04-03 11:16

Nobody uses POSIX anyway.

Name: Anonymous 2008-04-03 21:04

>>19
That's false !!!

Name: Anonymous 2010-12-17 1:27

Are you GAY?
Are you a NIGGER?
Are you a GAY NIGGER?

If you answered "Yes" to all of the above questions, then GNAA (GAY NIGGER ASSOCIATION OF AMERICA) might be exactly what you've been looking for!

Name: Sgt.Kabukiman 2012-05-21 13:42

All work and no play makes Jack a dull boy
 All work and no play makes Jack a dull boy
 All work and no play makes Jack a dull boy
 All work and no play makes Jack a dull boy
 All work and no play makes Jack a dull boy
 All work and no play makes Jack a dull boy
 All work and no play makes Jack a dull boy
 All work and no play makes Jack a dull boy
 All work and no play makes Jack a dull boy

Don't change these.
Name: Email:
Entire Thread Thread List