Saya butuh bantuan dan/atau saran.

Saya membuka file dari kode dalam program windows terkait default atau dengan program windows yang dipilih menggunakan ShellExecute atau CreateProcess. Saya kemudian menunggu prosesnya selesai. Tapi ini tidak benar-benar bekerja untuk saya karena:

Katakanlah program terkait default untuk file teks (*.txt) adalah Notepad ++ (NPP). Agar proses selesai, PLTN tidak boleh terbuka untuk memulai dan harus ditutup untuk menyelesaikan proses.

Tetapi jika NPP sudah terbuka, file akan dibuka di NPP yang sudah dibuka. Tetapi saya tidak serta merta ingin menutup NPP untuk menyelesaikan proses, saya hanya ingin menutup file teks yang dibuka dan perlu mendeteksi bahwa file tersebut telah ditutup dan bukan NPP.

Jadi saya menyadari bahwa menunggu proses selesai tidak akan berhasil. Saya sudah mencoba beberapa hal seperti mencoba mendeteksi jika file dibuka dalam proses lain tetapi tidak berhasil.

Jadi pertanyaan saya adalah, apa metode terbaik untuk mendeteksi ketika file terbuka atau sedang digunakan dan sebaliknya?

0
bluscape 21 September 2019, 11:19

1 menjawab

Jawaban Terbaik

Sepertinya Anda ingin tahu kapan pegangan file "ditutup", belum tentu ketika program yang mengoperasikan file itu telah keluar.

Pertanyaan Anda terkait erat dengan pertanyaan ini. Anda dapat merujuknya untuk melakukan polling secara berkala pada pegangan proses untuk melihat file apa yang terbuka. Akan ada masalah waktu - mungkin diperlukan beberapa detik untuk proses membuka file di tempat pertama.

Ada juga alat seperti Handle.exe yang mungkin berguna.

Namun - tidak satu pun dari solusi ini yang sempurna. Beberapa aplikasi, termasuk Notepad.exe, cukup membuka file, membaca isinya, dan segera menutup pegangannya. Ketika pengguna mengklik "simpan", file dibuka kembali untuk ditulis, konten disimpan kembali ke disk, kemudian pegangan file ditutup kembali.

Pendekatan yang lebih sederhana adalah dengan melakukan polling secara berkala terhadap stempel waktu yang diubah terakhir pada file melalui GetFileTime. Ketika berubah, Anda bisa menganggap file telah "Disimpan". Atau terapkan teknik ini dengan beberapa kombinasi di atas dan/atau menunggu aplikasi yang diluncurkan untuk keluar.

2
selbie 21 September 2019, 10:11