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


HSPTV!掲示板


未解決 解決 停止 削除要請

2021
0711
追陽エクスプローラで開いているフォルダを取得したい3解決


追陽

リンク

2021/7/11(Sun) 16:51:35|NO.93209

開かれているフォルダをリアルタイムで調べたいのですが、
以下のソースだとフォルダが閉じたときに
エラーになってしまいます。

waitを大きくするとあまり起こらなくなることから、
「フォルダが閉じてオブジェクトが死んでから
 com_sa_wins("Count")の値が更新されるまでの間に
 呼び出してしまっている」
のではないかと思うのですが、解決策がありましたらご教授ください。


sdim text,1024 mesbox text,ginfo_winx,ginfo_winy,0 repeat wait 1 newcom com_sa, "Shell.Application" comres com_sa_wins com_sa->"Windows" text="" repeat com_sa_wins("Count") comres com_sa_IEobj com_sa_wins->"Item" cnt com_Document = com_sa_IEobj( "Document" ) com_Folder = com_Document( "Folder" ) com_Self = com_Folder( "Self" ) text += com_Self("Path")+"\n" loop objprm 0,text loop



この記事に返信する


追陽

リンク

2021/7/11(Sun) 16:56:50|NO.93210

追記:
実行環境はwindows10(64bit)、hsp3.51です。



kou

リンク

2021/7/13(Tue) 21:43:50|NO.93217

私の環境ではエラーで落ちた時は、varuseが0だったので
実行前にチェックしてはいかがでしょうか?

※wait 1 をもっと早くawait 0 にしても私の環境ではエラーは出てません。



sdim text,1024 mesbox text,ginfo_winx,ginfo_winy,0 newcom com_sa, "Shell.Application" // 初期化はループ外で先にしておく comres com_sa_wins : com_sa->"Windows" repeat wait 1 text="" repeat com_sa_wins("Count") comres com_sa_IEobj : com_sa_wins->"Item" cnt if varuse(com_sa_IEobj) { ; nullチェックしてから実行※エラー出た時は0になってる text += com_sa_IEobj("LocationURL") + "\n" } loop objprm 0,text loop



追陽

リンク

2021/7/14(Wed) 20:52:33|NO.93224

自分の環境でもコレなら問題が出ないことを確認しました。

COMのオブジェクトがちゃんと返ってきてるかどうか調べるためにも
varuseが使えるのですね、覚えておきます。

ありがとうございました。



記事削除

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

NO.93209への返信

マスコット

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

名前

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

削除用パスワード

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

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

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