messagebox penceresindeki butonu tıklama
Forum kuralları
Forum kurallarını okuyup, uyunuz!
Forum kurallarını okuyup, uyunuz!
messagebox penceresindeki butonu tıklama
Merhaba arkadaşlar
ya farklı bir programdaki bir çok bileşeni kendi programımdan seçtirebildim. Ancak messagebox penceresindeki tamam butonunun classını bulduramadım. Bu pencereeki tamam butonunu nasıl tıklatabilirim..
Yardımlarınızz için teşekkür ederim.
ya farklı bir programdaki bir çok bileşeni kendi programımdan seçtirebildim. Ancak messagebox penceresindeki tamam butonunun classını bulduramadım. Bu pencereeki tamam butonunu nasıl tıklatabilirim..
Yardımlarınızz için teşekkür ederim.
http://www.bargem.info
Yaşıyorum..... İnadına değil yaptıklarım. Herşey istediğim için oluyor. İstediğim için türkü dinliyorum. İstediğim için çalışıyorum. İstediğim için yaşıyorum ve istediğim için seni seviyorum...
Yaşıyorum..... İnadına değil yaptıklarım. Herşey istediğim için oluyor. İstediğim için türkü dinliyorum. İstediğim için çalışıyorum. İstediğim için yaşıyorum ve istediğim için seni seviyorum...
Re: messagebox penceresindeki butonu tıklama
Sorduğunuz soru, bir programın butonuna nasıl click yollarım iken cevabı FindWindow ile altındakilere de FindWindowEx ile erişilir idi.
Bu durumda başka programın handle'ine eriştiğinizi ifade ettiğinize göre bu messagebox'ın da handle'ini nasıl arayıp da hangi şartlarda bulamadığınızı yazmamışsınız. Program hakkında fikir verirseniz tabi ulaşılabilir nitelikte bir program ise belki bizde de vardır inceler cevap yazardık.
Bu durumda başka programın handle'ine eriştiğinizi ifade ettiğinize göre bu messagebox'ın da handle'ini nasıl arayıp da hangi şartlarda bulamadığınızı yazmamışsınız. Program hakkında fikir verirseniz tabi ulaşılabilir nitelikte bir program ise belki bizde de vardır inceler cevap yazardık.
Re: messagebox penceresindeki butonu tıklama
Ya aslında program üzerindeki birçok bileşenin class ve başlıklarını alıp üzerlerinde işlemler yapabildim. Ancak Messagebox penceresi üzerindeki buttona tıklayamadım. Kendisinin bağlı olduğu classı yazıyorum. Kendi Classını da yazıyorum. ANcak üzerindeki butonu tıklayamıyorum. Program şirket programı, yani özel yazılım. sizin görme ihtimaliniz yok yani muharrem bey. Ayrıca soruma sizin denk gelmeniz beni çok sevindirdi..
http://www.bargem.info
Yaşıyorum..... İnadına değil yaptıklarım. Herşey istediğim için oluyor. İstediğim için türkü dinliyorum. İstediğim için çalışıyorum. İstediğim için yaşıyorum ve istediğim için seni seviyorum...
Yaşıyorum..... İnadına değil yaptıklarım. Herşey istediğim için oluyor. İstediğim için türkü dinliyorum. İstediğim için çalışıyorum. İstediğim için yaşıyorum ve istediğim için seni seviyorum...
Re: messagebox penceresindeki butonu tıklama
Zamanın birinde PowerPoint Viewer'den direkt yazıcı çıktısı alamasınlar diye yazıcı ekranı gelir gelmez iptal butonuna basılması için bir timer/fonksiyon ikilisi hazırlamıştım. Burada print dialog penceresinin herhangi bir yazılımdan bağımsız çalıştığını görmüş buna göre önce açık olan "#32770" sınıfındaki pencereleri tespit ederek bu pencerelerin "screenClass" olup olmadığına bakıyordum. ( İngilizce / Türkçe veya başka bir dilde olabileceğinden başlığa baktırmıyorum ) Sonra da bunun bir yazıcı penceresi olduğuna kanaat getirdiğimde getparent() onun yönlendirildiği kaynak projeyi tespit edip eğer kaynak ilgilendiğim proje ise daha önce bir değişkende tuttuğum bu yazıcı penceresinin handle'ine yeniden dönerek FindWindowEx ile iki defa arama yaparak bulduğum ikinci butonun yazdırma iptal olduğunu bildiğimden ona focus olup butona bastırıyordum.
Bu sistemi kendiniz de uygulayabilirsiniz.. Özetle demek istediğim, o an açık olan messageboxların her birinin handle'inden yola çıkarak "GetParent" ile bun(ları)ın sizin ilgilendiğiniz yazılıma ait olup olmadığını sorgulayın. eğer öyle ise zaten yedekte tuttuğunuz handle nosundan herhangi bir yazılımın butonuna basmak gibi erişip hamlenizi gerçekleştirin.
Dilim / klavyem döndüğünce bu şekilde ifade edebiliyorum. Başarılar.
Bu sistemi kendiniz de uygulayabilirsiniz.. Özetle demek istediğim, o an açık olan messageboxların her birinin handle'inden yola çıkarak "GetParent" ile bun(ları)ın sizin ilgilendiğiniz yazılıma ait olup olmadığını sorgulayın. eğer öyle ise zaten yedekte tuttuğunuz handle nosundan herhangi bir yazılımın butonuna basmak gibi erişip hamlenizi gerçekleştirin.
Dilim / klavyem döndüğünce bu şekilde ifade edebiliyorum. Başarılar.
-
- Üye
- Mesajlar: 153
- Kayıt: 14 Tem 2008 12:28
Re: messagebox penceresindeki butonu tıklama
hocam geçerken uğrayayım dedim de galiba siz usta kişiler başka dil konuşuyorsunuz....mrmarman yazdı:Zamanın birinde PowerPoint Viewer'den direkt yazıcı çıktısı alamasınlar diye yazıcı ekranı gelir gelmez iptal butonuna basılması için bir timer/fonksiyon ikilisi hazırlamıştım. Burada print dialog penceresinin herhangi bir yazılımdan bağımsız çalıştığını görmüş buna göre önce açık olan "#32770" sınıfındaki pencereleri tespit ederek bu pencerelerin "screenClass" olup olmadığına bakıyordum. ( İngilizce / Türkçe veya başka bir dilde olabileceğinden başlığa baktırmıyorum ) Sonra da bunun bir yazıcı penceresi olduğuna kanaat getirdiğimde getparent() onun yönlendirildiği kaynak projeyi tespit edip eğer kaynak ilgilendiğim proje ise daha önce bir değişkende tuttuğum bu yazıcı penceresinin handle'ine yeniden dönerek FindWindowEx ile iki defa arama yaparak bulduğum ikinci butonun yazdırma iptal olduğunu bildiğimden ona focus olup butona bastırıyordum.
Bu sistemi kendiniz de uygulayabilirsiniz.. Özetle demek istediğim, o an açık olan messageboxların her birinin handle'inden yola çıkarak "GetParent" ile bun(ları)ın sizin ilgilendiğiniz yazılıma ait olup olmadığını sorgulayın. eğer öyle ise zaten yedekte tuttuğunuz handle nosundan herhangi bir yazılımın butonuna basmak gibi erişip hamlenizi gerçekleştirin.
Dilim / klavyem döndüğünce bu şekilde ifade edebiliyorum. Başarılar.

