13. juli 2001 - 12:33
Der er
9 kommentarer og 1 løsning
Skifte Affinity i en app
Dav Jeg sidder med en baggrundsmaskine der har kørt flere år - lige til den dag den blev installeret på en Dula-CPU maskine. (Bruger en ActiveX fætter). Jeg kan i task-manager sætte affinity på min proces så den kun bruger een cpu og vupti virker det igen. Jeg har så prøvet at eftergøre stuntet i Delphi (dpr.filen lige efter mainform er created) men det virker ikke? vHandle := AWirenewsConverterMainForm.Handle; GetProcessAffinityMask(vHandle, vMaskProcess, vMaskSystem); showmessage(\'vMaskProcess:\' + #9 + IntToStr(vMaskProcess) + #13#10 + \'vMaskSystem:\' + #9 + IntToStr(vMaskSystem)); SetProcessAffinityMask(vHandle, 0); // or 1 GetProcessAffinityMask(vHandle, vMaskProcess, vMaskSystem); showmessage(\'vMaskProcess:\' + #9 + IntToStr(vMaskProcess) + #13#10 + \'vMaskSystem:\' + #9 + IntToStr(vMaskSystem)); Nogen der har fiflet med noget lignende? Jeg har flere point for at hurtigt svar... De er ved at vågne i Washington nu :-)
Annonceindlæg fra Novataris
Vejen til devops med Bavarian Nordic
Bavarian Nordics vækst blev starten på et DevOps-samarbejde med Novataris for hurtigt at kunne tilpasse IT-organisation til forretningen.
7. december 2023
vHandle := AWirenewsConverterMainForm.Handle; Her skulle nok stå Application.MainForm.Handle...
Skal du ikke prøve at gøre det FØR mainfom bliver createt, eller kan du måske lave en loader ( shell execute ) så kan du jo styre Process parametre. /Martin
Jeg tror det har noget at gøre med rettigheder... Jeg får en fejlkode 87 fra SetProcessAffinityMask
Jamen din app, har vel samme retigheder som dig, Hmm mærkeligt, har ikke umidledbart flere ider
Jeg er logget på som Administrator på W2k, så det burde ikke være rettigheder der mangler :-)
Jeg tror problemet er, at GetProcessAffinityMask og SetProcessAffinityMask skal bruge en process handle. Den du giver den er jo en window handle. I stedet skal du bruge funktionerne GetCurrentProcessID og OpenProcess til at få fat i handlen. Det vil se ca. sådan ud: ProcessId := GetCurrentProcessID; ProcessHandle := OpenProcess(PROCESS_ALL_ACCESS, false ProcessID); Har ikke afprøvet det - kun læst i hjælpen...!
Hmmm - det må jeg lige prøve...
Torben.. Din løsning virker.. Jeg får ikke længere fejl fra GetProcessAffinityMask. Hvis du vil ha\' point må du lige oprette et Svar :-)
16. juli 2001 - 14:26
#10
Fedt! Det gør jeg da gerne, er glad for at kunne hjælpe!
Kurser inden for grundlæggende programmering