2012-03-05 13 views
5

Kullandığım:Windows 7'de Başlat düğmesine nasıl giderim?

Hwnd hStart = ::FindWindow ("Shell_TrayWnd",NULL); // get HWND of taskbar first 
hStart = ::FindWindowEx (hStart, NULL,"BUTTON", NULL); // get HWND of start button 

düğmenin kolu başlatmak alır. Windows XP, üzerinde düzgün çalışıyor ancak Windows 7, ::FindWindowEx (hStart, NULL,"BUTTON", NULL) her zaman 0 değerini döndürür ve GetLastError() da 0 değerini döndürür.

Neden?

+2

içindir, ama yanlış olabilir. Şimdi Spy ++ ile kontrol edebilirsiniz, ancak Başlat düğmesi gibi temel kullanıcı arayüzü öğeleriyle uğraşmamanızı şiddetle tavsiye ediyorum. Neyi başarmaya çalışıyorsun? –

+5

Bir tane bile olsa bir Başlat düğmesi tutamağı ile ne yaparsınız? – Gabe

+0

Gabe, sadece HOOK hakkında çalışıyorum. :) – Fish

cevap

7

Windows 7'de, sınıf adı "Button" olan başlatma düğmesi, masaüstü penceresinin alt öğesidir. Kodunuz, başlangıç ​​düğmesinin "Shell_TrayWnd" adlı pencerenin alt öğesi olduğunu varsaymaktadır; bu, gerçekten de görev çubuğunun ve başlat menüsünün XP'de uygulandığı şekilde görünmektedir.

Windows 7 için böyle bir şey kullanmak istiyorum:

hStart = ::FindWindowEx(GetDesktopWindow(), NULL, "Button", NULL); 

rağmen bunun doğru düğmeyi olsun emin olmak için ismiyle açıkça daha iyi arama olacağını düşünüyorum.

hStart = ::FindWindowEx(GetDesktopWindow(), NULL, "Button", "Start"); 

Ben Vista onun görev çubuğunu nasıl uyguladığını emin değilim ve başlangıç ​​menüsü, ancak öğrenmek için Spy ++ kullanabilirsiniz.

Tüm bunları söyledikten sonra, bu tür uygulamalara özgü ayrıntılarda gezinmeden hedeflerinizi gerçekleştirmenin bir yolunu bulmanız daha iyi olur.

+10

Ve Windows 8'de her şeyin tamamen farklı olacağını unutmayın. –

+5

@Mark Evet, şimdi evi temizlemek için mükemmel bir zaman olurdu ve bu hackerları terk et –

+0

Teşekkürler! Ben hWnd = :: FindWindow ("Düğme", "Başlat") denedim;, Windows 7'de çalışıyor, XP'de sadece NULL döndürür. Ben başlangıç ​​düğmesi görev çubuğunun bir çocuk penceresi olduğunu tahmin ediyorum XP, Windows 7'de ise bağımsız bir penceredir. :) – Fish

-2

:: FindWindow (L "Shell_TrayWnd", NULL);

bu kod tam görev çubuğunda

Windows 7 başlat düğmesi artık sınıf `BUTTON` sahip olduğunu varsayalım
İlgili konular