ฉันจะปิด pidgin ผ่านคำสั่งได้อย่างไร


0

แต่ปัญหาก็คือการอธิบายไว้ที่https://developer.pidgin.im/ticket/9698

ใน Linux ผมสามารถขอพิดจะปิดผ่านหรือpkill pidgin kill [pid]โปรแกรมจะดูแลมันและปิดตัวเองลง Windows ไม่ทำงานในลักษณะนี้ WM_CLOSEสัญญาณจะปิดหน้าต่างที่ไม่ได้กระบวนการ (เช่นเดียวกับเมื่อคุณกดxตัวเอง)

ฉันจะปิด pidgin ผ่านคำสั่งได้อย่างไร

แรงจูงใจ : ดูเหมือนว่าเซิร์ฟเวอร์ XMPP จำนวนมากต้องการให้ลูกค้าพูดอย่างแข็งขันว่า "ลาก่อน" เพื่อตระหนักว่าพวกเขาออฟไลน์ กล่าวอีกนัยหนึ่งไม่keep-aliveจำเป็นต้องแพ็คเก็ตหรือไม่มีการหมดเวลา (และหากค่อนข้างล่าช้า) โดยปกตินี่ไม่ใช่ปัญหาใหญ่เพราะเราเริ่มต้นและออกจากลูกค้าของเราตาม (นับการปิดเป็นออก) อย่างไรก็ตามหากมีใครเข้าสู่โหมดsuspend/ hibernateมันก็เหมือนกับว่าการเชื่อมต่อเครือข่ายหายไปทันที - ไม่มีโอกาสที่พิดจิ้นจะพูดว่า "เดี๋ยวก่อนไปที่นั่นกำลังออฟไลน์" ดังนั้นฉันจึงต้องสคริปต์เพื่อพิดปิดเองอัตโนมัติได้อย่างสง่างาม (ที่จะดำเนินการโดยตรงก่อนที่จะระงับ)

คำตอบ:


0

นี่คือสคริปต์ AutoHotkey ซึ่งเลียนแบบขั้นตอนผู้ใช้ต่อไปนี้:

  • เปิดหน้าต่างหลักหากยังไม่ได้เปิด
  • ส่งCtrl- Qเพื่อให้หยุดเพื่อพิด

.

pidginMainWindowTitle := "Buddy List"

process, exist, pidgin.exe
if(ErrorLevel!=0) {
    ; Pidgin process is running -> close it
    if(!winExist(pidginMainWindowTitle)) {
        ; ..but main window is not.
        ; determine full pidgin path
        winGet, pidginPath, ProcessPath, ahk_exe pidgin.exe
        if(pidginPath=="") {
            msgbox, Process path empty?
            exitapp
        }
        ; run pidgin again: will open main window
        run %pidginProcessPath%
        ; wait for the window max. 2 seconds
        winWait, %pidginMainWindowTitle%,, 2
        if(ErrorLevel==1) {
            msgbox, Couldn't start main window
            exitapp
        }
        ; send exit key combo to pidgin main window
        controlSend,, ^q, %pidginMainWindowTitle%
        ; wait for the process to close max. 2 seconds
        process, WaitClose, pidgin.exe, 2
        if(ErrorLevel) {
            msgbox, Couldn't exit pidgin gracefully
            exitapp
        }
    }
}

0

ยูทิลิตี้ที่คุณต้องการคือtaskkill.exeซึ่งเป็นโปรแกรมบรรทัดคำสั่งที่ติดตั้งในระบบปฏิบัติการ Windows (โดยประมาณคล้ายkillกับระบบ Unix) และพบได้ในไดเรกทอรีระบบ (C: \ Windows \ System32 \ taskkill.exe) โดยค่าเริ่มต้นจะขอให้ (แต่ไม่บังคับ) ให้โปรแกรมออกและไม่ใช้ข้อความหน้าต่าง

เรียกใช้taskkill /?จากเชลล์บรรทัดคำสั่ง ( cmdหรือpowershell) สำหรับข้อมูลการใช้งาน แต่คำสั่งพื้นฐานที่คุณต้องการคือtaskkill /im pidgin.exe(โปรดทราบว่าส่วนขยายจำเป็นสำหรับชื่อรูปภาพของโปรแกรมที่จะฆ่า) อย่าไม่ผ่าน/fธงที่นี่เช่นนี้จะบังคับให้ยกเลิกโปรแกรม (คล้ายกับkill -9) โดยไม่ให้มันถึงเวลาที่จะดำเนินการล้างใด ๆ (คิดว่าจะเป็นประโยชน์สำหรับโปรแกรมที่คุณต้องการที่จะฆ่าทันทีหรือที่แขวนและไม่ตอบสนองต่อการปกติ คำขอปิด)

การทำให้สิ่งนี้ทำงานโดยอัตโนมัติเมื่อออกจากระบบอาจเป็นเรื่องยาก พิจารณาใช้ Task Scheduler

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