Адміністрація вирішила продати даний сайт. За детальною інформацією звертайтесь за адресою: rozrahu@gmail.com

Процеси та потоки

Інформація про навчальний заклад

ВУЗ:
Національний університет Львівська політехніка
Інститут:
Не вказано
Факультет:
КН
Кафедра:
Кафедра ЕОМ

Інформація про роботу

Рік:
2019
Тип роботи:
Звіт до лабораторної роботи
Предмет:
Системне програмне забезпечення

Частина тексту файла

Міністерство освіти і науки України Національний університет «Львівська політехніка» Кафедра ЕОМ  Звіт до лабораторної роботи № 1 з дисципліни: «Системне програмне забезпечення» «Процеси та потоки» Мета: Засвоїти поняття «процесів» та «потоків» як основних компонентів сучасних операційних систем. Здобути навики створення, керування та знищення «процесів» та «потоків» в операційній системі Windows. Завдання: Розробити програму в середовищі Visual Studio, що демонструє використання системних викликів, відзначених символом “+”, відповідно до варіанту в таблиці 1. / Таблиця 1. Номера варіанту. Код завдання: int main() { HANDLE hWindow = 0; DWORD dword; HWND hWnd_W; DWORD ProcId; DWORD clas; PROCESS_INFORMATION pi; FILE *myfilehandle; int priority; HANDLE hThread; int choose = 4; while (choose != 12) { switch (choose = MenuSwitch()) { case 1: WinExec("notepad.exe", SW_RESTORE); //ShellExecute(NULL, L"open", L"calc.exe", NULL, NULL, SW_RESTORE); break; case 2: STARTUPINFO cif; ZeroMemory(&cif, sizeof(STARTUPINFO)); if (CreateProcess(L"C:\\windows\\notepad.exe", NULL, NULL, NULL, FALSE, NULL, NULL, NULL, &cif, &pi) == TRUE) { cout << "Thread ID: " << pi.hThread << endl; cout << "Process ID: " << pi.hProcess << endl; Sleep(1000); } break; case 3: hWnd_W = FindWindow(NULL, L"Блокнот"); dword = GetWindowThreadProcessId(hWnd_W, &pi.dwProcessId); hWindow = OpenProcess(PROCESS_ALL_ACCESS, false, pi.dwProcessId); cout << "Finden process handle: " << hWindow << endl; break; case 4: CloseHandle(hWindow); break; case 5: cout << "Process Id: " << GetCurrentProcessId() << endl; break; case 6: cout << "Exit Code Process: " << GetExitCodeProcess(hWindow, 0) << endl; break; case 7: clas = GetPriorityClass(hWindow); switch (clas) { case ABOVE_NORMAL_PRIORITY_CLASS: cout << "Class: ABOVE_NORMAL_PRIORITY_CLASS"; break; case BELOW_NORMAL_PRIORITY_CLASS: cout << "Class: BELOW_NORMAL_PRIORITY_CLASS"; break; case HIGH_PRIORITY_CLASS: cout << "Class: HIGH_PRIORITY_CLASS"; break; case IDLE_PRIORITY_CLASS: cout << "Class: IDLE_PRIORITY_CLASS"; break; case NORMAL_PRIORITY_CLASS: cout << "Class: IDLE_PRIORITY_CLASS"; break; case REALTIME_PRIORITY_CLASS: cout << "Class: IDLE_PRIORITY_CLASS"; break; } break; case 8: unsigned threadID; myfilehandle = fopen("Rez.txt", "w"); hThread = (HANDLE)_beginthreadex(NULL, 0, &PrintIntoFile, myfilehandle, 0, &threadID); for (int i = 0; i < 10; i++) { cout << "Potik 1...\n"; Sleep(150); } WaitForSingleObject(hThread, INFINITE); CloseHandle(hThread); printf("Potik zaversheno..\n"); fclose(myfilehandle); break; case 9: cout << "Exit COde Thread: " << GetExitCodeThread(hThread,0) << endl; break; case 10: cout << "Using Suspend Thread..." << endl; SuspendThread(hThread); break; case 11: SetThreadPriority(GetCurrentThread(), THREAD_PRIORITY_HIGHEST); break; case 12: cout << "Using Resume Thread..." << endl; ResumeThread(hThread); break; case 13: system("CLS"); break; } } return 0; } unsigned __stdcall PrintIntoFile(void* pArguments) { FILE* Ptr = (FILE*)pArguments; DWORD DoubleWord = GetCurrentProcessId(); char proc[100] = "Process ID: "; for (int i = 0; i < 100; i++) { if (proc[i] == NULL) break; fprintf(Ptr, "%c", proc[i]); } char procID[10]; sprintf(procID, "%d", DoubleWord); for (int i = 0; i < 10; i++) { if (procID[i] == NULL) break; fprintf(Ptr, "%c", procID[i]); } fprintf(Ptr, "%c", '\n'); DoubleWord = GetCurrentThreadId(); strcpy(proc, "Thread ID: "); for (int i = 0; i < 100; i++) { if (proc[i] == NULL) break; Sleep(250); printf("Potik 2...\n"); fprintf(Ptr, "%c", proc[i]); } char thrId[10]; sprintf(thrId, "%d", DoubleWord); for (int i = 0; i < 10; i++) { if (thrId[i] == NULL) break; fprintf(Ptr, "%c", thrId[i]); } time_t n...
Антиботан аватар за замовчуванням

02.04.2019 14:04

Коментарі

Ви не можете залишити коментар. Для цього, будь ласка, увійдіть або зареєструйтесь.

Завантаження файлу

Якщо Ви маєте на своєму комп'ютері файли, пов'язані з навчанням( розрахункові, лабораторні, практичні, контрольні роботи та інше...), і Вам не шкода ними поділитись - то скористайтесь формою для завантаження файлу, попередньо заархівувавши все в архів .rar або .zip розміром до 100мб, і до нього невдовзі отримають доступ студенти всієї України! Ви отримаєте грошову винагороду в кінці місяця, якщо станете одним з трьох переможців!
Стань активним учасником руху antibotan!
Поділись актуальною інформацією,
і отримай привілеї у користуванні архівом! Детальніше

Оголошення від адміністратора

Антиботан аватар за замовчуванням

пропонує роботу

Admin

26.02.2019 12:38

Привіт усім учасникам нашого порталу! Хороші новини - з‘явилась можливість кожному заробити на своїх знаннях та вміннях. Тепер Ви можете продавати свої роботи на сайті заробляючи кошти, рейтинг і довіру користувачів. Потрібно завантажити роботу, вказати ціну і додати один інформативний скріншот з деякими частинами виконаних завдань. Навіть одна якісна і всім необхідна робота може продатися сотні разів. «Головою заробляти» продуктивніше ніж руками! :-)

Новини