Görev çubuğu değiştirme, dock benzeri uygulama anahtarlayıcı stili programı uyguluyorum. OpenGL ile bazı benzersiz şeyler yapıyor ve klavye kısayollarıyla, bu şekilde ayarlandığı şekilde, pencere her zaman odaklanmıyor. Bir görev çubuğu veya bir ALT-TAB programı gibi, ön plana rasgele bir pencere getirebileceğim şekilde uygulamak istiyorum. Ancak, kodum sadece uygulama simgesinin görev çubuğunda yanıp sönmesine neden oluyor. Windows API belgeleri, bunun olması beklenen bir şey olduğunu söylüyor, ancak bu konuda çalışmak için bir yol arıyorum.Windows 7: başka bir pencerenin odak noktası ne olursa olsun pencereyi öne nasıl getirebilirsiniz?
Kodumu, aşağıdaki örneklerden uyarladım. Bu, ön plan iş parçacığına bağlanmanın ön plan penceresini ayarlamanıza izin vermesi gerektiğini söylüyor. İşte site var:
http://www.voidnish.com/Articles/ShowArticle.aspx?code=dlgboxtricks
http://invers2008.blogspot.com/2008/10/mfc-how-to-steal-focus-on-2kxp.html
Benim kod şöyle görünür. Benim pencere ön plan penceresi olmadığı sürece ki değil (Ancak
fgwin = win32gui.GetForegroundWindow()
fg = win32process.GetWindowThreadProcessId(fgwin)[0]
current = win32api.GetCurrentThreadId()
if current != fg:
win32process.AttachThreadInput(fg, current, True)
win32gui.SetForegroundWindow(self.hwnd)
win32process.AttachThreadInput(fg, win32api.GetCurrentThreadId(), False)
: o (self.hwnd Cepheye getirmek istiyorum pencerenin kolu olan) piton için Win32 sarmalayıcıları kullanıyor unutmayın genellikle), bu sadece programın simgesinin yanıp sönmesine neden olur.
Yanlışlıkla iş parçacığı yapıyorum? Bu konuda çalışmak için başka bir yolu var mı? Orada olması gerektiğini anladım, çünkü orada bir çok uygulama anahtarlayıcısı var, bu da bunu gayet iyi yapıyor gibi görünüyor.
Bunu python'da yazıyorum, ancak başka bir dilde bir çözüm varsa, paketleyicileri kullanacağım ya da bunu çalıştırmak için gereken her şeyi yapacağım.
Şimdiden teşekkürler!
DÜZENLEME: Sadece belirli bir bilgisayarda çalışmayı, yani, herhangi bir uygulamanın odaklanmasının bir yolu olarak, makinemde etkinleştirmenin bir yolu üzerinde çalışmasını sağlamak için bir yol açabilirim.
SOLVED: Yapmanız gereken, önalan kilidini devre dışı bırakmaktır. bu kadar kolay olduğu ortaya çıktı:
win32gui.SystemParametersInfo(win32con.SPI_SETFOREGROUNDLOCKTIMEOUT, 0, win32con.SPIF_SENDWININICHANGE | win32con.SPIF_UPDATEINIFILE)
Tamam, ancak bunu yapabilecek birçok uygulama var. Açıkça mümkün ve bana nasıl olduğunu öğreten eğiticiler buldum. Sorum şu: ders çalışmamın kodunun çalışmamasına neden olan ne yapıyorum? – jmite
neden bu öğreticilerden birinden kod almıyorsunuz ve bunu –
çalıştırın. Gönderdiğim kod, bir python sarıcısında, öğreticinin neredeyse tam kodudur (gönderdiğim iki bağlantıda kendiniz görün). Kimsenin kodumun neden sayfaların söylediği gibi yapmadığını ya da bunu yapmanın daha iyi bir yolu olup olmadığını söyleyip söyleyemeyeceğini soruyorum. – jmite