J'essaye de coder un petit "virus" (juste un programme de blague amusant qui dérange le curseur et émet des bips sonores). Cependant, je veux fermer ce processus avec ma clé F9.C++ fermer mon processus via la touche de raccourci
Voici ce que j'ai jusqu'à présent:
void executeApp()
{
while (true)
{
if (GetAsyncKeyState(VK_F9) & 0x8000)
{
exit(0);
}
Sleep(200);
}
}
J'ai fait un fil qui fonctionne cette fonction. Cependant, lorsque je cours mon code entier et que j'appuie sur F9, le processus s'exécute toujours. Seulement quand je l'appuie 2-3 fois, il arrive avec une erreur: "Debug Error! Abort() a été appelé."
Ce serait bien si quelqu'un sait comment je peux tuer mon processus via un raccourci clavier.
est ici tout le code du programme:
#include <iostream>
#include <stdio.h>
#include <windows.h>
#include <conio.h>
#include <ctime>
#include <thread>
#include <random>
using namespace std;
//random number gen for while loops in cursor/beep functions.
random_device rd;
mt19937 eng(rd());
uniform_int_distribution<> distr(1, 100);
//variables used for this program.
int random, Dur, X, Y, Freq;
HWND mywindow, Steam, CMD, TaskMngr;
char Notepad[MAX_PATH] = "notepad.exe";
char Website[MAX_PATH] = "http:\\www.google.de";
//functions
void RandomCursor(), Beeper(), OpenStuff(), executeApp();
//threads
thread cursor(RandomCursor);
thread beeps(Beeper);
thread openstuff(OpenStuff);
thread appexecute(executeApp);
int main()
{
srand(time(0));
random = rand() % 3;
system("title 1337app");
cursor.join();
beeps.join();
appexecute.join();
return 0;
}
//void SetUp()
//{
// mywindow = FindWindow(NULL, "1337app");
// cout << "oh whats that? let me see.\n";
// Sleep(1000);
// ShowWindow(mywindow, false);
//}
void Beeper()
{
while (true)
{
if (distr(eng) > 75)
{
Dur = rand() % 206;
Freq = rand() % 2124;
Beep(Dur, Freq);
}
Sleep(1500);
}
}
//void OpenStuff()
//{
// ShellExecute(NULL, "open", Notepad, NULL, NULL, SW_MAXIMIZE);
// ShellExecute(NULL, "open", Website, NULL, NULL, SW_MAXIMIZE);
//}
void RandomCursor()
{
while (true)
{
if (distr(eng) < 50)
{
X = rand() % 302;
Y = rand() % 202;
SetCursorPos(X, Y);
}
Sleep(500);
}
}
void executeApp()
{
while (true)
{
if (GetAsyncKeyState(VK_F9) & 0x8000)
{
exit(0);
}
Sleep(200);
}
}
Bienvenue sur Stack Overflow. Veuillez prendre le temps de lire [The Tour] (http://stackoverflow.com/tour) et de consulter le contenu du [Centre d'aide] (http://stackoverflow.com/help/asking) quoi et comment vous pouvez demandez ici. –
La plupart du temps, vous appuyez sur la touche lorsque votre processus est endormi. Vous devriez étudier le traitement des messages Windows. –
Vous devriez vérifier le comportement de votre thread pour voir ce qui se passe. Comme l'a dit @NeilButterworth, le fil pourrait être endormi la plupart du temps. En fonction de ce que vous avez ajouté, il se peut qu'il effectue une autre tâche et ne puisse pas traiter votre entrée à ce moment-là, provoquant une erreur comme celle que vous avez constatée. Ou vous pourriez avoir fait une erreur dans la création de fil. – Javia1492