Const BM_CLICK As Integer = &HF5
Declare Function FindClose Lib "kernel32.dll" (
ByVal hFindFile As Long) As Long
Const WM_SETTEXT As Long = &HC
<DllImport("user32.dll", SetLastError:=True, CharSet:=CharSet.Auto)> Private Shared Function FindWindowEx(ByVal parentHandle As IntPtr, ByVal childAfter As IntPtr, ByVal lclassName As String, ByVal windowTitle As String) As IntPtr
End Function
<DllImport("user32.dll", SetLastError:=True, CharSet:=CharSet.Auto)> Private Shared Function SendMessage(ByVal hWnd As IntPtr, ByVal Msg As UInteger, ByVal wParam As Integer, ByVal lParam As Integer) As IntPtr
End Function
Dim hParent As IntPtr = FindWindowEx(IntPtr.Zero, hParent, "Uygulama Sınıf adı", "Uygulama Başlıgı")
If Not hParent.Equals(IntPtr.Zero) Then
Dim hChild As IntPtr = FindWindowEx(hParent, hChild, "Child Class", "Butonun üstündeki yazı")
If Not hChild.Equals(IntPtr.Zero) Then
SendMessage(hChild, BM_CLICK, 0, 0)
SendMessage(hChild, WM_SETTEXT, 0, 0)
Else
MessageBox.Show("Girilen veriler ile ilişkin uygulama bulundu.")
End If
Else
MessageBox.Show("Girilen veriler ile ilişkin uygulama bulunamadı.")
End If
Tavsiyen için teşekkürler, test edeceğim.Bu uygulamaların her birine bir kod ekle arkada çalışan işlemleri çeksinler eğer loader algılanmıyorsa çekilen işlemlerde programlar mesajı verip kapatsın..
en basit haliyle görev yöneticisinden çekebilir verileri loader.exe yoksa kapatılır mesajı verip
Teşekkürler, test edeceğim. Bilgisayarda AutoIt kurulu ama ek olarak onu da indiririm.İstediğin şeyin başka yöntemler ile kesinlikle yapılabileceğini biliyorum fakat ben bu yöntemi kullanıyorum.
Olay şu "Loader" uygulamamız "Çalıştırılan" uygulamaya veri gönderiyor ve gönderdiği veri bir butona tıklama olayı yani gönderdiğimiz veri ile uygulamanın sonlandırılmasını engelliyoruz. Uygulamanın başlangıcına timer ekleyip 5 saniye delay vermeni öneririm sen loader ile uygulamayı çalıştırdığında aşağıdaki kodu uygulayacaksın bu sayede butona tıklandığında uygulamayı sonlandıran timer'ı durdurucak. Eğer uygulama tek başına çalıştırılırsa durdurulma butonuna tıklanmadığı için uygulama otomatik sonlandırılacak yani çalıştırılma izini verilmemiş olucak.
Loader ile uygulamayı başlattığında aşağıdaki kodu uygulayacaksın timer'a ekleyebilirsin.Kod:Const BM_CLICK As Integer = &HF5 Declare Function FindClose Lib "kernel32.dll" ( ByVal hFindFile As Long) As Long Const WM_SETTEXT As Long = &HC <DllImport("user32.dll", SetLastError:=True, CharSet:=CharSet.Auto)> Private Shared Function FindWindowEx(ByVal parentHandle As IntPtr, ByVal childAfter As IntPtr, ByVal lclassName As String, ByVal windowTitle As String) As IntPtr End Function <DllImport("user32.dll", SetLastError:=True, CharSet:=CharSet.Auto)> Private Shared Function SendMessage(ByVal hWnd As IntPtr, ByVal Msg As UInteger, ByVal wParam As Integer, ByVal lParam As Integer) As IntPtr End Function
Kod:Dim hParent As IntPtr = FindWindowEx(IntPtr.Zero, hParent, "Uygulama Sınıf adı", "Uygulama Başlıgı") If Not hParent.Equals(IntPtr.Zero) Then Dim hChild As IntPtr = FindWindowEx(hParent, hChild, "Child Class", "Butonun üstündeki yazı") If Not hChild.Equals(IntPtr.Zero) Then SendMessage(hChild, BM_CLICK, 0, 0) SendMessage(hChild, WM_SETTEXT, 0, 0) Else MessageBox.Show("Girilen veriler ile ilişkin uygulama bulundu.") End If Else MessageBox.Show("Girilen veriler ile ilişkin uygulama bulunamadı.") End If
Tüm bu dediğim sınıf değerlerini bulmak için iseBağlantıları görmek için lütfen Giriş Yapisimli uygulamayı indirmen gerekiyor.
Uygulamanın Adı : "AutoIt Window Info"
Finder tool butonu ile uygulamanın üzerine gelip butonu seçmen gerekiyor ve tüm bilgiler listeleniyor.
Eğer anlamadıysan özelden ulaşırsın daha detaylı anlatırım.
Mantığı çözdüm reisim, dün haber vermeyi unuttum konu kilitlenebilir.Kanka basit olarak form açılınca laoderden açtırmak istediğin uygulamayı kapattırırsın, eğer açıksa forma mesaj yollar ve timer başlatırsın timer sürekli çalışacağı için program yine kapanır eğer sen formdan buton ile basarsan timeri durdurur programı başlatırsın bu kadar basit eğer program açıldıktan sonra tekrar kapanırsa bool yardımıyla tekrardan timeri başlatırsın böylece program kapandığında tekrardan loader üzerinden çalıştırman gerekir mantığı böyle
nasıl çözdün bilgilendirirsen bizimde belki işimize yararMantığı çözdüm reisim, dün haber vermeyi unuttum konu kilitlenebilir.
Loader'e onay formu ve onayı algılaması için nesne ekledim. Uygulamayı manuel çalıştırıldığında sadece onay formunu algılayacak şekilde ayarladım ki açılmasın, kapansın. Loader'den başlatıldığında ise onay formunu ve onay nesnesini algılayacak şekilde ayarladım. Sadece kontrol ayarlarını değiştirdim gibi bir şey.nasıl çözdün bilgilendirirsen bizimde belki işimize yarar
We use cookies and similar technologies for the following purposes:
Do you accept cookies and these technologies?
We use cookies and similar technologies for the following purposes:
Do you accept cookies and these technologies?