2017-01-12 9 views
0

私は既存のプロジェクトに追加する前にコードをテストしています。VB6 'ランタイムエラー' 424 ':Object Required'エラー

Option Explicit 

Dim objShell As Object 
Dim m_EngineRun As Object 

Sub main() 

Set objShell = CreateObject("WScript.Shell") 
Set m_EngineRun = objShell.Exec("notepad.exe") 
Dim objWMIService As Object 
Dim colProcessList As Object 

MsgBox m_EngineRun.ProcessID 

Set objWMIService = GetObject("winmgmts:\\.\root\cimv2") 
Set colProcessList = objWMIService.ExecQuery("Select * from Win32_Process Where ProcessID = " & m_EngineRun.ProcessID) 

If colProcessList.Count = 1 Then 
    objShell.run "TASKKILL /F /IM " & m_EngineRun.ProcessID, , True 
    MsgBox m_EngineRun.ProcessID & (" terminated") 
Else 
    MsgBox m_EngineRun.ProcessID & (" does not exist") 
End If 
End Sub 

次に、以下の行を追加して、424エラーで失敗します。

Option Explicit 

Dim objShell As Object 
Dim m_EngineRun As Object 

'Added this line 
Dim m_PID As Object 

Sub main() 

Set objShell = CreateObject("WScript.Shell") 
Set m_EngineRun = objShell.Exec("notepad.exe") 

'And this line 
Set m_PID = m_EngineRun.ProcessID 
Dim objWMIService As Object 
Dim colProcessList As Object 

'And changed this one 
MsgBox m_PID 

Set objWMIService = GetObject("winmgmts:\\.\root\cimv2") 
Set colProcessList = objWMIService.ExecQuery("Select * from Win32_Process Where ProcessID = " & m_EngineRun.ProcessID) 

If colProcessList.Count = 1 Then 
    objShell.run "TASKKILL /F /IM " & m_EngineRun.ProcessID, , True 
    MsgBox m_EngineRun.ProcessID & (" terminated") 
Else 
    MsgBox m_EngineRun.ProcessID & (" does not exist") 
End If 
End Sub 

間違いなくトラブルメーカーであるSet m_PID = m_EngineRun.ProcessID行です。

私の特定の問題に関連する回答を見つけることができませんでした。おそらくm_PIDはオブジェクトではないはずですか?しかしもしそうなら、どうしたらよいでしょうか?

ご協力いただきまして誠にありがとうございます。

+0

VB6の知識が不足しているため、オブジェクトになると思っていました。ご協力いただきありがとうございます。恥さ、私は正しいとあなたをマークすることはできません。 – Chris

答えて

2

ProcessIDはオブジェクトではありません。これは整数(数値のプロセスID)です。

As ObjectSetを外し、ちょうど直接割り当てる:

Dim m_PID 
'.... 
m_PID = m_EngineRun.ProcessID 

は、それはあなたが遭遇するだろう物事の大半は、おそらくではありませんので、すべてが、オブジェクトであることを前提としないために、おそらく良いでしょう。私は、あなたが他に分かっていない限り、オブジェクトを期待しないで始めるだろうし、問題が発生した場合はオブジェクトを試してみることに移ります。

関連する問題