Makale numarası: 242416 - Son Gözden Geçirme: 01 Temmuz 2004 Perşembe - Gözden geçirme: 2.1

Nasıl yapılır: Windows NT, Visual Basic kullanarak 16-bit görevlerinde numaralandır

Sistem İpucuBu makale, kullandığınızdan farklı bir işletim sistemine yöneliktir. Sizinle ilgili olmayabilecek makale içeriği devre dışı bırakıldı.

Bu Sayfada

Hepsini aç | Hepsini kapa

Özet

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.

Daha fazla bilgi

Örnek oluşturma adımları

  1. Yeni bir proje standart exe DOSYASı, Visual Basic'te başlatın. Varsayılan olarak, Form1 oluşturulur.
  2. Bir KomutDüğmesi, forma ekleyin.
  3. Formları AutoReDraw özelliği true olarak ayarlayın.
  4. Project menüden seçin ve yeni bir modül projeye ekleyin. Module1, varsayılan olarak oluşturulur.
  5. 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
    					
  6. 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 
    					
  7. Projeyi kaydedin ve proje çalıştırmak için F5 tuşuna basın. Form üzerinde numaralandırılmış işlemleri listeler.

Referanslar

170570  (http://support.microsoft.com/kb/170570/EN-US/ ) Bir Windows ileti işleyicisi'AddressOf, VB ile üretme
181578  (http://support.microsoft.com/kb/181578/EN-US/ ) Güvenlik açığının nasıl geri çağrı Visual Basic işlevleri Kimden bir C Dll

Bu makaledeki bilginin uygulandığı durum:
  • Microsoft Visual Basic 5.0 Learning Edition, Ne zaman ne ile kullanilir:
    • Microsoft Windows NT 4.0
  • Microsoft Visual Basic 6.0 Learning Edition, Ne zaman ne ile kullanilir:
    • Microsoft Windows NT 4.0
  • Microsoft Visual Basic 5.0 Professional Edition, Ne zaman ne ile kullanilir:
    • Microsoft Windows NT 4.0
  • Microsoft Visual Basic 6.0 Professional Edition, Ne zaman ne ile kullanilir:
    • Microsoft Windows NT 4.0
  • Microsoft Visual Basic 5.0 Enterprise Edition, Ne zaman ne ile kullanilir:
    • Microsoft Windows NT 4.0
  • Microsoft Visual Basic Enterprise Edition for Windows 6.0, Ne zaman ne ile kullanilir:
    • Microsoft Windows NT 4.0
Anahtar Kelimeler: 
kbmt kbapi kbhowto KB242416 KbMttr
Otomatik TercümeOtomatik Tercüme
Ö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/ )