0

私はphp開発者であり、php+いくつかのWindowsAPIを使用してタスクを実行したいと考えています。

タスクは次のとおりです。実行中のWindowsアプリケーションにそれ自体を閉じるように適切に要求します。

phpでこれを行うのは確かに自然ではありませんが、これは私が最近使用していて快適な言語であるため、phpで小さなスクリプトを書いています。

4

2 に答える 2

1

PHPには、win32APIを呼び出すためのサポートがいくつかあります。ただし、その拡張機能の安定性はあまり良くないようです。

システムコールを使うのが一番いいと思います。

于 2013-01-07T18:44:18.073 に答える
1

php.netサイトはいくつかのガイダンスを提供しています:

http://php.net/manual/en/book.w32api.php

w32api_deftype w32api_init_dtype w32api_ invoke_function w32api_register_function w32api_set_call_method

最もクリーンな方法は、WM_CLOSEメッセージをWindowsプログラムに送信することです。

Win32プロセスを強制終了するためのより残忍で効果的な方法は、pskill.exeを使用することです。

ここからダウンロードできます: http ://technet.microsoft.com/en-us/sysinternals/bb896683.aspx

次のようにvbscriptプログラムを呼び出すこともできます。

' ProcessKillLocal.vbs
' Sample VBScript to kill a program
' Author Guy Thomas http://computerperformance.co.uk/
' Version 2.7 - December 2010
' ------------------------ -------------------------------' 
Option Explicit
Dim objWMIService, objProcess, colProcess
Dim strComputer, strProcessKill 
strComputer = "."
'YOU NEED TO REPLACE calc.exe WITH THE APP YOU WISH TO KILL
strProcessKill = "'calc.exe'" 

Set objWMIService = GetObject("winmgmts:" _
& "{impersonationLevel=impersonate}!\\" _ 
& strComputer & "\root\cimv2") 

Set colProcess = objWMIService.ExecQuery _
("Select * from Win32_Process Where Name = " & strProcessKill )
For Each objProcess in colProcess
objProcess.Terminate()
Next 
WSCript.Echo "Just killed process " & strProcessKill _
& " on " & strComputer
WScript.Quit 
' End of WMI Example of a Kill Process 
于 2013-01-07T22:14:55.373 に答える