Jump to content
View in the app

A better way to browse. Learn more.

Tuts 4 You

A full-screen app on your home screen with push notifications, badges and more.

To install this app on iOS and iPadOS
  1. Tap the Share icon in Safari
  2. Scroll the menu and tap Add to Home Screen.
  3. Tap Add in the top-right corner.
To install this app on Android
  1. Tap the 3-dot menu (⋮) in the top-right corner of the browser.
  2. Tap Add to Home screen or Install app.
  3. Confirm by tapping Install.

Need some Tips for this keygen template I made

Featured Replies

Posted

Hi guys,

I'll start by saying I don't have much experience with WinApi. I'd like to show you the code for my keygen template. Any suggestions or improvements are welcome.

I'm currently unable to set transparency in edit texts. If anyone knows how to do this without forcing redrawing using invalidateRect, I'd be very grateful.

I also wanted to point out that I used LLMs because I couldn't find much online about managing transparency in edit texts.

Thanks in advance, hacktooth.

IMPORTANT DUE INCOPATIBILE UFMOD LIBRARY ARCHITETTURE : Target: Release x86

HERE THE SOURCE CODE:

#include <windows.h>
#include <wingdi.h>

#include "ufmod.h"
#include "resource.h"
#include "song.h"

#pragma comment(lib, "Msimg32.lib")
#pragma comment(lib, "ufmod.lib")
#pragma comment(lib, "winmm.lib")

HBITMAP hBackground = NULL;
HBRUSH hBrushBackground = NULL;
COLORREF transparentColor = RGB(255, 0, 255); // Magenta color key

HBITMAP hBtnCloseNormal = NULL;
HBITMAP hBtnCloseHover = NULL;

