Tüm Windows NT sistemde çalışan 16-bit görevleri numaralandırmak gerekli zamanlar olabilir. Bunu yapmak için VDMEnumProcessWOW ve VDMEnumTaskWOWEx API işlevlerini kullanın. Ek BILGI bölümü izlemek için Visual Basic içinde bu işlevleri kullanma gösterilmiştir. Bunu ayrıca 16 bitlik işlemler numaralandırılamadı, çağrı geri işlevleri kullanmak gerekli olduğunu unutmayın. Visual Basic içinde geri arama işlevlerden kullanımını tanımıyorsanız, bu makalenin "Başvurular bölümünde belirtilen makale bakın.
Yeni bir proje standart exe DOSYASı, Visual Basic'te başlatın. Varsayılan olarak, Form1 oluşturulur.
Bir KomutDüğmesi, forma ekleyin.
Formları AutoReDraw özelliği true olarak ayarlayın.
Project menüden seçin ve yeni bir modül projeye ekleyin. Module1, varsayılan olarak oluşturulur.
Module1 kod penceresine aşağıdaki kodu kopyalayın:
Option Explicit
Declare Function VDMEnumProcessWOW Lib "VDMDBG.dll" _
(ByVal fp As Long, lparam As Long) As Integer
Declare Function VDMEnumTaskWOWEx Lib "VDMDBG.dll " _
(dwProcessId As Long, ByVal fp As Long, lparam As Long) As Integer
Declare Function lstrcpy Lib "kernel32" _
(ByVal lpString1 As Any, ByVal lpString2 As Any) As Long
Public Function PROCESSENUMPROC _
(ByVal dwProcessId As Long, ByVal dwAttributes As Long, _
lpUserDefined As Long) As Boolean
Form1.Cls
Form1.Print "dwProcessId: " & dwProcessId
Form1.Print "dwAttributes: " & dwAttributes & vbCrLf
' Pass the Process ID to this next function to enumerate that Process.
Call VDMEnumTaskWOWEx(ByVal dwProcessId, AddressOf TASKENUMPROCEX, 0)
End Function
Public Function TASKENUMPROCEX _
(ByVal dwThreadId As Long, ByVal hMod16 As Long, _
ByVal hTask16 As Long, ByVal pszModName As Long, _
ByVal pszFileName As Long, lpUserDefined As Long) As Boolean
' Print Enumerated task of the 16bit process
Form1.Print "dwThreadId: " & dwThreadId & vbCrLf & _
"hMod16: " & hMod16 & vbCrLf & "hTask16: " & hTask16 & vbCrLf & _
"pszModName: " & PointerToString(pszModName) & vbCrLf & _
"pszFileName: " & PointerToString(pszFileName) & vbCrLf & _
"lpUserDefined: " & lpUserDefined & vbCrLf
' Return value is false until there are no more tasks to enumerate.
End Function
Private Function PointerToString(lPtr As Long) As String
Dim sTemp As String * 255, Retval As Long
' Parse String Values returned from function call.
Retval = lstrcpy(sTemp, lPtr)
If (InStr(1, sTemp, Chr(0)) = 0) Then
PointerToString = ""
Else
PointerToString = Left(sTemp, InStr(1, sTemp, Chr(0)) - 1)
End If
End Function
Form1 kod penceresine aşağıdaki kodu kopyalayın:
Private Sub Command1_Click()
Dim Retval As Long
' Call VDMEnumProcessWOW to beging the enumeration
Retval = VDMEnumProcessWOW(AddressOf PROCESSENUMPROC, 0)
End Sub
Projeyi kaydedin ve proje çalıştırmak için F5 tuşuna basın. Form üzerinde numaralandırılmış işlemleri listeler.
ÖNEMLİ: Bu makale, bir kişi tarafından çevrilmek yerine, Microsoft makine-çevirisi yazılımı ile çevrilmiştir. Microsoft size hem kişiler tarafından çevrilmiş, hem de makine-çevrisi ile çevrilmiş makaleler sunar. Böylelikle, bilgi bankamızdaki tüm makalelere, kendi dilinizde ulaşmış olursunuz. Bununla birlikte, makine tarafından çevrilmiş makaleler mükemmel değildir. Bir yabancının sizin dilinizde konuşurken yapabileceği hatalar gibi, makale; kelime dağarcığı, söz dizim kuralları veya dil bilgisi açısından yanlışlar içerebilir. Microsoft, içeriğin yanlış çevrimi veya onun müşteri tarafından kullanımından doğan; kusur, hata veya zarardan sorumlu değildir. Microsoft ayrıca makine çevirisi yazılımını sıkça güncellemektedir.
Makalenin İngilizcesi aşağıdaki gibidir:242416
(http://support.microsoft.com/kb/242416/en-us/
)
Bu makaleyi kullanmak için ne kadar kişisel çaba harcadınız?
Çok az
Az
Orta
Fazla
Çok fazla
Bu bilgiyi geliştirmemiz için nedenleri ve bu konuda neler yapabileceğimizi paylaşın
Teşekkürler! Görüşleriniz, destek içeriğimizi geliştirmemize yardımcı olmak için kullanılmaktadır. Diğer yardım seçenekleri için, lütfen Yardım ve Destek Giriş Sayfasını ziyaret edin.