Arama butonu
Bu konudaki kullanıcılar: 1 misafir
8
Cevap
1219
Tıklama
0
Öne Çıkarma
[VB] FindWindow Örnek
W
17 yıl
Yüzbaşı
Konu Sahibi

Selamlar, yıllardır uğraştığım ve biçok program yazdığım delphi'de kolaylıkla yapabiliyodum ancak şu son zamanlarımda Visual Basic öğrenmek isteyip Visual Basic 2008 Express indirip başladım ancak haliyle deişik geldi :)

Sorunum şu ki Findwindow komutu ile açık olan pencerelerden başlığında "not defteri" geçen programa WM_QUIT yollayıp kapatmak istiyorum. bunu en basit nasıl yapabilirim?

Programımda 1 tane tuş koyduğumu varsayıp o tuşa yazılıcak komutu yazarsanız sevinirim.. bulduğum örneklerle gittiğim kadarıyla bunu sorunsuz çalıştırıyorum fakat "HATA" mesajı çıkıo karşıma yani işe yaramıo :) nerde yanlış yapıyorum tavsiyede bulunursanız sevinirim teşekkürler.. :)

Dim sTitle As String
Dim iHwnd As Integer
Dim ihTask As Integer
Dim iReturn As Integer
'Dim asd, asdd() As Process

Try
iHwnd = FindWindow(vbNullString, "Not defteri")
MsgBox("Kapandi")
iReturn = PostMessage(iHwnd, WM_QUIT, 0, 0&)
Catch ex As Exception
MsgBox("HATA")
End Try



S
17 yıl
Yarbay

kullanacagin native dll in fonksiyonunu tanimlaman gerekli,

Find Window Icin:
Public Declare Function FindWindow Lib "user32" Alias "FindWindowA" (ByVal lpClassName As String, ByVal lpWindowName As String) As Long

Post message Icin:
Public Declare Function PostMessage Lib "user32" Alias "PostMessageA" (ByVal hwnd As Long, ByVal wMsg As Long, ByVal wParam As Long, ByVal lParam As Long) As Long


Bu mesaja 1 cevap geldi.
W
17 yıl
Yüzbaşı
Konu Sahibi

evet bunları programda en üste yazdım zaten yazmasaydım findwindow ve postmessage çalışmazdı.. ancak komutlarımda bi sorunum yok.. sorunum;

iHwnd = FindWindow(vbNullString, "Not defteri")
MsgBox("Kapandi")
iReturn = PostMessage(iHwnd, WM_QUIT, 0, 0&)

bunun çalışmaması.. yani hiçbi işe yaramaması.. sorun bu :) bi tane örnek program yazarmısınız rica etsem? findwindow ve postmessage kullanarak notdeferini kapatsın.. teşekkürler..


Bu mesaja 1 cevap geldi.
S
17 yıl
Yarbay

Bilgisayarimda VB.NET Yuklu Degil Fakat

Sorunun $u Arkada$im:
iHwnd = FindWindow(vbNullString, "Not defteri")

Burda "Not Defteri" Yerine "Adsız - Not Defteri"

Yazmalisin, Yoksa FindWindow Hicbir handle Bulamaz ve 0 Handle ina WM_QUIT yollar.


Bu mesaja 1 cevap geldi.
S
17 yıl
Yarbay

Ayrica Bir Oneri, .NET Dillerinden Biri ile Ba$layacaksaniz BU C# Olsun.


Bu mesaja 1 cevap geldi.
W
17 yıl
Yüzbaşı
Konu Sahibi

yok ya.. bu kodlar olmuo.. adısz - not defteri denedim.. hatta asdf diye klasör oluşturup onu açtım pencere olarak yine bulamadı kapatamadı falan.. hep hatayla dönüyo.. delphide ne kolaydı halbuki ya.. ilginç cidden.. başka bir tavsiyen varmı bu konu hakkında?

ayrıca ewt başlamadan önce araştırmıştım C'nin güçlü olduunun ve tavsiye edildiine ulaşmıştım ama basic daha kolaydır diye onunla başlamak için hareketlendim :) yani pekte ilerlediim sölenemez.. hiç daha fazla zaman kaybetmeden c# mı geçsem direk?

örneğin şu yapmaya çalıştığımı onda daha kolaylkla yapabilir miyim? hani en azından google arattıımda ulşabileceğim örnekler dahamı afzladır c#'de?


Bu mesaja 1 cevap geldi.
S
17 yıl
Yarbay

quote:

Orjinalden alıntı: who

yok ya.. bu kodlar olmuo.. adısz - not defteri denedim.. hatta asdf diye klasör oluşturup onu açtım pencere olarak yine bulamadı kapatamadı falan.. hep hatayla dönüyo.. delphide ne kolaydı halbuki ya.. ilginç cidden.. başka bir tavsiyen varmı bu konu hakkında?

ayrıca ewt başlamadan önce araştırmıştım C'nin güçlü olduunun ve tavsiye edildiine ulaşmıştım ama basic daha kolaydır diye onunla başlamak için hareketlendim :) yani pekte ilerlediim sölenemez.. hiç daha fazla zaman kaybetmeden c# mı geçsem direk?

örneğin şu yapmaya çalıştığımı onda daha kolaylkla yapabilir miyim? hani en azından google arattıımda ulşabileceğim örnekler dahamı afzladır c#'de?


C# Yazili$ Bakimindan Cok Kolayliklar Saglar Sana, Mesela VB Deki

Public Declare Function PostMessage Lib "user32" Alias "PostMessageA" (ByVal hwnd As Long, ByVal wMsg As Long, ByVal wParam As Long, ByVal lParam As Long) As Long

Bu Karma$ik yazili$i

[DllImport("user32.dll")]
public static extern int PostMessage(IntPtr hwnd, int Message, int wParam, int lParam);

$eklinde Duzgun Bi $ekilde Yazabilirsin.

Ayrica Bu Konu hakkindaki Onerim $udur,
PostMessage yerine
SendMessage Dene

Ayrica Bi Constant Tanimi Yapman Gerek Oda $udur:

const int WM_QUIT = 0x12


Bu mesaja 1 cevap geldi.
W
17 yıl
Yüzbaşı
Konu Sahibi

yok dostum.. yine sorunlar falan çıktı olmadı vesaire.. neyse hiç bu kadar uğraşmamıştım vazgeçtim ben.. tşkler yinede :) C# deneyeyim birazda.. olmadı yine delphime döneyim :) iyi günler.. tşkler tekrardan..


Bu mesaja 1 cevap geldi.
S
17 yıl
Yarbay

Cok Cabuk Pes Ediyosun :)
Al Sana Bi Class, Denedim Cali$iyor ;)

 
class FindAndDestroy
{
public const int WM_COMMAND = 0x0112;
public const int WM_CLOSE = 0xF060;

[DllImport("user32.dll")]
private static extern IntPtr FindWindow(string ClassName, string WindowName);

[DllImport("user32.dll")]
private static extern int SendMessage(IntPtr handle, int Message, int lParam, int wParam);

IntPtr Handle = IntPtr.Zero;

public FindAndDestroy()
{
Handle = FindWindow("Notepad", "Untitled - Notepad");
SendMessage(Handle, WM_COMMAND, WM_CLOSE, 0);
}
}



DH Mobil uygulaması ile devam edin. Mobil tarayıcınız ile mümkün olanların yanı sıra, birçok yeni ve faydalı özelliğe erişin. Gizle ve güncelleme çıkana kadar tekrar gösterme.