Re: messagebox penceresindeki butonu tıklama
ÇOk teşekkür ederim Muharrem Bey;
Hallettim sorunu. Birde burası yeri değil ama sizin bat dosyaları ile hazırlanmış bir ghost projeniz vardı.. O projenizi boot cd oluşturarak yapabildinizmi? Konuyu şu topicte anlatmıştınız.
viewtopic.php?t=6721#37475
Hallettim sorunu. Birde burası yeri değil ama sizin bat dosyaları ile hazırlanmış bir ghost projeniz vardı.. O projenizi boot cd oluşturarak yapabildinizmi? Konuyu şu topicte anlatmıştınız.
viewtopic.php?t=6721#37475
http://www.bargem.info
Yaşıyorum..... İnadına değil yaptıklarım. Herşey istediğim için oluyor. İstediğim için türkü dinliyorum. İstediğim için çalışıyorum. İstediğim için yaşıyorum ve istediğim için seni seviyorum...
Yaşıyorum..... İnadına değil yaptıklarım. Herşey istediğim için oluyor. İstediğim için türkü dinliyorum. İstediğim için çalışıyorum. İstediğim için yaşıyorum ve istediğim için seni seviyorum...
Re: messagebox penceresindeki butonu tıklama
"Ghost Image" alıp bunu bootCD'den yaptım evet.
Image aldıktan sonra Windows'a gelip NERO ile CD/DVD'ye yazarken "Bootable" olan proje oluşturup MS-Dos açılış disketini göstermeniz yeterli. CD/DVD FDD mode olarak bootable oluyor.
Şunu eklemek isterim. USBFlash Disk'lerle de bootable yapabiliyoruz. Ancak bu durumda Partition Sıralaması değişiyor. Boot edilen Flash Disk 1 nolu HDD olarak öne geçiyor. Bu durumda Kaynak/Hedef partitionumuz 1:1 iken ( 1'inci diskin 1'inci partitionu ) 2:1 ( 2'nci diskin 1'nci partitionu ) oluyor. USB boot kullanırsanız bat içeriklerini güncelleyin. Ben bunlar için de birer tane USBKUR.BAT, USBYEDEK.BAT oluşturup içinde bulunduruyorum.
"-or" parametresi ile hedef sürücünün boyutunun ihmal edilmesi eklendiğinden yanlış uygulamada (yani standart KUR.BAT ile ) 1:1 olan USB diske kurmaya çalışacaktır. "-or" parametresi ne işe yarıyor kaldır diyeceksin. Zaman içerisinde partition boyutuyla oynarsak daha sonra bu partitiona kurmak istersek; bu parametre olmadan partitionda fiziksel olarak yer olsa bile kurulum yapmıyor. Aslında bir daha düşündüm de sadece lazım olduğunda bu parametre eklenerek kullanılabilir. Kaldırmakta sakınca yok yani.
Image aldıktan sonra Windows'a gelip NERO ile CD/DVD'ye yazarken "Bootable" olan proje oluşturup MS-Dos açılış disketini göstermeniz yeterli. CD/DVD FDD mode olarak bootable oluyor.
Şunu eklemek isterim. USBFlash Disk'lerle de bootable yapabiliyoruz. Ancak bu durumda Partition Sıralaması değişiyor. Boot edilen Flash Disk 1 nolu HDD olarak öne geçiyor. Bu durumda Kaynak/Hedef partitionumuz 1:1 iken ( 1'inci diskin 1'inci partitionu ) 2:1 ( 2'nci diskin 1'nci partitionu ) oluyor. USB boot kullanırsanız bat içeriklerini güncelleyin. Ben bunlar için de birer tane USBKUR.BAT, USBYEDEK.BAT oluşturup içinde bulunduruyorum.
"-or" parametresi ile hedef sürücünün boyutunun ihmal edilmesi eklendiğinden yanlış uygulamada (yani standart KUR.BAT ile ) 1:1 olan USB diske kurmaya çalışacaktır. "-or" parametresi ne işe yarıyor kaldır diyeceksin. Zaman içerisinde partition boyutuyla oynarsak daha sonra bu partitiona kurmak istersek; bu parametre olmadan partitionda fiziksel olarak yer olsa bile kurulum yapmıyor. Aslında bir daha düşündüm de sadece lazım olduğunda bu parametre eklenerek kullanılabilir. Kaldırmakta sakınca yok yani.
Re: messagebox penceresindeki butonu tıklama
hocam ufak bi örnek ile gösterebilirmisinizmrmarman yazdı:Zamanın birinde PowerPoint Viewer'den direkt yazıcı çıktısı alamasınlar diye yazıcı ekranı gelir gelmez iptal butonuna basılması için bir timer/fonksiyon ikilisi hazırlamıştım. Burada print dialog penceresinin herhangi bir yazılımdan bağımsız çalıştığını görmüş buna göre önce açık olan "#32770" sınıfındaki pencereleri tespit ederek bu pencerelerin "screenClass" olup olmadığına bakıyordum. ( İngilizce / Türkçe veya başka bir dilde olabileceğinden başlığa baktırmıyorum ) Sonra da bunun bir yazıcı penceresi olduğuna kanaat getirdiğimde getparent() onun yönlendirildiği kaynak projeyi tespit edip eğer kaynak ilgilendiğim proje ise daha önce bir değişkende tuttuğum bu yazıcı penceresinin handle'ine yeniden dönerek FindWindowEx ile iki defa arama yaparak bulduğum ikinci butonun yazdırma iptal olduğunu bildiğimden ona focus olup butona bastırıyordum.
Bu sistemi kendiniz de uygulayabilirsiniz.. Özetle demek istediğim, o an açık olan messageboxların her birinin handle'inden yola çıkarak "GetParent" ile bun(ları)ın sizin ilgilendiğiniz yazılıma ait olup olmadığını sorgulayın. eğer öyle ise zaten yedekte tuttuğunuz handle nosundan herhangi bir yazılımın butonuna basmak gibi erişip hamlenizi gerçekleştirin.
Dilim / klavyem döndüğünce bu şekilde ifade edebiliyorum. Başarılar.
Re: messagebox penceresindeki butonu tıklama
Örnekle derken bana bir örnekle yaklaşın ki ben de ona karşılık örnek hazırlayım. Bu forumda yazdığınıza göre siz de programcısınız ve beni anlamanız lazım.
Hazırlamış olduğum proje ticari bir yazılım olduğundan ( bu işlem de o yazılımın kalbi
) kodlarını açarsam arkasından dolaşan olur.
Bana bir yazılım önerin, o yazılımdaki şu butona bastıramıyorum deyin inceleyip örnekleyim. Yoksa şimdi butonu bulunamayan bir yazılım hazırlayım ardından da bu butona tıklayan başka bir yazılımı hazırlayım olmaz. Hedefe odaklanalım. Ben üşenmeden her soru sorana örnek proje hazırlıyorum zaten.
Hazırlamış olduğum proje ticari bir yazılım olduğundan ( bu işlem de o yazılımın kalbi

Bana bir yazılım önerin, o yazılımdaki şu butona bastıramıyorum deyin inceleyip örnekleyim. Yoksa şimdi butonu bulunamayan bir yazılım hazırlayım ardından da bu butona tıklayan başka bir yazılımı hazırlayım olmaz. Hedefe odaklanalım. Ben üşenmeden her soru sorana örnek proje hazırlıyorum zaten.
Re: messagebox penceresindeki butonu tıklama
Başka bir başlık açtığını gördüm. Buradan özetleyip o linke yönlendiricem.
viewtopic.php?f=2&t=27319&p=152504#p152504
// Yapılacak işlem :
// - #32770 bizim dialog penceremiz... Birden fazla varsa
// bunların hangisinin bize ait olduğuna karar vericez..
// a- #32770'in Parentine bakınca 'NotePad' classname ile 'Note Defteri' görmeliyiz...
// b- Child'ına bakıldığındaki gördüğümüz classname 'DirectUIHWND' olmalı
// c- onun da Child'a bakıldığındaki gördüğümüz classname 'CtrlNotifySink' olmalı
// - Butonlarımızın parenti 'CtrlNotifySink' clasname olduğunu biliyoruz.
// - arayacağımız nedir ? handle nosunu bildiğimiz 'NotePad' ve
// yukarıdaki şartlara uyan ve
// 'CtrlNotifySink' olanların altındaki butonlar...
Sana bir fonksiyon hazırladım. İstediğin işlemi birebir yapıyor... İçine de açıklamaları detaylı bir şekilde yaptım.
viewtopic.php?f=2&t=27319&p=152504#p152504
viewtopic.php?f=2&t=27319&p=152504#p152504
// Yapılacak işlem :
// - #32770 bizim dialog penceremiz... Birden fazla varsa
// bunların hangisinin bize ait olduğuna karar vericez..
// a- #32770'in Parentine bakınca 'NotePad' classname ile 'Note Defteri' görmeliyiz...
// b- Child'ına bakıldığındaki gördüğümüz classname 'DirectUIHWND' olmalı
// c- onun da Child'a bakıldığındaki gördüğümüz classname 'CtrlNotifySink' olmalı
// - Butonlarımızın parenti 'CtrlNotifySink' clasname olduğunu biliyoruz.
// - arayacağımız nedir ? handle nosunu bildiğimiz 'NotePad' ve
// yukarıdaki şartlara uyan ve
// 'CtrlNotifySink' olanların altındaki butonlar...
Sana bir fonksiyon hazırladım. İstediğin işlemi birebir yapıyor... İçine de açıklamaları detaylı bir şekilde yaptım.
viewtopic.php?f=2&t=27319&p=152504#p152504