zb7512511 发表于 2014-9-18 16:59:44

(已解决)如何控制某进程占用的cpu%

本帖最后由 zb7512511 于 2014-10-20 09:39 编辑

现在 a.exe 在某些时候 cpu 达到100%
可以 指定它 cpu为20% 么?
怎么实现?

lin6051 发表于 2014-9-19 08:26:34

那你可以检测 a.exe的cpu占用情况啊 100%后关闭

kk_lee69 发表于 2014-9-19 09:46:52

回复 1# zb7512511

a.exe是你寫的嗎??如果不是難喔

如果可以的話~~ 那豈不是 每個人 都可以控制別人寫的程式~~那不是亂了套

austere 发表于 2014-9-19 18:28:16

如果是也难,这个多核的话估计还好实现一些,单核的话。。。。。你懂得

txen548 发表于 2014-9-20 08:35:18

如果編寫的是一些小程序,CPU佔用率一般都不會很多,
如果CPU佔用率過多,請再適當位置加入如下代碼
sleep(100)
可減少CPU的佔用率

tvzml 发表于 2014-9-20 21:16:36

不断努力优化程序

zb7512511 发表于 2014-9-24 18:56:00

已解决
Func _ProcessSuspend($Process)
        $processid = ProcessExists($Process)
        If $processid Then
                $ai_Handle = DllCall("kernel32.dll", 'int', 'OpenProcess', 'int', 0x1f0fff, 'int', False, 'int', $processid)
                $i_sucess = DllCall("ntdll.dll", "int", "NtSuspendProcess", "int", $ai_Handle)
                DllCall('kernel32.dll', 'ptr', 'CloseHandle', 'ptr', $ai_Handle)
                If IsArray($i_sucess) Then
                        Return 1
                Else
                        SetError(1)
                        Return 0
                EndIf
        Else
                SetError(2)
                Return 0
        EndIf
EndFunc   ;==>_ProcessSuspend

Func _ProcessResume($Process)
        $processid = ProcessExists($Process)
        If $processid Then
                $ai_Handle = DllCall("kernel32.dll", 'int', 'OpenProcess', 'int', 0x1f0fff, 'int', False, 'int', $processid)
                $i_sucess = DllCall("ntdll.dll", "int", "NtResumeProcess", "int", $ai_Handle)
                DllCall('kernel32.dll', 'ptr', 'CloseHandle', 'ptr', $ai_Handle)
                If IsArray($i_sucess) Then
                        Return 1
                Else
                        SetError(1)
                        Return 0
                EndIf
        Else
                SetError(2)
                Return 0
        EndIf
EndFunc   ;==>_ProcessResume
页: [1]
查看完整版本: (已解决)如何控制某进程占用的cpu%