Google Chrome: Bug อยู่ด้านบนเสมอ


15

ขออภัยชื่อคลุมเครือ แต่อันนี้ยากที่จะอธิบายดังนั้นโปรดอดทนกับฉัน

ฉันใช้ Windows Vista ในที่ทำงานเพื่อการพัฒนาเว็บและบางครั้งเมื่อฉันคลิกหรือ Alt-Tab ไปที่หน้าต่างพื้นหลังหน้าต่างจะได้รับโฟกัส แต่จะไม่ถูกนำไปไว้ด้านหน้า

เพื่อที่จะนำหน้าต่างไปไว้ข้างหน้าฉันต้องคลิกที่ขอบแอพพลิเคชั่น (เมื่อเคอร์เซอร์ปรับขนาดปรากฏขึ้น) จากนั้นหน้าต่างจะข้ามไปที่ด้านหน้า

ฉันมีปัญหานี้มาประมาณหนึ่งปีแล้วและมันเกิดขึ้นอย่างน้อยวันละสิบครั้ง แต่มันไม่ได้ทำแบบนี้ตลอดเวลา - ดูเหมือนจะเป็นการสุ่ม

ฉันหวังว่าฉันได้อธิบายปัญหานี้อย่างสมบูรณ์ (และคุณเข้าใจแล้ว) และจะขอบคุณคำตอบหรือข้อคิดเห็นที่สร้างสรรค์เพื่อแก้ไขปัญหานี้

ตัวอย่าง: หากฉัน Alt-Tab จาก Google Chrome ไปยัง Notepad และปัญหานี้เกิดขึ้นแบบสุ่ม Google Chrome จะยังคงอยู่หน้า Notepad แต่ฉันจะสามารถพิมพ์ข้อความลงใน Notepad ในขณะที่หน้าต่างด้านหลัง Google Chrome การคลิกที่พื้นที่เนื้อหาของ Notepad จะไม่นำมาไว้ข้างหน้า แต่การคลิกที่ขอบของหน้าต่างจะ

ตัวอย่างวิดีโอ

http://vimeo.com/19388998

ในวิดีโอนี้ฉันคลิกจาก Google Chome ถึง UltraEdit และ chrome อยู่ในแบบอักษร แต่อย่างที่คุณเห็นฉันยังคงสามารถพิมพ์ใน UltraEdit ได้

ฉันเริ่มเชื่อว่านี่อาจเป็นข้อผิดพลาดใน Google Chrome ดังนั้นฉันจะดูต่อไปว่าแอปพลิเคชันอื่น ๆ


คุณสามารถตั้งค่าคอมพิวเตอร์ของคุณให้ความละเอียดต่ำ (HD 720p หรือน้อยกว่า) และอัปโหลดวิดีโอที่แสดงให้เห็นว่าปัญหาที่เกิดขึ้นโดยใช้จิง นอกจากนี้ลองปิดการใช้งานที่เริ่มต้นโดยอัตโนมัติด้วยAutorunsและShellExViewเพื่อดูว่ามีโปรแกรมหรือสำรวจไม่ได้ใช้งานส่วนขยายที่เป็นสาเหตุของพฤติกรรมนี้ระวังสิ่งที่คุณปิดการใช้งาน แต่ ...
Tamara Wijsman

มันเกิดขึ้นเมื่อคุณมีแอปพลิเคชั่นบางตัวที่เปิดอยู่ด้านหน้าแล้วลองแท็บ alt จากนั้น? อาจเป็นกรณีที่หน้าต่างนั้นถูกตั้งค่าให้อยู่ด้านบนเสมอ ฉันมีปัญหานี้มาระยะหนึ่งเมื่อหน้าต่าง mIRC ของฉันถูกตั้งให้อยู่ด้านบนเสมอ
Windos

ฉันพบปัญหานี้ด้วย (ใช้ Windows 7) แม้ว่าฉันจะไม่ทราบลักษณะของปัญหาอย่างแน่นอน แต่ฉันคิดว่ามันเกิดขึ้นเมื่อฉันเปิดเว็บเบราว์เซอร์และมีเนื้อหาแฟลชในเว็บไซต์ที่ฉันเปิด ต้องบอกว่าแม้ว่าฉันดูเหมือนจะไม่สามารถทำซ้ำได้
happy_soil

