PID öğrenme

Durum
Üzgünüz bu konu cevaplar için kapatılmıştır...
Uzman Üye
Katılım
11 Şub 2018
Mesajlar
205
Tepki puanı
20
6 HİZMET YILI
Merhaba. Vb.Net'de belirlediğimiz bir programın PID adresini öğrenme şansımız varmı. Yani mesela Textbox içine uygulama ismini yazarak o yazdığımız exe nin PID adresini öğrenme şansımız varmı? (Görev yöneticisinden bakabiliyoruz biliyorum ama bu farklı birşey için kullanıcam.) Yardımlarınızı bekliyorum..
 
Üye
Katılım
24 Mar 2018
Mesajlar
35
Tepki puanı
2
Yaş
25
6 HİZMET YILI
Denemedım ama c++ da biliyorum ama sanıyorum yapabilirsin.
 
Kernel Level F ing
Griffin Premium
Katılım
10 May 2016
Mesajlar
1,765
Çözümler
5
Tepki puanı
720
Ödüller
13
Yaş
23
Sosyal
8 HİZMET YILI
C#:
Option Explicit

Private Const MAX_PATH As Long = 260



Private Type PROCESSENTRY32

    dwSize As Long

    cntUsage As Long

    th32ProcessID As Long

    th32DefaultHeapID As Long

    th32ModuleID As Long

    cntThreads As Long

    th32ParentProcessID As Long

    pcPriClassBase As Long

    dwFlags As Long

    szExeFile As String * MAX_PATH

End Type

Private Declare Function CreateToolhelpSnapshot Lib "kernel32" Alias "CreateToolhelp32Snapshot" (ByVal lFlags As Long, ByVal lProcessID As Long) As Long

    Private Const TH32CS_SNAPPROCESS As Long = 2&

    Private Declare Function GetWindowThreadProcessId Lib "user32" (ByVal hwnd As Long, lpdwProcessId As Long) As Long

Private Declare Function ProcessFirst Lib "kernel32" Alias "Process32First" (ByVal hSnapShot As Long, uProcess As PROCESSENTRY32) As Long

Private Declare Function ProcessNext Lib "kernel32" Alias "Process32Next" (ByVal hSnapShot As Long, uProcess As PROCESSENTRY32) As Long

Private Declare Function CloseHandle Lib "kernel32" (ByVal hObject As Long) As Long



Private Sub Form_Load()



Dim MyProc As String



MyProc = "explorer.exe"

Me.Caption = FindProcessID(MyProc)

End Sub

Private Function FindProcessID(ByVal pExename As String) As Long



    Dim ProcessID As Long, hSnapShot As Long

    Dim uProcess As PROCESSENTRY32, rProcessFound As Long

    Dim Pos As Integer, szExename As String



    hSnapShot = CreateToolhelpSnapshot(TH32CS_SNAPPROCESS, 0&)

    If hSnapShot = -1 Then

        Exit Function

    End If

    'Initialize uProcess with correct size

    uProcess.dwSize = Len(uProcess)

    rProcessFound = ProcessFirst(hSnapShot, uProcess)

    Do While rProcessFound

        Pos = InStr(1, uProcess.szExeFile, vbNullChar)

        If Pos Then

            szExename = Left$(uProcess.szExeFile, Pos - 1)

        End If

        If LCase$(szExename) = LCase$(pExename) Then

            ProcessID = uProcess.th32ProcessID

            Exit Do

          Else

            rProcessFound = ProcessNext(hSnapShot, uProcess)

        End If

    Loop

    CloseHandle hSnapShot

    FindProcessID = ProcessID



End Function


Bu Kod İşini Görür Sanırım.
Kendine Göre Düzenler Kullanırsın .NET Framework versiyonu 4.5.1 de denedim çalışıyordu. (Çalışmazsa 4.5 vb. versiyon değişikliği yapıp deneyebilirsin. Bir Süre olamayacağım sorun olursa 1-2 güne özelden cevap veririm...)
 
Uzman Üye
Katılım
11 Şub 2018
Mesajlar
205
Tepki puanı
20
6 HİZMET YILI
C#:
Option Explicit

