Jump to content

SUBIECTE NOI
« 1 / 5 »
RSS
Cum sterg mails din Promotions

Vanzare cumparare fara transfer b...

Receptie ciudata, in functie de t...

Dupa 20 ani de facultate, am uita...
 Mobile.de ofera imprumut de bani ...

problema test grila

Digi24 a disparut de pe TV Lg

Drept de proprietate intelectuala...
 Jante noi shitbox

Trinitas TV 4K

Dacia 1316 cu 6 usi ...

Frecventa modificata radio
 Un nou pericol pt batrani

Ar trebui sa vindem imobiliarele ...

Dupa renuntarea la aparat dentar

pelerinaj in Balcik
 

Am nevoie de niste linii de cod pentru completarea unui program.

- - - - -
  • Please log in to reply
8 replies to this topic

#1
GunMK

GunMK

    Junior Member

  • Grup: Members
  • Posts: 108
  • Înscris: 01.11.2015
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
jegmihai

jegmihai

    Senior Member

  • Grup: Senior Members
  • Posts: 11,536
  • Înscris: 03.09.2013
Ceva de genul?

case 1 : { (comenzile tale)  getch();  system("cls"); break; }


Asta daca vrei sa faci un meniu.

#3
GunMK

GunMK

    Junior Member

  • Grup: Members
  • Posts: 108
  • Înscris: 01.11.2015
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
dani.user

dani.user

    Guru Member

  • Grup: Senior Members
  • Posts: 30,239
  • Înscris: 24.02.2007
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.


#5
GunMK

GunMK

    Junior Member

  • Grup: Members
  • Posts: 108
  • Înscris: 01.11.2015
Dani.user cred ca ce ai scris tu acolo e java nu c++

#6
dani.user

dani.user

    Guru Member

  • Grup: Senior Members
  • Posts: 30,239
  • Înscris: 24.02.2007
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
GunMK

GunMK

    Junior Member

  • Grup: Members
  • Posts: 108
  • Înscris: 01.11.2015
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
dani.user

dani.user

    Guru Member

  • Grup: Senior Members
  • Posts: 30,239
  • Înscris: 24.02.2007
Daca-l compilezi cu gcc, baga la inceput, inainte de orice
#define UNICODE


#9
jobist

jobist

    Senior Member

  • Grup: Senior Members
  • Posts: 2,746
  • Înscris: 23.04.2010
C-urile astea de acum nu mai au do while ?
http://www.tutorials..._while_loop.htm

Anunturi

Bun venit pe Forumul Softpedia!

0 user(s) are reading this topic

0 members, 0 guests, 0 anonymous users

Forumul Softpedia foloseste "cookies" pentru a imbunatati experienta utilizatorilor Accept
Pentru detalii si optiuni legate de cookies si datele personale, consultati Politica de utilizare cookies si Politica de confidentialitate