Am nevoie de niste linii de cod pentru completarea unui program.
Last Updated: Jul 17 2016 17:52, Started by
GunMK
, Jul 17 2016 10:48
·
0
#1
Posted 17 July 2016 - 10:48
Am un program facut in c++ (in consola) si l-am incheiat initial cu getch(); dar nu vreau sa se inchida dupa ce a terminat tot procesul vreau ca el sa isi reia procesul daca apas o anumita tasta si sa se inchida daca apas esc sau alta tasta.
Ma poate ajuta cineva? Vreau un cod pentru asta. |
#2
Posted 17 July 2016 - 11:11
Ceva de genul?
case 1 : { (comenzile tale) getch(); system("cls"); break; } Asta daca vrei sa faci un meniu. |
#3
Posted 17 July 2016 - 11:43
Nu inteleg. Poti sa imi explici mai detaliat te rog?
Eu vreau ca acea linie de cod sa fie la final pentru ca am facut deja un meniu cu switch si merge dar cand termin procesul adica in momentul in care programul vrea sa se inchida cand apas o tasta aleatoru ,sa il inlocuiesc cu optiunea de a apasa esc pentru a inchide sau enter pentru a o lua de la capat. Edited by GunMK, 17 July 2016 - 11:45. |
#4
Posted 17 July 2016 - 12:15
Te repornesti singur daca apesi orice altceva in afara de ESC
#include <Windows.h> #include <stdio.h> HANDLE keyboardEvent; HHOOK currentHook; BOOL escapePressed; LRESULT CALLBACK LowLevelKeyboardProc(int nCode, WPARAM wParam, LPARAM lParam) { if (nCode == 0 && lParam > 0) { PKBDLLHOOKSTRUCT data = (PKBDLLHOOKSTRUCT)(lParam); if (wParam == WM_KEYDOWN) { escapePressed = data->vkCode == VK_ESCAPE; SetEvent(keyboardEvent); } } return CallNextHookEx(currentHook, nCode, wParam, lParam); } DWORD WINAPI MessageThreadProc(LPVOID lpParameter) { currentHook = SetWindowsHookEx(WH_KEYBOARD_LL, LowLevelKeyboardProc, NULL, 0); MSG msg; while (GetMessage(&msg, NULL, 0, 0) > 0) { DispatchMessage(&msg); } return 0; } BOOL ESCPressed() { keyboardEvent = CreateEvent(NULL, TRUE, FALSE, NULL); escapePressed = FALSE; HANDLE messageThread = CreateThread(NULL, 0, MessageThreadProc, NULL, 0, NULL); WaitForSingleObject(keyboardEvent, INFINITE); UnhookWindowsHookEx(currentHook); TerminateThread(messageThread, 0); CloseHandle(keyboardEvent); return escapePressed; } int main(void) { printf("Hello World, apasa ESC pentru a iesi sau altceva pentru a repeta\n"); if (ESCPressed()) { printf("ByeBye\n"); return 0; } printf("Restarting...\n"); WCHAR* commandLine = _wcsdup(GetCommandLine()); PROCESS_INFORMATION info; STARTUPINFO startup = { 0 }; startup.cb = sizeof(startup); if (CreateProcess(NULL, commandLine, NULL, NULL, FALSE, 0, NULL, NULL, &startup, &info)) { WaitForSingleObject(info.hProcess, INFINITE); } free(commandLine); return 0; } Edited by dani.user, 17 July 2016 - 12:17. |
#6
Posted 17 July 2016 - 13:40
E chiar C fara ++, compilabil desigur si ca C++.
Partea mai urata e de la detectia apasarii tastei ESC. Edited by dani.user, 17 July 2016 - 13:44. |
#7
Posted 17 July 2016 - 13:48
La linia 18 zice ceva de before return dar nu am retinut pentru ca eu sunt pe telefon si nu am internet la pc si trebuie sa ma duc departe de calculator ca sa am semnal la tel. Si mai imi dadea niste erori cu niste variabile nedeclarate sau asa ceva. Alta varianta nu exista?
|
#8
Posted 17 July 2016 - 14:05
Daca-l compilezi cu gcc, baga la inceput, inainte de orice
#define UNICODE |
#9
Posted 17 July 2016 - 17:52
Anunturi
Bun venit pe Forumul Softpedia!
▶ 0 user(s) are reading this topic
0 members, 0 guests, 0 anonymous users