Форум программистов
 

Восстановите пароль или Зарегистрируйтесь на форуме, о проблемах и с заказом рекламы пишите сюда - alarforum@yandex.ru, проверяйте папку спам!

Вернуться   Форум программистов > Delphi программирование > Общие вопросы Delphi
Регистрация

Восстановить пароль
Повторная активизация e-mail

Купить рекламу на форуме - 42 тыс руб за месяц

Ответ
 
Опции темы Поиск в этой теме
Старый 07.12.2013, 23:48   #1
Chugun
Пользователь
 
Регистрация: 04.02.2009
Сообщений: 30
По умолчанию Get and Set Affinity

Доброго, уважаемые форумчане.
Сильно не пинайте, вопрос не самый сложный, но я не могу понять...

пытаюсь через ф-ции
GetProcessAffinityMask получить
и
SetProcessAffinityMask выставить
соответствия на процессоры.

в первом случае я делаю так:
Код:
var
phwnd: THandle;
cpuset,sysmask: dword;
begin
phwnd:=FindWindow(nil,'ClientName');
GetProcessAffinityMask(phwnd,cpuset,sysmask);
showmessage('cpuset: '+inttostr(cpuset));//для проверки
showmessage('sysmask: '+inttostr(sysmask));//для проверки
end;
код выдаёт нули

для сетера у меня было несколько вариантов, ни один не срабатывал
Код:
if SetProcessAffinityMask(phwnd,cpuset)
  then showmessage('Affinity yes')
  else showmessage('Affinity no');
даже так в ответ я получаю "no" и, естественно, ни о каком переключении на другие процессоры речи быть не может

помогите пож-та разобраться в чём проблема, что не правильно делаю
Chugun вне форума Ответить с цитированием
Старый 08.12.2013, 09:33   #2
Son Of Pain
Участник клуба
 
Регистрация: 23.12.2010
Сообщений: 1,129
По умолчанию

Потому что надо передавать хендл процесса, а не хендл окна
Son Of Pain вне форума Ответить с цитированием
Старый 08.12.2013, 14:23   #3
Chugun
Пользователь
 
Регистрация: 04.02.2009
Сообщений: 30
По умолчанию

Цитата:
Сообщение от Son Of Pain Посмотреть сообщение
Потому что надо передавать хендл процесса, а не хендл окна
да, я это уже понял...
сделал так:
Код:
  GetWindowThreadProcessId(phwnd, @PID);
  prhwnd:=openprocess(Process_All_Access,true,pid);
  GetProcessAffinityMask(prhwnd,cpuset,sysmask);
  SetProcessAffinityMask(prhwnd,sysmask xor dword(1) xor dword(2))
где
Код:
xor dword(1) xor dword(2)
отключение первых двух ядер

может есть более простой способ?
при открытии процесса через openprocess его надо закрывать?
я просто не совсем понимаю что делает эта ф-ция
Chugun вне форума Ответить с цитированием
Ответ


Купить рекламу на форуме - 42 тыс руб за месяц



Похожие темы
Тема Автор Раздел Ответов Последнее сообщение
Get Set в C# Максим139 C# (си шарп) 2 12.12.2012 11:21
Set MSComm1 Ципихович Эндрю Microsoft Office Word 12 18.10.2011 16:52
SimpleData SEt Mr_skiner БД в Delphi 2 23.02.2011 15:29
Методы set и get Mira-girl Общие вопросы по Java, Java SE, Kotlin 2 08.11.2010 08:08
set serveroutput on МаксMorfey SQL, базы данных 0 02.12.2009 16:10