Bagikan melalui


Antarmuka IFileIsInUse (shobjidl_core.h)

Mengekspos metode yang dapat dipanggil untuk mendapatkan informasi tentang atau menutup file yang digunakan oleh aplikasi lain. Ketika aplikasi mencoba mengakses file dan menemukan file yang sudah digunakan, aplikasi dapat menggunakan metode antarmuka ini untuk mengumpulkan informasi untuk disajikan kepada pengguna dalam kotak dialog.

Warisan

Antarmuka IFileIsInUse mewarisi dari antarmuka IUnknown . IFileIsInUse juga memiliki jenis anggota ini:

Metode

Antarmuka IFileIsInUse memiliki metode ini.

 
IFileIsInUse::CloseFile

Menutup file yang saat ini sedang digunakan.
IFileIsInUse::GetAppName

Mengambil nama aplikasi yang menggunakan file .
IFileIsInUse::GetCapabilities

Menentukan apakah file dapat ditutup dan apakah UI mampu beralih ke jendela aplikasi yang menggunakan file.
IFileIsInUse::GetSwitchToHWND

Mengambil handel jendela tingkat atas aplikasi yang menggunakan file .
IFileIsInUse::GetUsage

Mendapatkan nilai yang menunjukkan bagaimana file yang digunakan sedang digunakan.

Keterangan

Dalam versi Windows sebelum Windows Vista, ketika pengguna mencoba mengakses file yang terbuka di aplikasi lain, pengguna hanya akan menerima kotak dialog dengan pesan yang menyatakan bahwa file sudah terbuka. Pesan menginstruksikan agar pengguna menutup aplikasi lain, tetapi tidak mengidentifikasinya. Selain saran itu, kotak dialog tidak menyediakan tindakan pengguna untuk mengatasi situasi tersebut. Antarmuka ini menyediakan metode yang dapat menyebabkan kotak dialog yang lebih informatif dari mana pengguna dapat mengambil tindakan langsung.

Tabel Objek yang Sedang Berjalan

Saat aplikasi membuka file, aplikasi tersebut mendaftarkan file dengan menyisipkan objek IFileIsInUse yang dibuat ke dalam tabel objek yang sedang berjalan (ROT). ROT adalah tabel pencarian yang dapat diakses secara global yang melacak objek yang sedang berjalan. Objek-objek ini dapat diidentifikasi oleh moniker. Ketika klien mencoba mengikat moniker ke objek, moniker memeriksa ROT untuk menentukan apakah objek sudah berjalan. Ini memungkinkan moniker untuk mengikat ke instans saat ini daripada memuat instans baru.

Lakukan langkah-langkah ini untuk menambahkan file ke ROT:

  1. Panggil fungsi GetRunningObjectTable untuk mengambil instans IRunningObjectTable.
  2. Buat objek IFileIsInUse untuk file yang saat ini sedang digunakan.
  3. Buat objek IMoniker untuk file yang saat ini sedang digunakan.
  4. Masukkan objek IFileIsInUse dan IMoniker ke dalam ROT dengan memanggil IRunningObjectTable::Register.

Dalam panggilan ke Daftar, tentukan bendera ROTFLAGS_ALLOWANYCLIENT . Ini memungkinkan entri ROT berfungsi di seluruh batas keamanan. Penggunaan bendera ini mengharuskan aplikasi panggilan memiliki ID Model Pengguna Aplikasi eksplisit (AppUserModelID) (System.AppUserModel.ID). AppUserModelID eksplisit memungkinkan Model Objek Komponen (COM) untuk memeriksa pengaturan keamanan aplikasi. Upaya untuk memanggil Daftar dengan ROTFLAGS_ALLOWANYCLIENT dan tidak ada AppUserModelID eksplisit yang akan gagal. Anda dapat memanggil Daftar tanpa bendera ROTFLAGS_ALLOWANYCLIENT dan aplikasi akan berfungsi dengan benar, tetapi hanya dalam tingkat keamanannya sendiri.

Nilai yang diambil dalam parameter [out] metode Register digunakan untuk mengidentifikasi entri dalam panggilan selanjutnya untuk mengambil atau menghapusnya dari ROT.

Kapan Harus Menerapkan

Aplikasi yang membuka jenis file yang dapat dibuka oleh aplikasi lain harus menerapkan IFileIsInUse. Implementasi aplikasi antarmuka ini memungkinkan Windows Explorer menemukan sumber kesalahan berbagi, yang memungkinkan pengguna untuk mengatasi dan mencoba kembali operasi yang gagal karena kesalahan tersebut.

Kapan Harus Digunakan

Aplikasi memanggil IFileIsInUse untuk berkomunikasi dengan aplikasi lain untuk mengatasi kesalahan berbagi. Kesalahan ini terjadi sebagai respons terhadap tindakan pengguna dalam sistem file. Misalnya, ketika pengguna mencoba mengganti nama folder saat file di folder tersebut terbuka dalam aplikasi, operasi penggantian nama gagal. Windows Explorer dapat memanggil implementasi IFileIsInUse aplikasi tersebut untuk membantu pengguna mengidentifikasi konflik dan mengatasi masalah ini.

Sampel

Lihat sampel File Sedang Digunakan , yang menunjukkan cara mengimplementasikan IFileIsInUse dan mendaftarkan file dengan ROT. Kemudian menunjukkan cara menyesuaikan dialog File Sedang Digunakan untuk menampilkan informasi dan opsi tambahan untuk file yang saat ini dibuka dalam aplikasi.

Persyaratan

Persyaratan Nilai
Klien minimum yang didukung Windows Vista [hanya aplikasi desktop]
Server minimum yang didukung Windows Server 2008 [hanya aplikasi desktop]
Target Platform Windows
Header shobjidl_core.h (termasuk Shobjidl.h)

Lihat juga

ID Model Pengguna Aplikasi (AppUserModelIDs)