Private Const MAX_PATH As Long = 260



Private Type PROCESSENTRY32

    dwSize As Long

    cntUsage As Long

    th32ProcessID As Long

    th32DefaultHeapID As Long

    th32ModuleID As Long

    cntThreads As Long

    th32ParentProcessID As Long

    pcPriClassBase As Long

    dwFlags As Long

    szExeFile As String * MAX_PATH

End Type

Private Declare Function CreateToolhelpSnapshot Lib "kernel32" Alias "CreateToolhelp32Snapshot" (ByVal lFlags As Long, ByVal lProcessID As Long) As Long

    Private Const TH32CS_SNAPPROCESS As Long = 2&

    Private Declare Function GetWindowThreadProcessId Lib "user32" (ByVal hwnd As Long, lpdwProcessId As Long) As Long

Private Declare Function ProcessFirst Lib "kernel32" Alias "Process32First" (ByVal hSnapShot As Long, uProcess As PROCESSENTRY32) As Long

Private Declare Function ProcessNext Lib "kernel32" Alias "Process32Next" (ByVal hSnapShot As Long, uProcess As PROCESSENTRY32) As Long

Private Declare Function CloseHandle Lib "kernel32" (ByVal hObject As Long) As Long



Private Sub Form_Load()



Dim MyProc As String



MyProc = "explorer.exe"

Me.Caption = FindProcessID(MyProc)

End Sub

Private Function FindProcessID(ByVal pExename As String) As Long



    Dim ProcessID As Long, hSnapShot As Long

    Dim uProcess As PROCESSENTRY32, rProcessFound As Long

    Dim Pos As Integer, szExename As String



    hSnapShot = CreateToolhelpSnapshot(TH32CS_SNAPPROCESS, 0&)

    If hSnapShot = -1 Then

        Exit Function

    End If

    'Initialize uProcess with correct size

    uProcess.dwSize = Len(uProcess)

    rProcessFound = ProcessFirst(hSnapShot, uProcess)

    Do While rProcessFound

        Pos = InStr(1, uProcess.szExeFile, vbNullChar)

        If Pos Then

            szExename = Left$(uProcess.szExeFile, Pos - 1)

        End If

        If LCase$(szExename) = LCase$(pExename) Then

            ProcessID = uProcess.th32ProcessID

            Exit Do

          Else

            rProcessFound = ProcessNext(hSnapShot, uProcess)

        End If

    Loop

    CloseHandle hSnapShot

    FindProcessID = ProcessID



End Function


Bu Kod İşini Görür Sanırım.
Kendine Göre Düzenler Kullanırsın .NET Framework versiyonu 4.5.1 de denedim çalışıyordu. (Çalışmazsa 4.5 vb. versiyon değişikliği yapıp deneyebilirsin. Bir Süre olamayacağım sorun olursa 1-2 güne özelden cevap veririm...)

böyle bu şekil yapınca karışık geliyor anlıyamıyorum. örnek için sourceli bitane proje atma şansınız varmı acaba :)
 
Kernel Level F ing
Griffin Premium
Katılım
10 May 2016
Mesajlar
1,765
Çözümler
5
Tepki puanı
720
Ödüller
13
Yaş
23
Sosyal
8 HİZMET YILI
böyle bu şekil yapınca karışık geliyor anlıyamıyorum. örnek için sourceli bitane proje atma şansınız varmı acaba :)
Bilgisayarda olabilseydim direk benim taskmgr projesi var atardım ama ne yazık ki. Ancak bekleyebilirsen ama yarın işteyken vaktim olunca buraya yukarıdaki kodu anlatmaya çalışırım...