ตอนนี้ฉันคิดว่ามันฉันได้บางโปรแกรมทำงานในพื้นหลังที่ตั้งเป็น "Always on Top" ดังนั้นฉันคิดว่าอาจรบกวนการโฟกัสของหน้าต่าง
happy_soil

@happy_soil: คุณอาจตอบคำถามนี้ได้ หน้าต่าง "Always on Top" ที่ทำงานอยู่เป็นคำอธิบายที่ดีสำหรับพฤติกรรมนี้
harrymc

คำตอบ:


6

ในกรณีของ Chrome นี่เป็นปัญหาที่ทราบกันดี: หน้าต่าง Chrome มีพฤติกรรมอยู่ด้านบนเสมอ

การแก้ไขอย่างรวดเร็วสำหรับปัญหานี้คือการเลือกหน้าต่าง Chrome และกด F11 สองครั้ง


ขอบคุณสำหรับลิงค์ข้อผิดพลาดนี้ แต่มันไม่ใช่ปัญหาที่ฉันมี ปัญหาของฉันเกี่ยวข้องกับหน้าต่างแอปพลิเคชันไม่ใช่ในแถบงาน ฉันไม่สามารถยืนยันได้ในขั้นตอนนี้ถ้า Chrome เป็นสาเหตุของปัญหานี้หรือไม่
GateKiller

ฉันขอโทษถ้าความคิดเห็นก่อนหน้านี้ฟังดูหยาบ มันไม่ใช่ความตั้งใจของฉัน ฉันขอขอบคุณที่คุณป้อน :)
GateKiller

เห็นได้ชัดว่าข้อบกพร่องนี้มีผลต่อทั้งแท็บ alt และแถบงาน รายงานบั๊กเริ่มต้นสำหรับแถบงาน แต่ความคิดเห็นที่ 41 ยังระบุถึงผลกระทบที่มีต่อแท็บ alt (และความคิดเห็นของคุณไม่ได้เสียงหยาบคาย at all.)
harrymc

หลังจากอ่านและทดสอบเพิ่มเติมฉันยอมรับว่า Google Chrome สำหรับ Windows เป็นปัญหาอย่างแท้จริง ฉันได้เพิ่มวิธีแก้ไขปัญหาให้กับคำตอบของคุณในขณะที่เรารอให้ Google แก้ไขปัญหา
GateKiller

1
ฉันใช้ Windows 10 ปัญหานี้ยังคงมีอยู่และ F11 สองครั้งไม่ทำงานเช่นกัน
Rosdi

4

มันดูเหมือนอะไร?

มีพฤติกรรมเดียวเท่านั้นที่ใกล้กับปัญหานั้นและนั่นจะเป็นพฤติกรรมที่อยู่ด้านบนเสมอ
โค้ดบางส่วนอาจมาจากตัวโปรแกรมเองอาจเปลี่ยนคุณสมบัติของหน้าต่างของคุณ ...

หน้าต่างถูกตั้งให้เป็น "Always On Top" อย่างไร

วิธีสร้างแบบฟอร์มที่มักจะอยู่ด้านบนแสดงให้เราเห็นว่า SetWindowPosถูกเรียกด้วยพารามิเตอร์ที่สองที่ตั้งค่าเป็น HWND_TOPMOSTสิ่งนี้จะวางฟอร์มนั้นไว้ด้านบนทันทีและคงไว้เช่นนั้น

หลังจาก Google อย่างรวดเร็วผลลัพธ์นี้แสดงให้เห็นว่าUser32.dllเป็นเจ้าของฟังก์ชั่นนี้

ใครคือผู้กำหนดหน้าต่างของฉัน "Always On Top"

ตอนนี้เรามีความรู้ในสิ่งที่เรียกว่าฟังก์ชั่นเราจะต้องการที่จะรู้ว่าเมื่อเรียกว่าฟังก์ชั่น สิ่งนี้จะทำให้เราต้องติดตามและวิเคราะห์สแต็คในขณะที่Windows Performance Toolkitสามารถทำสิ่งนี้ได้เรามีความสุขมากที่ Rohitab Batra ได้เขียนApi Monitor ที่ยอดเยี่ยม

