Python betiğimde Windows'ta şu anda etkin olan Google Chrome sekmesinin URL'si nasıl alabilir? Bu, kullanıcıyı kesintiye uğratmadan yapılmalıdır, bu yüzden kopyalamak/yapıştırmak için tuş vuruşlarını göndermek bir seçenek değildir.Windows'ta etkin Google Chrome sekmesinin URL'sini nasıl alabilirim?
cevap
İlk önce, pywin32 karşıdan yüklememiz ve yüklemeniz gerekir. Betiğinizde bu modülleri içe aktarın:
import win32gui
import win32con
Google Chrome şu anda etkin pencere ise, ilk tarafından pencere tanıtıcısı olsun:
hwnd = win32gui.GetForegroundWindow()
(Aksi takdirde, win32gui.FindWindow
kullanarak Google Chrome'un pencere tanıtıcısı bulmak. Windows Detective, windows için sınıf isimlerini bulurken kullanışlıdır.)
URL'yi almanın tek yolu, metni "omnibox" (address bar) içinde almaktır. Bu genellikle sekmenin URL'sidir, ancak kullanıcının şu anda yazdığı kısmi bir URL veya arama dizesi de olabilir.
Ayrıca, çok amaçlı adres çubuğundaki URL, kullanıcı açıkça yazdıkça (ve henüz girmediği sürece) "http: //" öneki içermez, ancak aslında "https: //" ifadesini içerir. veya bu protokoller kullanılıyorsa "ftp: //". Google Chrome ekibi pencere sınıflarını yeniden adlandırmak karar verirse elbette sonu
omniboxHwnd = win32gui.FindWindowEx(hwnd, 0, 'Chrome_OmniboxView', None)
Bu irade:
Demek ki şimdiki Krom pencere içinde çok amaçlı adres çubuğu alt pencere bulabilirsiniz.
Ve daha sonra çok amaçlı adres çubuğunun "pencere metni" ni alıyoruz, bu da benim için win32gui.GetWindowText
ile çalışmıyor gibi görünüyor. İyi bir şey nasıl çalışır alternatif var:
def getWindowText(hwnd):
buf_size = 1 + win32gui.SendMessage(hwnd, win32con.WM_GETTEXTLENGTH, 0, 0)
buf = win32gui.PyMakeBuffer(buf_size)
win32gui.SendMessage(hwnd, win32con.WM_GETTEXT, buf_size, buf)
return str(buf)
Bu küçük işlev penceresine WM_GETTEXT mesajı gönderir ve pencere metni döndürür (bu durumda, çok amaçlı adres çubuğundaki metin).
İşte siz gidin!
Chrome'un iç yapısı tamamen değiştiğinden ve artık win32gui kullanarak Chrome penceresinin öğelerine gerçekten erişemediğinizden, Christian'ın yanıtı benim için çalışmadı.
ı bulmayı başardılar tek yol kullanımı için bazı örneklerle this python wrapper
çalıştırın bu vardır UI Otomasyon API aracılığıyla ve sen adresi kapmak isteyen Chrome penceresinin geçmek:
from time import sleep
import uiautomation as automation
if __name__ == '__main__':
sleep(3)
control = automation.GetFocusedControl()
controlList = []
while control:
controlList.insert(0, control)
control = control.GetParentControl()
if len(controlList) == 1:
control = controlList[0]
else:
control = controlList[1]
address_control = automation.FindControl(control, lambda c, d: isinstance(c, automation.EditControl) and "Address and search bar" in c.Name)
print address_control.CurrentValue()
- 1. jquery sekmesinin etkin sekmesinde ('click') tetikleme
- 2. Tarayıcı sekmesinin etkin olup olmadığını belirleme - IE mi?
- 3. Google Chrome - tüm regedit politika bayraklarını nereden alabilirim?
- 4. Vardiya + sekmesinin odaklanmasını nasıl önleyebilirim?
- 5. Google Guice etkin mi?
- 6. Google Chrome uzantımı nasıl satabilirim?
- 7. Google Chrome uzantısında senkronize çağrı
- 8. Google Chrome Sandbox'ın Kullanımı
- 9. Google chrome html5 desteği
- 10. Google Chrome font optimizasyonu
- 11. Google Chrome Önbellek
- 12. Google Chrome yerleştirilebilir mi?
- 13. İçindekiler sekmesinin rengi nasıl sekmeyle değiştirilir?
- 14. Android'de google chrome animasyonu etkisi
- 15. Google Chrome çalışma alanı nasıl düzgün kurulur?
- 16. nasıl Google Chrome tarayıcısında tirelemeyi kullanabilir?
- 17. Google Chrome uzantısını Firefox'a nasıl yükleyebilirim?
- 18. Firefox veya google Chrome Eklentisi nasıl oluşturulur?
- 19. Yinelenen Google Chrome bildirimleri nasıl gösterilmiyor?
- 20. Google Chrome, URL tamamlamalarını nasıl önerir?
- 21. Google Fit API’dan yalnızca aktif kalorileri nasıl alabilirim?
- 22. Google Chrome: Arama API'sı mı?
- 23. Plone 3 paylaşım sekmesinin özelleştirilmesi
- 24. Android'de google kullanıcı adını nasıl alabilirim?
- 25. Google Chrome, WYSIWYG Javascript'ten çıkarıyor
- 26. .net için Google Chrome kontrolü
- 27. google chrome konsolu, resim yazdır
- 28. Google Chrome Uzantıları ve NPAPI
- 29. Google Chrome PDF Görüntüleyici API'sı?
- 30. Google Chrome Javascript Bağlantı Hatası
"Windows dedektif" için çok teşekkürler! – akaRem
Böyle "zor" bir şey temizler misiniz: Bazı "kötü adam uygulaması" (python script, WindowDetective, ..) "kurban-app" (Chrome) 'dan herhangi bir veri (hwnd, class, text, smth. Else) okumayı denediğinde (Chrome , IE, "SomeParanoidApp") "kurban" ın ih ın tarandığını hissedip görmediğini/görebileceğini/kontrol edebileceğini mümkün mü? – akaRem
Bu yalnızca Windows platformunda uygulanabilir mi yoksa bu kütüphane platformlarda çalışır mı? Hayır ise, Mac OS için eşdeğer bir kütüphane var. –