投稿時間:2004/06/30(Wed) 09:42 投稿者名:風来坊
Eメール:
URL :
タイトル:ウィンドウのクラス名からプロセスハンドルの取得
現在,ウィンドウのクラス名からプロセスハンドルを取得して それを元に更にいろいろやるプログラムを作りたいと考えたのですが…. 一番始めでつまずいてしまったので,どこが悪いのか指摘してもらえると助かります.
作成中のソースを載せますが,ここでは例として電卓(SciCalc)でやりました.
Private Declare Function FindWindow Lib "user32" _ Alias "FindWindowA" (ByVal lpClassName As String, _ ByVal lpWindowName As String) As Long Private Declare Function GetWindowThreadProcessId Lib "user32" _ (ByVal hWnd As Long, lpdwProcessId As Long) As Long Private Declare Function OpenProcess Lib "kernel32" _ (ByVal dwDesiredAccess As Long, ByVal bInheritHandle As Long, _ ByVal dwProcessId As Long) As Long
Private Sub Command1_Click() Dim hWnd As Long Dim lngPID As Long Dim lngHandle As Long hWnd = FindWindow("SciCalc", vbNullString) Text1.Text = hWnd If hWnd <> 0 Then Call GetWindowThreadProcessId(hWnd, lngPID) Text2.Text = Hex(lngPID) & " and " & lngPID Else Text2.Text = "見つかりません!" End If lngHandle = OpenProcess(PROCESS_ALL_ACCESS, False, lngPID) Text3.Text = Hex(lngHandle) End Sub
このプログラムでFindWindowでウィンドウのハンドルを取得して, ウィンドウハンドルからGetWindowThreadProcessIdでプロセスIDを取得してます. ここまでは上手くいっているのですが, プロセスIDからOpenProcessでプロセスハンドルを取得しようとした場合に, lngHandleの値がいつも"0"になってしまいます.
思い当たる所は試したつもりなのですが,上手くいかないので アドバイスをお願いいたします.
|