ขออภัยการทำการบ้านเป็นเรื่องยาก:

  • ดาวน์โหลดAPI Monitorและติดตั้ง
  • เปิดการตรวจสอบ API ในฐานะผู้ดูแลระบบถ้าคุณมี 64 บิตคุณต้องทำสองครั้ง
  • ตรวจสอบให้แน่ใจว่าไม่มีการทำเครื่องหมายใด ๆ ในตัวกรองการจับภาพ APIที่ด้านซ้าย
  • ในสถานที่เดียวกันเปลี่ยนทุกโมดูลที่ด้านบนของที่โต้ตอบกับUser32.dll
  • ไปที่

    Windows Application UI Development > Windows and Messages > Windows
    

    แล้ว

    User32.dll > SetWindowPos
    

ตอนนี้คุณจะต้องขอกระบวนการบางอย่าง คำเตือน:เรียงลำดับตาม PID และอย่าเชื่อมต่อwinlogon.exeหรืออะไรก็ตามที่มี PID ต่ำกว่านั้นหากคุณทำเช่นนั้นคุณจะวางสายหรือหยุดระบบของคุณ คุณอาจพบกับพฤติกรรมนี้กับกระบวนการอื่นเช่นกัน แต่มันก็เหมือนกับการลองผิดลองถูกเพื่อดูว่าคนไหนที่คุณสามารถขอได้ ดังนั้น:

  • เรียงตาม PID winlogon.exeและทุกอย่างเบ็ดที่ใหม่กว่า
  • หากทุกอย่างเป็นไปด้วยดีคุณสามารถดูเธรดในไดอะล็อกHooked Process
  • ค้นหาการเรียก API ที่มีลักษณะดังนี้:

    SetWindowPos (0x000000000002043c, HWND_BOTTOM | 0x00000000fffffffe , 0, 0, 0, 0, 0,
    SWP_NOACTIVATE | SWP_NOSIZE)

การเรียกใช้SetWindowPosด้วยHWND_BOTTOM | 0x00000000fffffffe ( -2 + 1 = -1 = HWND_TOPMOST ) คือสิ่งที่เราเป็นหลังจากนั้นและกระบวนการที่เรียกสายนี้เป็นสิ่งที่คุณควรตำหนิสำหรับปัญหาของคุณ

ฉันยอมแพ้ ... ฉันจะแก้ไขปัญหา "อยู่ด้านบน" ได้อย่างไร?

ไฟรบด้วยไฟที่เรากำลังจะตั้งหน้าต่างทั้งหมดเพื่อHWND_NOTOPMOST

ใช่การเขียนโปรแกรม! แต่สิ่งนี้สามารถทำได้อย่างง่ายดายผ่านสคริปต์เช่นกัน ...

ดังนั้นการบ้านที่ง่ายมาก:

  • ดาวน์โหลดAutoIt v3

  • สร้างไฟล์ByeByeTopMost.au3ที่มี:

    While 1
        $var = WinList()
    
        For $i = 1 to $var[0][0]
            WinSetOnTop($var[$i][1], "", 0)
        Next
    
        Sleep(5000)
    WEnd
    
  • วางไว้ในโฟลเดอร์เริ่มต้นของคุณและเรียกใช้หรือรีบูต

หรือถ้าคุณไม่ชอบทำการบ้านเลยให้ดาวน์โหลดไฟล์ zip ที่ฉันทำไว้

มีความสุข... :-)

PS:คุณไม่สามารถใช้คุณสมบัติ "Always On Top" ในกรณีสุดท้ายนี้ แก้ไขปัญหาหรือหลีกเลี่ยง ... ;-)


ฉันชอบคำตอบนี้
สุดยอด

SetWindowPos ไม่เริ่มทำงานเมื่อมีปัญหาเกิดขึ้น ... ฉันพบว่ามันน่ารังเกียจอย่างมากที่คุณเปลี่ยนชื่อคำถามอย่างสมบูรณ์แล้วเขียนคำตอบให้
GateKiller

