bu en altta gördüğünüz kodlar seçili olan proğramın tam ismini listbox a döküyor.
bu kodları seçili olan proğramdan değilde, isminin bir kısmını bildiğim proğramın tam adını istiyorum. bu verdiğim kısa kodlar çalışan proğramın resimde gördüğünüz kısımdan sadece "SDS-ONE KnitPaint" kısmını yakalarken en alttaki tam istediğim gibi isminin yanında bulunan dosya yolunuda vermekte. bulduğum hiç bir örnekte bu olmuyor sadece "SDS-ONE KnitPaint" kısmını yakalıyor.
acaba en alttaki kodlardan açık proğram değilde "ProcessName.Contains("KnitPaint")" şeklinde belirttiğim yerden ismini nasıl tam olarak yakalatırım:
inşallah derdimi anlatabildim
For Each p As Process In Process.GetProcesses If p.ProcessName.Contains("KnitPaint") Then Me.Text = p.MainWindowTitle End If Next
Imports System.Runtime.InteropServices Public Class Form1
<DllImport("user32.dll")> _ Private Shared Function GetForegroundWindow() As IntPtr End Function
<DllImport("user32.dll")> _ Private Shared Function GetWindowText(ByVal hWnd As IntPtr, ByVal text As System.Text.StringBuilder, ByVal count As Integer) As Integer End Function
Private Function GetActiveWindowTitle() As String
Const nChars As Integer = 256 Dim handle As IntPtr = IntPtr.Zero Dim Buff As New System.Text.StringBuilder(nChars) handle = GetForegroundWindow()
If GetWindowText(handle, Buff, nChars) > 0 Then Return Buff.ToString() End If Return Nothing End Function
Dim tmr As New Timer
Private Sub Form1_Load(ByVal sender As System.Object, ByVal e As System.EventArgs) Handles MyBase.Load tmr.Interval = 3000 AddHandler tmr.Tick, AddressOf gecti tmr.Start() End Sub
Sub gecti(ByVal sender As Object, ByVal e As System.EventArgs) ListBox1.Items.Add(GetActiveWindowTitle()) End Sub
End Class
yeni mesaja git
Yeni mesajları sizin için sürekli kontrol ediyoruz, bir mesaj yazılırsa otomatik yükleyeceğiz.Bir Daha Gösterme