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が使えるのですね、覚えておきます。

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



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