A fullscreen Windows joke app. Double-click DoYouLoveHim.exe.
- Opens fullscreen with a portrait and asks "Do you love him?"
- NO → a klaxon alarm loops and the screen strobes for 3 seconds between the
portrait,
mad jeff,lol, a red-tinted portrait, white and black. Then it says "Try again." and you can answer again. - YES → it says "Good job." and shows
happy jeff.jpg.
While the question is on screen the window refuses to close:
- the close button / system menu is removed (
ControlBox = false) Escis swallowedAlt+F4is swallowedCtrl+Wis swallowed- the underlying
FormClosingevent is cancelled, so even a shell close request is ignored
The only way out is to press YES, after which Esc works again. If you
ever need to force it down, use Task Manager (Ctrl+Shift+Esc).
Keyboard: Y / Enter = yes, N = no.
Nothing to install. The exe is tiny (~14 KB) because it uses the .NET Framework that ships with Windows 10/11.
The app declares itself DPI-aware at startup. Without that, Windows
virtualises the process on a scaled display and the fullscreen window comes out
far shorter than the real screen, so the strobe only covers a strip at the top.
It fills the primary monitor (\\\\.\\DISPLAY2 here, a 3440x1440 ultrawide);
a secondary monitor is left alone.
| File | Use it for |
|---|---|
DoYouLoveHim-Portable.exe |
Sending to someone. One self-contained file — all images and audio are embedded. Nothing else needed. |
DoYouLoveHim.exe |
Running locally with swappable assets, which are read from images\ and audio\ next to the exe. |
Both exes are built from the same src\Program.cs. SendToFriend\ (and
DoYouLoveHim-SendToFriend.zip) contains just the portable exe plus a short
plain-text note for the recipient.
Zip and send SendToFriend\, or just the single
DoYouLoveHim-Portable.exe. The recipient does not need the images\ or
audio\ folders, the src\ folder, or anything else.
DoYouLoveHim-Portable.exe self-tests fine from an empty directory and from a
freshly extracted zip, so a plain email attachment or chat upload works.
Drop your own files over these (keep the exact names, inside images\):
| File | Used for |
|---|---|
images\base.jpg |
the portrait on the question screen |
images\mad_jeff.jpg |
strobe frame on NO |
images\lol.jpg |
strobe frame on NO |
images\happy_jeff.jpg |
the reward shown after YES |
audio\alarm.wav |
loops while the screen flashes |
audio\win.wav |
plays on YES |
mad_jeff.jpg and lol.jpg are optional — delete one and the strobe just skips
that frame. base.jpg, happy_jeff.jpg and both WAVs are required.
Names may use an underscore or a space (happy_jeff.jpg or
happy jeff.jpg); both are found. Underscores are preferred because the C#
compiler cannot embed a resource whose file name contains a space, so spaced
names cannot go into the portable build.
DoYouLoveHim.exe looks for these paths relative to its own location, so it
works no matter what folder you launch it from, but it must be kept together
with images\ and audio\.
_tools\build.bat
That recompiles both exes with the C# compiler that ships with Windows
(%WINDIR%\Microsoft.NET\Framework64\v4.0.30319\csc.exe). The portable build
passes the assets with /resource:, which is why the file names cannot contain
spaces.
Checks you can run:
DoYouLoveHim.exe --selftest # verifies every asset loads; prints PASS/FAIL
DoYouLoveHim.exe --smoke-yes # drives the YES path unattended, then exits
DoYouLoveHim.exe --smoke-no # drives the NO path unattended, then exits
DoYouLoveHim.exe --smoke-no-lock # also proves Esc/Alt+F4/Close() are refused
The same switches work on DoYouLoveHim-Portable.exe, which is how the embedded
assets are verified without the images\ and audio\ folders present.
--smoke-no-lock is how the close lock is verified without a human: it
simulates each close attempt and prints whether it was swallowed.
audio\alarm.wavandaudio\win.wav— synthesised by_tools\make_assets.py._tools\preview\— PNG mockups of each screen, rendered by_tools\Preview.cs.base.jpg,mad jeff.jpg,lol.jpg,happy jeff.jpg— supplied by the user.