INT_PTR CALLBACK DialogProc(HWND hwndDlg, UINT uMsg, WPARAM wParam, LPARAM lParam) {
    switch (uMsg) {
    case WM_INITDIALOG:

        SetDlgItemText(hwndDlg, EDIT_username, L"Enter Username");

        // play chip-tune <3
        uFMOD_SetVolume(20);
        uFMOD_PlaySong(songData, (void*)sizeof(songData), XM_MEMORY);

        // BMP in background
        hBackground = LoadBitmap(GetModuleHandle(NULL), MAKEINTRESOURCE(BMP_form));
        if (hBackground) {
            BITMAP bm;
            GetObject(hBackground, sizeof(bm), &bm);
            SetWindowPos(hwndDlg, NULL, 0, 0, bm.bmWidth, bm.bmHeight,
                SWP_NOMOVE | SWP_NOZORDER);
        }

        // --- TRASPARENZA ---
        //SetWindowLong(hwndDlg, GWL_EXSTYLE, GetWindowLong(hwndDlg, GWL_EXSTYLE) | WS_EX_LAYERED);

        // set magenta color key
        SetLayeredWindowAttributes(hwndDlg, transparentColor, 0, LWA_COLORKEY);
        // --- FINE  ---

        // BMP close
        hBtnCloseNormal = LoadBitmap(GetModuleHandle(NULL), MAKEINTRESOURCE(BMP_close));
        hBtnCloseHover = LoadBitmap(GetModuleHandle(NULL), MAKEINTRESOURCE(BMP_close_hover));

        if (hBtnCloseNormal) {
            HWND hBtnClose = GetDlgItem(hwndDlg, BTN_CLOSE);
            if (hBtnClose) {
                BITMAP bm;
                GetObject(hBtnCloseNormal, sizeof(bm), &bm);
                SetWindowPos(hBtnClose, NULL, 0, 0, bm.bmWidth, bm.bmHeight,
                    SWP_NOMOVE | SWP_NOZORDER);
            }
        }

        return TRUE;

    case WM_ERASEBKGND:
        return TRUE;

    case WM_PAINT: {
        PAINTSTRUCT ps;
        HDC hdc = BeginPaint(hwndDlg, &ps);

        if (hBackground) {
            HDC hdcMem = CreateCompatibleDC(hdc);
            HBITMAP hOldBmp = (HBITMAP)SelectObject(hdcMem, hBackground);

            BITMAP bm;
            GetObject(hBackground, sizeof(bm), &bm);

            BitBlt(hdc, 0, 0, bm.bmWidth, bm.bmHeight, hdcMem, 0, 0, SRCCOPY);

            SelectObject(hdcMem, hOldBmp);
            DeleteDC(hdcMem);
        }

        EndPaint(hwndDlg, &ps);
    }
                 return TRUE;    

    case WM_DRAWITEM: {
        LPDRAWITEMSTRUCT lpdis = (LPDRAWITEMSTRUCT)lParam;

        if (lpdis->CtlID == BTN_CLOSE) {
            HDC hdcMem = CreateCompatibleDC(lpdis->hDC);
            HBITMAP hBmpToUse;

            if (lpdis->itemState & ODS_SELECTED) {
                hBmpToUse = hBtnCloseHover;  // HOVER
            }
            else {
                hBmpToUse = hBtnCloseNormal; // NORMAL
            }

            if (hBmpToUse) {
                HBITMAP hOldBmp = (HBITMAP)SelectObject(hdcMem, hBmpToUse);

                BitBlt(lpdis->hDC,
                    lpdis->rcItem.left, lpdis->rcItem.top,
                    lpdis->rcItem.right - lpdis->rcItem.left,
                    lpdis->rcItem.bottom - lpdis->rcItem.top,
                    hdcMem, 0, 0, SRCCOPY);

                SelectObject(hdcMem, hOldBmp);
            }
            DeleteDC(hdcMem);
        }
    }
                    return TRUE;

    case WM_CTLCOLOREDIT: {
        HDC hdcEdit = (HDC)wParam;
        HWND hwndEdit = (HWND)lParam;

        if (GetDlgCtrlID(hwndEdit) == EDIT_username) {
            SetTextColor(hdcEdit, RGB(255, 255, 255));
            SetBkMode(hdcEdit, TRANSPARENT);
            return (INT_PTR)GetStockObject(NULL_BRUSH); // NULL_BRUSH instead HOLLOW_BRUSH
        }
        break;
    }

    case WM_CTLCOLORSTATIC: {
        HDC hdcEdit = (HDC)wParam;
        HWND hwndEdit = (HWND)lParam;

        if (GetDlgCtrlID(hwndEdit) == EDIT_serial || GetDlgCtrlID(hwndEdit) == ABOUT) {
            SetTextColor(hdcEdit, RGB(255, 255, 255));
            SetBkMode(hdcEdit, TRANSPARENT);
            return (INT_PTR)GetStockObject(NULL_BRUSH);
        }
        break;
    }

    case WM_LBUTTONDOWN:
        SendMessage(hwndDlg, WM_NCLBUTTONDOWN, HTCAPTION, 0);
        return TRUE;

    case WM_COMMAND:
        switch (LOWORD(wParam)) {
        case EDIT_username: {

            if (HIWORD(wParam) == EN_CHANGE) {
                char username[256];
                GetDlgItemTextA(hwndDlg, EDIT_username, username, 256);

                SetDlgItemTextA(hwndDlg, EDIT_serial, username);
            }
			// REPAINTING
            HWND hwndEdit = (HWND)lParam;
            RECT rect;
            GetWindowRect(hwndEdit, &rect);

            ScreenToClient(hwndDlg, (POINT*)&rect.left);
            ScreenToClient(hwndDlg, (POINT*)&rect.right);

            InvalidateRect(hwndDlg, &rect, TRUE);

            HWND hwndSerial = GetDlgItem(hwndDlg, EDIT_serial);
            //RECT rect;
            GetWindowRect(hwndSerial, &rect);

            ScreenToClient(hwndDlg, (POINT*)&rect.left);
            ScreenToClient(hwndDlg, (POINT*)&rect.right);

            // Ridisegna l'area di EDIT_serial
            InvalidateRect(hwndDlg, &rect, TRUE);
            break;
        }

        case EDIT_serial:
            if (HIWORD(wParam) == EN_CHANGE) {

            }
            break;

        case BTN_CLOSE:
            uFMOD_StopSong();
            EndDialog(hwndDlg, wParam);
            return TRUE;
        }
        break;

    case WM_DESTROY:
        if (hBackground) {
            DeleteObject(hBackground);
            hBackground = NULL;
        }
        if (hBtnCloseNormal) {
            DeleteObject(hBtnCloseNormal);
            hBtnCloseNormal = NULL;
        }
        if (hBtnCloseHover) {
            DeleteObject(hBtnCloseHover);
            hBtnCloseHover = NULL;
        }
        PostQuitMessage(0);
        break;
    }

    return FALSE;
}

