Nasıl görünüyor?
Bu soruna yakın tek bir davranış vardır ve bu da Her Zaman Üstte Olma davranışıdır.
Bazı kodlar, belki de programın kendisinden pencerenizin özelliğini değiştiriyor olabilir ...
Bir pencere "Her Zaman Üstte" olarak nasıl ayarlanır?
Her Zaman Üstte Kalan Form Nasıl Oluşturulur Bizeikinci parametre HWND_TOPMOST olarak ayarlandığında SetWindowPos'un çağrıldığınıgösterir, bu hemen üste yerleştirir ve bu şekilde tutar.
Hızlı bir Google sonra bu sonuç ortaya User32.dll bu fonksiyonun sahibi olmak.
Penceremi "Her Zaman Üstte" kim ayarlar?
Artık fonksiyonun adı verilen bilgiye sahip olduğumuza göre, o fonksiyonun ne zaman çağrıldığını bilmek isteyeceğiz. Bu, yığın izleri yapmamızı ve bunları analiz etmemizi gerektirecek, Windows Performans Araç Seti bunu yapabilirken, Rohitab Batra'nın harika Api Monitörünü yazdığı için çok mutlu olabiliriz .
Üzgünüm, ama bu zor bir ev ödevi:
Şimdi, bazı işlemleri kancalamak isteyeceksiniz. Dikkat kelimesi: PID'ye göre sıralayın ve PID'ye winlogon.exesahip olandan veya bundan daha düşük bir PID'ye sahip olan herhangi bir şey takmayın, bunu yaparsanız sisteminizi asabilirsiniz veya kilitleyebilirsiniz. Bu davranışı diğer işlemlerle de yaşayabilirsiniz, ancak hangilerini bağlayabileceğinizi görmek bir deneme yanılma gibi. Yani:
- PID'ye göre sıralayın ve daha yeni olan her şeyi bağlayın
winlogon.exe.
- Her şey yolunda giderse, Kancalı İşlem iletişim kutusundaki iş parçacıklarına bakabilirsiniz .
Şuna benzeyen bir API çağrısı arayın:
SetWindowPos (0x000000000002043c, HWND_BOTTOM | 0x00000000fffffffe , 0, 0, 0, 0,
SWP_NOACTIVATE | SWP_NOMOVE | SWP_NOSIZE)
Bir çağrı SetWindowPos ile HWND_BOTTOM | 0x00000000fffffffe ( -2 + 1 = -1 = HWND_TOPMOST ) peşinde olduğumuz şeydir ve bu çağrıyı yapan işlem, sorununuz için suçlamanız gereken süreçtir.
Pes ediyorum ... "Her Zaman Üstte" sorunumu nasıl çözebilirim?
Ateşle ateşle savaşın, tüm pencereleri HWND_NOTOPMOST olarak ayarlayacağız .
Yikes, programlama! Ancak, bu komut dosyası ile de kolayca yapılabilir ...
Yani çok basit bir ev ödevi görevi:
AutoIt v3'ü indirin .
Şunları içeren bir ByeByeTopMost.au3 dosyası oluşturun :
While 1
$var = WinList()
For $i = 1 to $var[0][0]
WinSetOnTop($var[$i][1], "", 0)
Next
Sleep(5000)
WEnd
Başlangıç klasörünüze yerleştirin ve çalıştırın veya yeniden başlatın.
Ya da ödevlerden hoşlanmıyorsanız, yaptığım bu zip dosyasını indirin .
İyi eğlenceler... :-)
Not: Bu son durumda "Her Zaman Üstte" özelliğini kullanamazsınız. Sorun giderin veya geçici çözüm bulun; ... ;-)