Drawing text on desktop

Using this simple trick, you can write any text right on Windows desktop. You can choose text color, transparency, position…

unit Unit1;

interface

uses
  Windows, Messages, SysUtils, Variants, Classes, Graphics, Controls, Forms,
  Dialogs, StdCtrls;

type
  TForm1 = class(TForm)
    Button1: TButton;
    procedure Button1Click(Sender: TObject);
  private
    { Private declarations }
  public
    { Public declarations }
  end;

var
  Form1: TForm1;

implementation

{$R *.dfm}

procedure TForm1.Button1Click(Sender: TObject);
var dc: hdc;
    ocolor: COLORREF;
    oBKM : integer;
    OurText: PAnsiChar;
begin
  OurText := 'Hello, World!';
  dc := GetWindowDC(GetDesktopWindow);
  try
    ocolor := SetTextColor(DC, RGB(0, 255, 0));
    oBKM := SetBkMode(DC, TRANSPARENT);
    TextOut(DC, 500, 300, OurText, Length(OurText));
    SetBkMode(DC, oBKM);
    SetTextColor(DC, ocolor);
  finally
    ReleaseDC(GetDesktopWindow, DC);
  end;
end;

end.

This trick has one little problem. As you can see, if you move some window or any object (icon) over the text, it will be deleted. So you must take of “redrawing” the text.

Leave a Reply