13. februar 2004 - 15:34Der er
16 kommentarer og 1 løsning
Baggrundsproces med laveste prioritet
Hej, jeg ville høre om nogle evt. kunne hjælpe mig med hvordan jeg sætter mit c++ program til at køre som baggrundsproces med lav prioritet...Evt. et lille kodeeksempel :)
Mød TrackMan og Veo på Computerworld Cloud & AI Festival og hør, hvordan tech ændrer måden, vi træner og udvikler talent – fra skolebold til The Masters.
Der er en ting jeg og tænkte over også. Creatprocess, den starter jo en anden exe fil ik sandt? Jeg vil gerne bare have at man kører en exe fil og at den så selv kører i baggrunden med lav prioritet. Det er vel en smule lissom fork(); fungerer i et unix system tror jeg....Altså bare så jeg slipper for at lave 2 exe filer
Hmmm oki...Jeg tænkte på noget med at man kunne få procID frem. Gemme den et globalt sted, starte en process med sig selv som parameter(altså så den starter en ny instans af sig selv) Der kigges nu i den nye process på procID, hov dens egen procID var sørme forskellig fra den der stod i den globale variabel. Så skal den springe if sætningen over og udføre det som programmet egentlig skal kunne. Kunne man ikke gøre det på den måde? Så virker det en lille smule som fork()
Hvad så hvis man gør følgende : 1. kør eksefil ved fx. 2xklik 2. exe fil starter ny process med en anden exefil som parameter. 3. Denne nye exefil skal så kører minimeret og med lav prioritet. 4. Processen der først skabte den 2. process venter ikke på at den anden bliver færdig, men terminerer derimod bare med det samme. Dermed får brugeren heller noget at se skulle man mene...Kan den ide evt. bruges tror du?
perfekt :) Havde faktisk selv fået lavet en næsten magen til. Det eneste jeg manglede var DETACHED_PROCESS. Tak for hjælpen som sædvanlig Arne....Pointene er dine hvis du lige tyrer et svar denne vej hehe
Jeg lavede et lille konsol program der skjuler sig selv. Det forsøger også at sætte sin egen prioritet, jeg er dog ikke sikker på at den sidste del virker, task manageren siger at processen har normal prioritet:
if(!WndHandle) { printf("Did not find me!\n"); return EXIT_FAILURE; } printf("Prepare to hide\n"); if(!SetThreadPriority(GetCurrentThread(), THREAD_PRIORITY_IDLE)) printf("Failed to set priority: %d\n", GetLastError()); Sleep(10000); ShowWindow(WndHandle, SW_HIDE); printf("Now I'm gone\n"); Sleep(10000); ShowWindow(WndHandle, SW_SHOW); printf("I'm back\n"); Sleep(10000);
return EXIT_SUCCESS; }
Synes godt om
Ny brugerNybegynder
Din løsning...
Tilladte BB-code-tags: [b]fed[/b] [i]kursiv[/i] [u]understreget[/u] Web- og emailadresser omdannes automatisk til links. Der sættes "nofollow" på alle links.