HSPポータル
サイトマップ お問い合わせ


HSPTV!掲示板


未解決 解決 停止 削除要請

2025
1224
kenファイルが他のプロセスで開かれているか確認する方法ありますか?4解決


ken

リンク

2025/12/24(Wed) 17:03:06|NO.104552

今、dirlistで取得したPDFファイルのリストでファイルを選択させて、
そのファイルをdeleteで削除させていますが、PDFファイルが開かれた状態だと
error 12がでます。
今は、onerrorでファイルが開かれているので閉じてくださいと表示するようにしていますが、
error 12がでたらファイルが開かれているって決めつけるのはおかしいですよね?
C#ではFileStreamを使って例外がでるか確認しているようなので、HSPではbloadを使ってerrorが
出るかで判断するのが良いのでしょうか?



この記事に返信する


沢渡

リンク

2025/12/24(Wed) 18:51:50|NO.104554

WinAPIのDeleteFileを使うのはどうでしょうか。
これだと失敗してもエラーにはならず、statを見ることで失敗したかどうかを確かめることができます。
(マニュアルを見た感じ、onerrorは例外処理に使ってはいけないようです)

#include "kernel32.as" DeleteFile "hoge.dat" //削除に失敗した場合はstatが0に、成功した場合は0以外になる if stat=0 : mes "ファイルの削除に失敗しました"



zakki

リンク

2025/12/24(Wed) 21:27:28|NO.104555

僕は使ったことありませんが、インストーラーがたまにメッセージだすのは再起動マネージャーっていうの使ってるみたいです。
多用は推奨されないっぽいこと書いてあるので、どうしてもやりたいわけじゃなければ沢渡さんの方式のほうがよさそう。

https://learn.microsoft.com/ja-jp/windows/win32/api/restartmanager/nf-restartmanager-rmgetlist



ken

リンク

2025/12/25(Thu) 10:26:45|NO.104559

沢渡さん、zakkiさんアドバイスありがとうございます。
沢渡さん
おっしゃるように、onerrorを例外処理の際に使うのはおかしいですね。
結構普通に使っていました。
教えていただいたDeleteFileで解決しました。すっきりした感じです。
ありがとうございました。

zakkiさん
RmGetListを教えていただき有難うございます。これを使えばファイルをロックしている
アプリ名まで得ることが出来るんですね。
c#等で解説されている資料を見ましたが、私にはハードルが高いなと実感しました。
もっとAPIの使い方勉強する必要があるなと感じました。
ありがとうございます。

今後ともよろしくお願いいたします。



moaningstraw

リンク

2025/12/25(Thu) 12:54:58|NO.104560

これにより、失敗してもエラーにはならず、stat を見ることで失敗したかどうかを確認できます https://soflowheelie-life.github.io



記事削除

記事NO.パスワード
(質問が解決したスレッドは他の利用者に活用してもらうため、削除しないようお願いします)

NO.104552への返信

マスコット

好きなマスコットを選んでください。

名前

e-mail
HOME
  1. 初めて利用する方は、HSP3掲示板の使い方をお読みください。
  2. 不要部分の多い長いスクリプトの投稿は ご遠慮ください。
  3. 書き込みは自動改行されません。適度に改行を入れてください。
  4. スクリプトは小文字の<pre>〜</pre>で囲むと見やすく表示できます。

削除用パスワード

解決したら質問者本人がここをチェックしてください。

エラー発生時、再送信すると二重送信になることがあります。
回答が得られたら、お礼書き込み時に[解決]チェックしてください。
SPAM防止のためURLから始まる文章は投稿できません。
SPAM防止のため英文字のみの本文を投稿することはできません。

ONION software Copyright 1997-2025(c) All rights reserved.