2010/07/22 (Thu) 23:45
タスクマネージャにあるプロセッサの関係(関係の設定)と同等の動作をします。
マルチコアCPUでないとこの項目は出現しません。
CPUのコア数は sysinfo(17) や
環境変数NUMBER_OF_PROCESSORSからも取得できるとか。
ちなみに、2コアしかないのに3コア目を1にすると設定に失敗します。
存在するCPUの数より多く設定してしまうとエラーになり失敗するようです。
キチンとコア数を数えてから設定してあげるようにしてください。
マルチコアCPUでないとこの項目は出現しません。
CPUのコア数は sysinfo(17) や
#include "kernel32.as" dim system_info,10 GetSystemInfo varptr(system_info) mes "CPU のコア数 : "+system_info.5などで取得が出来ます。
環境変数NUMBER_OF_PROCESSORSからも取得できるとか。
ちなみに、2コアしかないのに3コア目を1にすると設定に失敗します。
存在するCPUの数より多く設定してしまうとエラーになり失敗するようです。
キチンとコア数を数えてから設定してあげるようにしてください。
#include "kernel32.as" /* プロセスハンドルを得るために、CreateProcessを直接使用。 起動済みのプロセスの場合は EnumProcesses などを利用する。 http://hsp.tv/play/pforum.php?mode=pastwch&num=17225 */ // CreateProcessを使用してメモ帳起動 //(execだとハンドルが直接取得できないため) appname="notepad" dim startupinfo,17 startupinfo.0=68 dim procinfo,4 CreateProcess 0,varptr(appname),0,0,0,0,0,0,varptr(startupinfo),varptr(procinfo) if stat=0:dialog "起動失敗":end // 成功するとプロセスハンドル(PROCESS_ALL_ACCESS)が入る handle=procinfo.0 // 使用するCPUコア dim b,32 b.0=1 // CPU 0 を 使用する b.1=0 // CPU 1 を 使用しない // (配列をビット配列に変換) bit=0 repeat 32 if b.cnt=1 : bit|=1<<cnt loop // フラグをセット SetProcessAffinityMask handle,bit // 確認のためタスクマネージャ起動 exec "taskmgr"
PR
Comment