2010-11-19 16 views
0

C’de programlama yapıyorum ve bir düğmeyi uzaktan programlı olarak tıklıyorum. Basit, çeşitli basit form uygulamalarında yaptım .. ama bir problemle karşılaştım.FindWindowEx sınıf/başlık yardımı

HWND WINAPI FindWindowEx(HWND hwndParent, HWND hwndChildAfter, LPCTSTR lpszClass, LPCTSTR lpszWindow); 

Spy ++ (Eski 6.0 sürümü) ve çok daha uygun bir WinID aracını kullanmayı denedim.

Bunun bir örneği şudur; Calc.exe içinde gerekli sınıfı ve 'window' bulmaya çalışıyorum. Windows 7'de, bu düğmelerin sınıfı sadece "Düğme" dir. Tamam, ama başlığı aradığın zaman, "" (NULL). Bunu nasıl geçebilirim? Düğmenin kimliğini aldım, ancak "pencere" başlığı yerine kimliği nasıl kullanırdım?

Ne söylemeye çalıştığımı anlamıyorsanız, basitleştirip basitleştiremediğimi görmeme izin verin; Sınıf adına sahibim, ancak başlığa sahip değilim. Başlığa sahip olmadığım halde (ancak kimliğim var) bir pencereye nasıl hwnd seçebilirim? Eğer düğmeye kimliğiniz varsa

+0

Bu, Windows'un bir sonraki sürümünde kırılabilir kırılgan kod kokuyor. Tam olarak ne yapıyorsun? Neden bir butona programatik olarak tıklamaya çalışıyorsunuz? –

+0

Bana ilginç gelen bir şey gibi görünüyor; Bir makro programı gibi bir görevi otomatik hale getirebilme. Bu sadece benim için neler yapabileceğini görmek için bir 'aptallık'. – Saustin

cevap

2

, sadece kendi ele almak için GetDlgItem kullanın:

HWND hButton = GetDlgItem(hParent, buttonID); 
+0

Geç cevap için özür dilerim; Düğme kimliğini işlevinizle kullanmayı denedim, ancak bir hata veriyor ve GetLastError'ı ve tüm bunları kullandığımda, yalnızca işe yaramaz hale gelirim "İşlem başarıyla tamamlandı." DÜZENLEME: Başka bir uygulamada denedim, yöntemini kullandım ve işe yaradı. Ancak, bu tüm uygulamalarda çalışmaz. Sebebini biliyor musun? Belki izinler? – Saustin

+0

@Saustin: Doğru ebeveyn tanıtıcısına ve kimliğine sahip olduğunuz sürece çalışmalıdır. Bazen asıl kontrol başka bir çocuk penceresi içine yerleştirilebilir, böylece ebeveyni yanlış anlayabilirsiniz. – casablanca

+0

Oluşabilecek en ufak bir düşüncem yoktu. Teşekkürler! – Saustin