1
@GateKiller: เป็นที่น่ารังเกียจอย่างไร ช่วยให้คุณได้รับคำตอบที่ดีขึ้น นอกจากนี้ยังเป็นคำอธิบายที่เหมาะสมมากขึ้นของปัญหาของคุณ (ขณะที่ "หน้าต่างในหน้า" เป็นที่รู้จักกันทั่วไปว่าเป็น "เสมอ-on-top") และตอนนี้คุณมีการเปลี่ยนแปลงชื่อของคุณกับ Google Chrome หลังจากได้รับการตอบ อย่างไรก็ตามคุณมีอิสระในการย้อนกลับและฉันดีใจที่คุณได้แก้ไขปัญหาของคุณแล้ว SetWindowPos จะเริ่มก่อนที่ปัญหาจะเกิดขึ้นหรือขั้นตอนอื่นที่คล้ายกันซึ่งมีผลเหมือนกันอาจเรียกได้ว่า ... :-)
Tamara Wijsman

4

เพื่อปิดการใช้งานนี้คุณต้องกดปุ่ม

ALT + Space + C

alt+ space+c

หลังจากกดปุ่มเหล่านี้เบราว์เซอร์ Google chrome จะปิดโดยอัตโนมัติ จากนั้นเริ่มเบราว์เซอร์ Google chrome อีกครั้ง

ปัญหาจะได้รับการแก้ไขตลอดไป :)


ALT + Space + C ปิดเบราว์เซอร์ของฉันและแก้ไขปัญหา ฉันต้องกลับมาที่นี่เพื่อโหวตคำตอบของคุณ
Oscar Fraxedas

1
นี่เป็นสิ่งเดียวที่แก้ไขปัญหาของฉัน
ddonche

1

รับปัญหานี้ด้วยและหาวิธีหลีกเลี่ยง ผมได้ติดตั้ง"อยู่ด้านบนเสมอ" ซอฟแวร์

และฉันจะใช้มันใน Chrome สำหรับ Windows alwaysontopซึ่งการเปลี่ยนสถานะของสถานที่ให้บริการ


0

การแก้ไขอย่างรวดเร็วอย่างหนึ่งคือการคลิกที่ปุ่ม 'แสดงเดสก์ท็อป' สองครั้งทางด้านขวาของแถบงานบน windows 7/8 / 8.1


1
คำตอบของคุณจะให้ข้อมูลที่เป็นประโยชน์น้อยมาก คุณสามารถขยายออกไปอีกสักหน่อยได้ไหม?
bwDraco

0

ฉันมีปัญหาเดียวกันนี้และจัดการเพื่อแก้ไขโดยไปที่ "สลับผู้ใช้" ในเมนูเริ่มและหลังจากเข้าสู่ระบบในหน้าต่างที่เคารพแถบเครื่องมืออีกครั้ง ดูเหมือนว่ามันจะส่งผลกระทบต่อทุกหน้าต่างและในขณะที่โครเมียมอาจเป็นสาเหตุ แต่ก็ดูเหมือนจะส่งผลกระทบต่อระบบ Windows อย่างกว้างขวาง ทำให้โพสต์นี้หลังจากใช้งานครั้งแรกกับปัญหาหลังจากเป็นผู้ใช้ Chrome เป็นเวลา 5 ปีทั้งใน Windows XP และ 7


0

ฉันมีปัญหาเดียวกันและการแตะสองครั้งที่ F11 ไม่ได้แก้ไขอะไรเลย แต่ฉันเห็นเพราะฉันเปิดหน้าต่าง Google Chrome สองบานนั่นมีเพียงหน้าต่างเดียวเท่านั้นที่อยู่ด้านบนสุดของหน้าต่างอื่น ๆ ที่ฉันมี (Steam, Notepad เป็นต้น) ฉันใช้แท็บด้านบนเสมอและสร้างหน้าต่างใหม่ด้วยแท็บอื่นจากแท็บหน้าต่างด้านบนไปยังแท็บใหม่ ตอนนี้ทุกหน้าต่างจะปรากฏที่ด้านบนเมื่อฉันเลือกมันเหมือนปกติ

หวังว่านี่จะช่วยได้ :)


โดยการใช้ไซต์ของเรา หมายความว่าคุณได้อ่านและทำความเข้าใจนโยบายคุกกี้และนโยบายความเป็นส่วนตัวของเราแล้ว
Licensed under cc by-sa 3.0 with attribution required.