#include <windows.h>
//#include <shlwapi.h>
// Einfaches Programm welches Tastenanschläge von F16 generiert.
// Um den Bildschirmschoner zu vermeiden und Aktivität vorzugaukeln.
// Beenden des Programms nur über den Task-Manager
// Für den Notfall lässt sich die Taste per Kommandozeilenparameter ändern.
class Xorshift32{
unsigned a;
public:
Xorshift32():a(GetTickCount()) {} // The state must be initialized to non-zero
operator unsigned() { // Algorithm "xor" from p. 4 of Marsaglia, "Xorshift RNGs"
a ^= a << 13;
a ^= a >> 17;
a ^= a << 5;
return a;
}
};
#if 0
EXTERN_C _CRTIMP int __cdecl __getmainargs(int*,char***,char***,int);
static BYTE vk() {
TCHAR*cmdline = GetCommandLine();
int argc;
bool ok=false;
int vk;
#ifdef UNICODE
WCHAR**argv = CommandLineToArgvW(cmdline,&argc);
#else
char**argv,**envp;
__getmainargs(&argc,&argv,&envp,TRUE);
#endif
if (argc>=2) {
TCHAR*arg=argv[1];
if (arg[0]=='F' || arg[0]=='f') {
ok=StrToIntEx(arg+1,0,&vk) && vk>0 && vk<=24;
vk+=VK_F1-1;
}
if (!ok
&& StrToIntEx(argv[1],STIF_SUPPORT_HEX,&vk) // direkte Angabe als dezimaler oder hexadezimaler Wert
&& vk>0 && vk<255) ok=true;
}
#ifdef UNICODE
GlobalFree(argv);
#endif
return ok ? BYTE(vk) : VK_F16; // F16 sieht unbenutzt aus
}
#endif
EXTERN_C void WinMainCRTStartup() {
PostQuitMessage(0); // Trick um den Sanduhrcursor beim Start zu vermeiden
MSG msg;
while (GetMessage(&msg,0,0,0)) DispatchMessage(&msg);
static INPUT input;
input.type = INPUT_KEYBOARD;
Xorshift32 rng;
for(;;) {
Sleep(MulDiv(HIWORD(rng),10000,65535)+40000); // 10..50 s
input.ki.wVk = VK_F13+MulDiv(LOWORD(rng),12,65535); // F13..F24
for (int j=0; j<4; j++) {
SendInput(1,&input,sizeof input);
Sleep(MulDiv(HIWORD(rng),200,65535)+100); // 0,1..0,3 s
input.ki.dwFlags ^= KEYEVENTF_KEYUP; // drücken - loslassen - drücken - loslassen
}
}
}
Detected encoding: ANSI (CP1252) | 4
|
|