Arsip: Wait for file lock released

more 17 years ago
danieljun
Bagaimana caranya mengetahui file yang dipakai oleh proses lain sudah selesai atau belum? (Lock sudah dilepas?)
Lalu bila saya membuat thread yang menunggu proses sampai selesai, bagaimana ya caranya?

more 17 years ago
madi
function IsFileInUse(const fName: TFileName): Boolean;
var
HFileRes: HFILE;
begin
Result := False;
HFileRes := CreateFile(PChar(fName),
GENERIC_READ or GENERIC_WRITE,
0,
nil,
OPEN_EXISTING,
FILE_ATTRIBUTE_NORMAL,
0);
Result := (HFileRes = INVALID_HANDLE_VALUE);
if not Result then
CloseHandle(HFileRes);
end;
procedure TForm1.Button1Click(Sender: TObject);
begin
if OpenDialog1.Execute then
if IsFileInUse(Opendialog1.FileName) then
ShowMessage('File is in use!');
end;
ato bisa gunakan form khusus untuk menunggu sampai file bersangkutan udah tdk dipake lagi...bisa dengan timer...mas
Semoga bisa membantu....:D
more 17 years ago
danieljun
terima kasih madi, cara ini bisa juga dipakai.
Bagaimana kita bisa tahu file sedang dibuka oleh suatu proses, tanpa tahu namanya?
Misalnya Acrobat sedang buka suatu file pdf dan saya ingin tahu dari aplikasi delphi apakah ada file yang sedang dibuka tanpa mengetahui namafilenya?, Lalu proses di delphi dilanjutkan bila semua file pdf yang dibuka itu sudah ditutup?
Terima kasih sebelumnya :D

more 17 years ago
madi
U r welkam :D
itu namanya mengetahui apakah sebuah aplikasi sedang berjalan mas...namanya...:D tull gak? xixixixixixixxixi
klo pengen mengetahui sebuah file sedang dibuka, spt jwban saya pertama, harus spesifik....
procedure cek filenya ganti dengan ini, fungsinya biarin aja....hehehe
procedure TForm1.Button1Click(Sender: TObject);
begin
if IsFileInUse('C:\Program Files\Adobe\Acrobat 7.0\Reader\AcroRd32.exe') then
ShowMessage('Program lagi buka file yg tdk ingin saya ketahui, tunggu ya...xixixxixixixi');
else
ShowMessage('Program lagi nganggur...xixixxixixix');
end;
Semoga spt yg diharapkan.....:D
more 17 years ago
madi
jawaban yg terakhir di rollback aja...
sorry salah tangkap pertanyaan...xixixixixi...

