Avatar billede psv Nybegynder
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 :-)
Avatar billede psv Nybegynder
13. juli 2001 - 12:43 #1
vHandle := AWirenewsConverterMainForm.Handle;

Her skulle nok stå Application.MainForm.Handle...
Avatar billede martinlind Nybegynder
13. juli 2001 - 13:17 #2
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
Avatar billede psv Nybegynder
13. juli 2001 - 13:33 #3
Jeg tror det har noget at gøre med rettigheder... Jeg får en fejlkode 87 fra SetProcessAffinityMask
Avatar billede martinlind Nybegynder
13. juli 2001 - 13:59 #4
Jamen din app, har vel samme retigheder som dig, Hmm mærkeligt, har ikke umidledbart flere ider
Avatar billede psv Nybegynder
13. juli 2001 - 14:03 #5
Jeg er logget på som Administrator på W2k, så det burde ikke være rettigheder der mangler :-)
Avatar billede martinlind Nybegynder
13. juli 2001 - 14:50 #6
mystiken breder sig :)
Avatar billede torbenkoch Nybegynder
15. juli 2001 - 22:47 #7
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...!
               



Avatar billede psv Nybegynder
16. juli 2001 - 07:31 #8
Hmmm - det må jeg lige prøve...
Avatar billede psv Nybegynder
16. juli 2001 - 08:13 #9
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 :-)
Avatar billede torbenkoch Nybegynder
16. juli 2001 - 14:26 #10
Fedt! Det gør jeg da gerne, er glad for at kunne hjælpe!
Avatar billede Ny bruger Nybegynder

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.

Loading billede Opret Preview
Kategori
Kurser inden for grundlæggende programmering

Log ind eller opret profil

Hov!

For at kunne deltage på Computerworld Eksperten skal du være logget ind.

Det er heldigvis nemt at oprette en bruger: Det tager to minutter og du kan vælge at bruge enten e-mail, Facebook eller Google som login.

Du kan også logge ind via nedenstående tjenester