私はここ2年間使ってきたこの華麗な小さなAutoItスクリプトを持っています。 Skype用に構築されたもので、RAMホギングアプリケーションのメモリ使用量を必要最小限(Windowsのみ)に抑え、可能な限り低く保ち、本当に必要なものを提供するために使用されています。ここでは次のようになります。AutoitをPythonに変換する
今#include <Misc.au3>
_Singleton("skype-memory-reducer")
Opt("TrayMenuMode", 1)
Opt("TrayOnEventMode", 1)
TrayCreateItem("Quit")
TrayItemSetOnEvent(-1, "Bye")
TraySetState()
Global Const $interval = 2000 ; interval at which the memory is freed, anything below this will almost certainly only slow down your system.
;here you can add any other process,
;but be carefull which process you choose,
;bacause in some cases this will slow down your application or even your PC
Global $list = "skype.exe|skypePM.exe"
Global $processlist = StringSplit($list, "|")
While 1
For $i = 1 To UBound($processlist) - 1
$pid = ProcessExists($processlist[$i])
If $pid Then _ReduceMemory($pid)
Next
_ReduceMemory(); also reduce the memory used by the script itself...
Sleep($interval)
WEnd
Func Bye()
Exit
EndFunc ;==>Bye
;I don't remember who was the author of this UDF... (it's not me)
Func _ReduceMemory($i_PID = -1)
If $i_PID <> -1 Then
Local $ai_Handle = DllCall("kernel32.dll", 'int', 'OpenProcess', 'int', 0x1f0fff, 'int', False, 'int', $i_PID)
Local $ai_Return = DllCall("psapi.dll", 'int', 'EmptyWorkingSet', 'long', $ai_Handle[0])
DllCall('kernel32.dll', 'int', 'CloseHandle', 'int', $ai_Handle[0])
Else
Local $ai_Return = DllCall("psapi.dll", 'int', 'EmptyWorkingSet', 'long', -1)
EndIf
Return $ai_Return[0]
EndFunc ;==>_ReduceMemory
、私は同じことをやってのけるしようと探したがstricly Pythonでいます。 Pythonで完全にネイティブなもの、または別のプロセスを呼び出す必要なしにPython内でAutoitスクリプトを実行できるものによって。
ご協力いただきありがとうございます。
EDIT:ちょうど入れて、私は私のアプリケーションを最後にポータブルにしたいと思います。だから、私はWindowsで任意のDLLを登録することを避けようとしています(誰かがWin32モジュールを使用しようと考えていた場合)。ありがとうございました!
ライブラリーが存在しない限り、またはLinuxのような場合はウィンドウがあいまいであるかのようなコードを持っていない限り、移植可能なコードを書くことはできません。 – Corbin
いつものように...あなたはこれまでに何を試しましたか? StackOverflowは特定の質問です。何かを試してみて、うまく定義された問題に遭遇したら、ここでそれを聞いてください。 – Amber
OK、仕様があります。給料について話しましょう。 – joaquin