(Bu arada vb den C# / C++ vs. Geçmeye başla bence daha rahat, geniş ve daha çok kaynak var. Ben VB yi bırakalı oldu biraz o yüzden eski harddiski bulmam gerekecek...)
 
Uzman Üye
Katılım
11 Şub 2018
Mesajlar
205
Tepki puanı
20
6 HİZMET YILI
Bilgisayarda olabilseydim direk benim taskmgr projesi var atardım ama ne yazık ki. Ancak bekleyebilirsen ama yarın işteyken vaktim olunca buraya yukarıdaki kodu anlatmaya çalışırım...

(Bu arada vb den C# / C++ vs. Geçmeye başla bence daha rahat, geniş ve daha çok kaynak var. Ben VB yi bırakalı oldu biraz o yüzden eski harddiski bulmam gerekecek...)

Öncelikle yorumun için teşekkürler. Sanada zahmet olucak ama bulup atabilirsen çok mutlu olurum :)
 
Uzman Üye
Katılım
19 Kas 2016
Mesajlar
197
Tepki puanı
28
Ödüller
7
7 HİZMET YILI
C#:
Option Explicit

Private Const MAX_PATH As Long = 260



Private Type PROCESSENTRY32

    dwSize As Long

    cntUsage As Long

    th32ProcessID As Long

    th32DefaultHeapID As Long

    th32ModuleID As Long

    cntThreads As Long

    th32ParentProcessID As Long

    pcPriClassBase As Long

    dwFlags As Long

    szExeFile As String * MAX_PATH

End Type

Private Declare Function CreateToolhelpSnapshot Lib "kernel32" Alias "CreateToolhelp32Snapshot" (ByVal lFlags As Long, ByVal lProcessID As Long) As Long

    Private Const TH32CS_SNAPPROCESS As Long = 2&

    Private Declare Function GetWindowThreadProcessId Lib "user32" (ByVal hwnd As Long, lpdwProcessId As Long) As Long

Private Declare Function ProcessFirst Lib "kernel32" Alias "Process32First" (ByVal hSnapShot As Long, uProcess As PROCESSENTRY32) As Long

Private Declare Function ProcessNext Lib "kernel32" Alias "Process32Next" (ByVal hSnapShot As Long, uProcess As PROCESSENTRY32) As Long

Private Declare Function CloseHandle Lib "kernel32" (ByVal hObject As Long) As Long



Private Sub Form_Load()



Dim MyProc As String



MyProc = "explorer.exe"

Me.Caption = FindProcessID(MyProc)

End Sub

Private Function FindProcessID(ByVal pExename As String) As Long



    Dim ProcessID As Long, hSnapShot As Long

    Dim uProcess As PROCESSENTRY32, rProcessFound As Long

    Dim Pos As Integer, szExename As String



    hSnapShot = CreateToolhelpSnapshot(TH32CS_SNAPPROCESS, 0&)

    If hSnapShot = -1 Then

        Exit Function

    End If

    'Initialize uProcess with correct size

    uProcess.dwSize = Len(uProcess)

    rProcessFound = ProcessFirst(hSnapShot, uProcess)

    Do While rProcessFound

        Pos = InStr(1, uProcess.szExeFile, vbNullChar)

        If Pos Then

            szExename = Left$(uProcess.szExeFile, Pos - 1)

        End If

        If LCase$(szExename) = LCase$(pExename) Then

            ProcessID = uProcess.th32ProcessID

            Exit Do

          Else

            rProcessFound = ProcessNext(hSnapShot, uProcess)

        End If

    Loop

    CloseHandle hSnapShot

    FindProcessID = ProcessID



End Function


Bu Kod İşini Görür Sanırım.
Kendine Göre Düzenler Kullanırsın .NET Framework versiyonu 4.5.1 de denedim çalışıyordu. (Çalışmazsa 4.5 vb. versiyon değişikliği yapıp deneyebilirsin. Bir Süre olamayacağım sorun olursa 1-2 güne özelden cevap veririm...)
Çalışıyor. Yalnız program ikincide kapanıyor.
 
Durum
Üzgünüz bu konu cevaplar için kapatılmıştır...
Üst
  AdBlock Detected
Elbette, reklam engelleme yazılımı, reklamları engelleme konusunda harika bir iş çıkarır, ancak aynı zamanda web sitemizin bazı yararlı ve önemli özelliklerini de engeller. Mümkün olan en iyi site deneyimi için lütfen bir dakikanızı ayırarak AdBlocker'ınızı devre dışı bırakın.