Pencere durumu hakkında bilgi toplayan başka bir uygulama mainWindowhandle verilen bir uygulama yapıyorum. Çocuk pencereleri hakkında bilgi toplarken bir sorunum yok, ancak bir uygulamanın diğer açık pencerelerine veya menülere bile erişemiyorum. Bir uygulamanın tüm pencere tutamaçlarını almanın bir yolu var mı?Uygulamanın Pencere Tutamaçlarını Alın
cevap
Process.MainWindowHandle
'un yaptıklarını görüyorsunuz: Sistemdeki her üst düzey pencere için geri arama yöntemini çağıran EnumWindows
işlevini çağırmak için P/Invoke işlevini kullanın.
Geri arama sırasında, GetWindowThreadProcessId
numaralı telefonu arayın ve pencerenin işlem kimliğini Process.Id
ile karşılaştırın; İşlem kimlikleri eşleşirse, pencere tanıtıcısını bir listeye ekleyin.
İlk olarak, uygulamanın ana penceresinin windowhandle'ını almanız gerekir.
[DllImport("user32.dll")]
[return: MarshalAs(UnmanagedType.Bool)]
static extern bool EnumChildWindows(IntPtr hwndParent, EnumWindowsProc lpEnumFunc, IntPtr lParam);
private List<IntPtr> GetChildWindows(IntPtr parent)
{
List<IntPtr> result = new List<IntPtr>();
GCHandle listHandle = GCHandle.Alloc(result);
try
{
EnumWindowProc childProc = new EnumWindowProc(EnumWindow);
EnumChildWindows(parent, childProc, GCHandle.ToIntPtr(listHandle));
}
finally
{
if (listHandle.IsAllocated)
listHandle.Free();
}
return result;
}
Mez sorun değil mi'
[DllImport("user32.dll", SetLastError = true)] static extern IntPtr FindWindow(string lpClassName, string lpWindowName); IntPtr hWnd = (IntPtr)FindWindow(windowName, null);
Bunun üzerine tüm childwindows almak için bu kolu kullanabilirsiniz Çocuk pencereleri alıyorum, bunu kolayca yapabilirim, yapamadığım şey, mainWindow ve childs'ın yanı sıra diğer pencerelere de ulaşabilmektir ... – user361526
Bu, herhangi bir pencere için, ayrıca kendi uygulamasına ait olmayan pencereler için de çalışır. Sorunuzu yanlış anlamış olursam özür dilerim. – Mez
'EnumWindowProc' nereden geliyor? –
- 1. Yürütülmekte olan uygulamanın PID'sini alın
- 2. Pencere yüksekliğini alın
- 3. Fare altında pencere değerlerini alın
- 4. Bir uygulamanın tüm görünümlerini-her anı alın?
- 5. Angular2 pencere genişliğini alın. Yeniden boyutlandır
- 6. Bir uygulamanın ilk pencere boyutu OS X'te mi ayarlanıyor?
- 7. Uygulamanın
- 8. Bir uygulamanın penceresini bulup etkinleştirin
- 9. Uygulamanın AndroidManifest.xml
- 10. Bölümümün 4 köşesinin jQuery ile yeniden boyutlandırılabilen tutamaçlarını nasıl yapabilirim?
- 11. Yürütülmekte olan geçerli yöntemin ismini alın
- 12. Son pencere kapatıldıktan/sonlandırıldıktan sonra bir pygtk uygulaması nasıl kapatılır
- 13. Flask'in Uygulamanın fabrika modeli
- 14. Uygulamanın veri klasörü Mac
- 15. DTCoreText Hata Uygulamanın ardından
- 16. Uygulamanın güncelleştirme özelliği
- 17. heapsort - uygulamanın karmaşıklığı
- 18. Bu uygulamanın iOS8
- 19. Tüm uygulamanın çağrı grafiği
- 20. Uygulamanın yapılması ve çıkılması
- 21. Uygulamanın uygulama sunucusu
- 22. Pencere Kimliği'ni kullanarak bir pencere etkinleştirin
- 23. NSWindow - kenarlıksız, şeffaf pencere - Pencere burada yüksekliğini
- 24. WPF sayfası nasıl kapatılır pencere gibi pencere
- 25. Başka bir pencere açmadan veya
- 26. QWidget'i geçerli uygulamanın üzerine ayarlayın, ancak başka bir uygulamada değil
- 27. NSWindow'u kCGWindowNumber'den alın
- 28. krom pencere
- 29. açılır pencere
- 30. derhal pencere
Kontrol dışarı bu çalışma çözüm: http://stackoverflow.com/a/28055461/1274092 –