การสื่อสารระหว่างกระบวนการ

ฉันต้องการทราบว่าเป็นไปได้หรือไม่ที่แอปพลิเคชันของฉันที่เขียนด้วย java สามารถตรวจสอบเหตุการณ์ (เช่น การคลิกเมนูไฟล์ หรือเมนูแก้ไข) ในแอปพลิเคชันบุคคลที่สามอื่นๆ เช่น ในตัวแก้ไข แอปพลิเคชัน office ฯลฯ...

แอปพลิเคชันของฉันควรทำงานในพื้นหลัง และควรจะสามารถบันทึกและแก้ไขเหตุการณ์ของแอปพลิเคชันที่มุ่งเน้นในปัจจุบัน ซึ่งอาจไม่จำเป็นต้องเป็นแอปพลิเคชัน Java

ตัวอย่างเช่น: หากผู้ใช้คลิกไฟล์ --> บันทึกเป็นตัวเลือกใน microsoft word แอปพลิเคชันของฉันควรจะสามารถรับทั้งสองเหตุการณ์นี้และยังสามารถทำให้เหตุการณ์เหล่านี้เป็นอัตโนมัติได้ทุกเมื่อที่จำเป็น

กรุณาช่วย

ขอบคุณล่วงหน้า


person PVB    schedule 15.07.2011    source แหล่งที่มา


คำตอบ (1)


ฉันไม่เคยทำสิ่งนี้ใน Java แต่เนื่องจากคุณกำลังจัดการกับ Win32 อย่างน้อยฉันก็แนะนำส่วนดั้งเดิมได้ สิ่งที่คุณกำลังมองหาคือการเชื่อมต่อกับกระบวนการอื่น ๆ ในระบบของคุณ เพื่อสิ่งนั้น คุณจะต้องเขียน DLL ดั้งเดิม เป็นเทคนิคทั่วไป และคุณจะพบข้อมูลมากมายเกี่ยวกับเรื่องนี้ได้อย่างง่ายดาย จุดเริ่มต้นที่ดีคือ การใช้ Hooks จาก MSDN

เมื่อคุณฉีด DLL เข้าไปในกระบวนการอื่นๆ ทั้งหมดในระบบ คุณจะต้องหาวิธีระบุกระบวนการที่คุณสนใจจริงๆ คุณจะทำเช่นนั้นได้อย่างไรนั้นขึ้นอยู่กับสิ่งที่คุณพยายามจะทำจริงๆ เพื่อให้เข้าใจได้ดีขึ้นว่าข้อความใดถูกส่งไปในการดำเนินการต่างๆ คุณสามารถใช้ Spy++ ที่มาพร้อมกับ VS

สุดท้ายนี้ คุณต้องตั้งค่าการสื่อสารระหว่าง DLL ดั้งเดิมกับโปรแกรม Java ของคุณ นี่คือส่วนที่ฉันไม่คุ้นเคย: คุณจะต้องใช้ JNI. โชคดีที่ JNI เป็นหัวข้อที่ครอบคลุม และคุณสามารถค้นหาคำแนะนำมากมายได้ในไซต์นี้

person eran    schedule 15.07.2011