int WINAPI WinMain(HINSTANCE hInstance, HINSTANCE hPrevInstance, LPSTR lpCmdLine, int nCmdShow) {
    DialogBox(hInstance, MAKEINTRESOURCE(IDD_DIALOG1), NULL, DialogProc);
    return 0;
}

template keygen.zip

Edited by hacktooth
delete not necessary comments on code

file not found: ...\close.bmp

file not found: ...\close-hover.bmp

file not found: ...\form.bmp

On 9/23/2025 at 5:33 AM, hacktooth said:

I'm currently unable to set transparency in edit texts.

your code seems to run fine...

edittext transparency commented out (can clearly see the edittext control)

commmented out.PNG

original code not commented out (looks like the form.bmp (as ripped from the supplied exe))

normal.PNG

Edited by T-rad
fixed spelling

  • Author

I commented out that portion of code because transparency works correctly,
but if you look closely, it generates artifacts, especially when selecting text.
However, I solved the problem just last night by looking at some templates on the forum in asm x86 and making the appropriate changes.

Below, I show all the updated code.
In attachment you will find image resource and the exe file.

#include <windows.h>
#include <wingdi.h>

#include "ufmod.h"
#include "resource.h"
#include "song.h"

#pragma comment(lib, "Msimg32.lib")
#pragma comment(lib, "ufmod.lib")
#pragma comment(lib, "winmm.lib")

HINSTANCE hInst;
HBITMAP hBackground = NULL;
HBRUSH hBrushBackground = NULL;
HBRUSH hBrush;
COLORREF transparentColor = RGB(255, 0, 255); // Magenta color key

// Bitmap per il pulsante di chiusura
HBITMAP hBtnCloseNormal = NULL;
HBITMAP hBtnCloseHover = NULL;