more 17 years ago
madi
mungkin begini mas....hehehehe
private
procedure refresh;
{...}
function EnumWindowsProc(Wnd: HWND; lParam: lParam): BOOL; stdcall;
var
aplikasi : array of Char;
begin
if (IsWindowVisible(Wnd) or IsIconic(wnd)) and
((GetWindowLong(Wnd, GWL_HWNDPARENT) = 0) or
(GetWindowLong(Wnd, GWL_HWNDPARENT) = GetDesktopWindow)) and
(GetWindowLong(Wnd, GWL_EXSTYLE) and WS_EX_TOOLWINDOW = 0) then
begin
GetWindowText(Wnd, aplikasi, 256);
if aplikasi <> 'GDI+ Window' then
Form1.Listbox1.Items.Append(aplikasi);
end;
end;
procedure TForm1.refresh;
begin
Listbox1.Clear;
EnumWindows(@EnumWindowsProc, 1);
end;
procedure TForm1.Button1Click(Sender: TObject);
var
i,j : integer;
begin
refresh;
for i := 0 to listbox1.Items.Count -1 do
begin
j := Length(listbox1.Items.Strings[i]);
if (copy(listbox1.Items.Strings[i],1,12) = 'Adobe Reader')
and (listbox1.Items.Strings[i] <> 'Adobe Reader') then
ShowMessage('Adobe Reader sedang membuka file : ' + copy(listbox1.Items.Strings[i],16,j))
else
if copy(listbox1.Items.Strings[i],1,12) = 'Adobe Reader' then
ShowMessage('Adobe Reader sedang Nganggurr....xixixxixixi')
end;
end;
maaf klo terlalu bertele-tele maklum aja, namanya juga New Baby...xixixixxixii...
Klo tipe file yg Anda ingin ketahui banyak mungkin bisa gunakan case of mas...ato bikin list sendiri yg udah Anda tentukan...
Semoga yg ini sesuai keinginan sampeyan...xixixxixixi...:D
more 17 years ago
danieljun
wah makasih banget madi, niat bener jawab pertanyaan gue sampe banyak2 nulisnya.
tapi ... (xixixi) masih ada tapi ...
kalau pengen tahu file yang dibuka suatu app tanpa enum windows soalnya tidak ada window yang dibuka (dari mendapatkan daftar file handle yang dibuka suatu proses bagaimana ya caranya ?
Sorry banyak pertanyaan.

more 17 years ago
danieljun
Pernah lihat Process Explorer dari SysInternals ?
http://www.sysinternals.com
Kalau di View > Show Lower Pane
lalu View > Lower Pane View > Handles akan terlihat semua handle yang di pegang oleh process tersebut.
Pakai cara apa kita bisa extract semua file handle yang di buka oleh process yang bersangkutan?
gitu lho.

more 17 years ago
madi
oh itu tho mangsud sampeyan....
coba sampeyan coba produk dari Delphi-jed.org - JCL
saya coba liat lom ada file handlenya yg ada dll yg di handle, mungkin versi 3.0 keatasnya ada mas...
more ...
- Pages:
- 1
- 2
reply |
Report Obsolete
AI Forward

🚀 We're thrilled to partner with Alibaba Cloud for "AI Forward - Alibaba Cloud Global Developer Summit 2025" in Jakarta! Join us and explore the future of AI. Register now:
https://int.alibabacloud.com/m/1000400772/
#AlibabaCloud #DeveloperSummit #Jakarta #AIFORWARD
Last Articles
Last Topic
- PascalTalk #6: (Podcast) Kuliah IT di luar negeri, susah gak sih?
by LuriDarmawan in Tutorial & Community Project more 4 years ago - PascalTalk #5: UX: Research, Design and Engineer
by LuriDarmawan in Tutorial & Community Project more 4 years ago - PascalTalk #4: Obrolan Ringan Seputar IT
by LuriDarmawan in Tutorial & Community Project more 4 years ago - PascalTalk #2: Membuat Sendiri SMART HOME
by LuriDarmawan in Tutorial & Community Project more 4 years ago - PascalTalk #3: RADically Fast and Easy Mobile Apps Development with Delphi
by LuriDarmawan in Tutorial & Community Project more 4 years ago - PascalTalk #1: Pemanfaatan Artificial Intelligence di Masa Covid-19
by LuriDarmawan in Tutorial & Community Project more 4 years ago - Tempat Latihan Posting
by LuriDarmawan in OOT more 5 years ago - Archive
- Looping lagi...
by idhiel in Hal umum tentang Pascal Indonesia more 12 years ago - [ask] koneksi ke ODBC user Dsn saat runtime dengan ado
by halimanh in FireBird more 12 years ago - Validasi menggunakan data tanggal
by mas_kofa in Hal umum tentang Pascal Indonesia more 12 years ago
Random Topic
- component terenabled ..?
by nurez in Tip n Trik Pemrograman more 19 years ago - Ngisi karakter /,",',: ato \ dan sejenisnya ga bisa di
by wiseguy1997 in Tip n Trik Pemrograman more 17 years ago - String
by belajaraja in MySQL more 17 years ago - cara menampilkan IP address kom yg terhubung ke kom kita?
by stoopid in Network, Files, I/O & System more 18 years ago - Freereport
by em052007 in Enginering more 17 years ago - DELPHI7
by DADANG in Delphi.NET more 19 years ago - Menangkap argument yang dikirim saat start aplikasi
by yosstefano in Tip n Trik Pemrograman more 18 years ago - Point Gateway (SMS Gateway)
by eksant in Free dan Gratis more 14 years ago - Manggil perintah dalam DLL yang di buat C++
by aandrie77 in Enginering more 14 years ago - Form tumpuk2 ilang2 bingung2, tolong2 ya
by joudie in Hal umum tentang Pascal Indonesia more 16 years ago