// Procedura finestra del dialogo
INT_PTR CALLBACK DialogProc(HWND hwndDlg, UINT uMsg, WPARAM wParam, LPARAM lParam) {
    switch (uMsg) {
    case WM_INITDIALOG:
    {
        HICON hIcon = LoadIcon(hInst, MAKEINTRESOURCE(IDI_ICON1));
        SendMessage(hwndDlg, WM_SETICON, ICON_BIG, (LPARAM)hIcon);


        SetWindowText(hwndDlg, L"Keygen Template by jNe");

        // Imposta il testo predefinito
        SetDlgItemText(hwndDlg, EDIT_username, L"Enter Username");

        // play chip-tune <3
        uFMOD_SetVolume(20);
        uFMOD_PlaySong(songData, (void*)sizeof(songData), XM_MEMORY);

        // BMP in background
        hBackground = LoadBitmap(GetModuleHandle(NULL), MAKEINTRESOURCE(BMP_form));
        hBrush = CreatePatternBrush(hBackground);

        // set magenta color key
        SetLayeredWindowAttributes(hwndDlg, transparentColor, 0, LWA_COLORKEY);
        // --- FINE  ---

        // BMP close
        hBtnCloseNormal = LoadBitmap(GetModuleHandle(NULL), MAKEINTRESOURCE(BMP_close));
        hBtnCloseHover = LoadBitmap(GetModuleHandle(NULL), MAKEINTRESOURCE(BMP_close_hover));

        if (hBtnCloseNormal) {
            HWND hBtnClose = GetDlgItem(hwndDlg, BTN_CLOSE);
            if (hBtnClose) {
                BITMAP bm;
                GetObject(hBtnCloseNormal, sizeof(bm), &bm);
                SetWindowPos(hBtnClose, NULL, 0, 0, bm.bmWidth, bm.bmHeight,
                    SWP_NOMOVE | SWP_NOZORDER);
            }
        }
    }

        return TRUE;

    case WM_ERASEBKGND:
        return TRUE;

    case WM_PAINT: {
        PAINTSTRUCT ps;
        HDC hdc = BeginPaint(hwndDlg, &ps);

        if (hBackground) {
            HDC hdcMem = CreateCompatibleDC(hdc);
            HBITMAP hOldBmp = (HBITMAP)SelectObject(hdcMem, hBackground);

            BITMAP bm;
            GetObject(hBackground, sizeof(bm), &bm);

            BitBlt(hdc, 0, 0, bm.bmWidth, bm.bmHeight, hdcMem, 0, 0, SRCCOPY);

            SelectObject(hdcMem, hOldBmp);
            DeleteDC(hdcMem);
        }

        EndPaint(hwndDlg, &ps);
    }
                 return TRUE;

    case WM_DRAWITEM: {
        LPDRAWITEMSTRUCT lpdis = (LPDRAWITEMSTRUCT)lParam;

        if (lpdis->CtlID == BTN_CLOSE) {
            HDC hdcMem = CreateCompatibleDC(lpdis->hDC);
            HBITMAP hBmpToUse;

            if (lpdis->itemState & ODS_SELECTED) {
                hBmpToUse = hBtnCloseHover;  // HOVER
            }
            else {
                hBmpToUse = hBtnCloseNormal; // NORMAL
            }

            if (hBmpToUse) {
                HBITMAP hOldBmp = (HBITMAP)SelectObject(hdcMem, hBmpToUse);

                BitBlt(lpdis->hDC,
                    lpdis->rcItem.left, lpdis->rcItem.top,
                    lpdis->rcItem.right - lpdis->rcItem.left,
                    lpdis->rcItem.bottom - lpdis->rcItem.top,
                    hdcMem, 0, 0, SRCCOPY);

                SelectObject(hdcMem, hOldBmp);
            }
            DeleteDC(hdcMem);
        }
    }
                    return TRUE;

    case WM_CTLCOLORDLG:
        return (INT_PTR)hBrush;

    case WM_CTLCOLOREDIT:
    case WM_CTLCOLORSTATIC: {
        HDC hdcEdit = (HDC)wParam;
        int controlId = GetDlgCtrlID((HWND)lParam);

        if (controlId == ABOUT) {
            SetBkMode(hdcEdit, TRANSPARENT);
            SetTextColor(hdcEdit, RGB(255, 255, 255));
            SetBkColor(hdcEdit, 0x00000000);
            SetBrushOrgEx(hdcEdit, -23, -88, NULL);
            return (INT_PTR)hBrush;
        }

        if (controlId == EDIT_username) {
            SetBkMode(hdcEdit, TRANSPARENT);
            SetTextColor(hdcEdit, RGB(255, 255, 255));
            SetBkColor(hdcEdit, 0x00000000);
            SetBrushOrgEx(hdcEdit, -23, -88, NULL);
            return (INT_PTR)hBrush;
        }
        if (controlId == EDIT_serial) {
            SetBkMode(hdcEdit, TRANSPARENT);
            SetTextColor(hdcEdit, RGB(255, 255, 255));
            SetBkColor(hdcEdit, 0x00000000);
            SetBrushOrgEx(hdcEdit, -23, -151, NULL);
            return (INT_PTR)hBrush;
        }

        break;
    }

    case WM_LBUTTONDOWN:
        SendMessage(hwndDlg, WM_NCLBUTTONDOWN, HTCAPTION, 0);
        return TRUE;

    case WM_COMMAND:
        switch (LOWORD(wParam)) {
        case EDIT_username: {

            if (HIWORD(wParam) == EN_CHANGE) {
                char username[256];
                GetDlgItemTextA(hwndDlg, EDIT_username, username, 256);
                SetDlgItemTextA(hwndDlg, EDIT_serial, "OMFG-THIS-IS-A-DEMO");
            }
            break;
        }

        case BTN_CLOSE:
            SendMessage(hwndDlg, WM_CLOSE, 0, 0);
            return TRUE;
        }
        break;

    case WM_CLOSE:
        uFMOD_StopSong();
        if (hBrush)              DeleteObject(hBrush);
        if (hBackground)         DeleteObject(hBackground);
        if (hBtnCloseNormal)     DeleteObject(hBtnCloseNormal);
        if (hBtnCloseHover)      DeleteObject(hBtnCloseHover);
        EndDialog(hwndDlg, 0);
        return FALSE;
    }

    return FALSE;
}

// Entry point
int WINAPI WinMain(HINSTANCE hInstance, HINSTANCE hPrevInstance, LPSTR lpCmdLine, int nCmdShow) {
    hInst = hInstance;
    DialogBox(hInstance, MAKEINTRESOURCE(IDD_DIALOG1), NULL, DialogProc);
    return 0;
}

keygen template - fix.zip

Create an account or sign in to comment

Configure browser push notifications

Chrome (Android)
  1. Tap the lock icon next to the address bar.
  2. Tap Permissions → Notifications.
  3. Adjust your preference.
Chrome (Desktop)
  1. Click the padlock icon in the address bar.
  2. Select Site settings.
  3. Find Notifications and adjust your preference.