今日も見に来てくださってありがとうございます。今日も楽しく更新します♪
珍しく、PowerBuilderの記事を書いてみることにしました。今のおしごとでは、PowerBuilder8.0.3というかなーり古い開発ツールを使っていますので、ニーズはほとんどないと思いますけど、自分用メモ、といういことでご容赦ください。
今回、Webからダウンロードしたファイルを読み込んで処理をする必要があって、ファイルの初期値をどうしようかなぁ、と、思ったのが発端です。とりあえず、ダウンロードフォルダにファイルが入るだろうから、そのフォルダを示しておけば大丈夫でしょう、ということでフォルダ名の取得方法を調べました。
こちらに紹介がありましたが、とうぜんPowerBuilderでの使い方ではありませんね。VBScriptでは、以下のように入力すればよいということでした。
MsgBox CreateObject("Shell.Application").Namespace("shell:Downloads").Self.Path
これを手掛かりに作ったのが以下のスクリプトです。
OLEObject lole_shell lole_shell = CREATE OLEObject lole_shell.ConnectToNewObject('Shell.Application') OLEObject lpo lpo = lole_shell.namespace("shell:Downloads") if not isNull(lpo) then string ls_path ls_path = lpo.Self.path if directoryExists(ls_path) then sle_nm_file.text = ls_path + "\" else sle_nm_file.text = "" end if else sle_nm_file.text = "" end if DESTROY lole_shell
ポイントは、lole_shell.namespace("shell:Downloads")
を取得して、値がセットされたかどうかをチェックしているところです。ぼくの開発環境は古くて値がセットされず、エラーになっちゃうのですよね。でも、作ったプログラムをWin10環境で動かせば、値が取得できる、というトリックです。とりあえずユーザーが利用できればいいのですけど、ぼくが開発環境でその画面を開いたら異常終了、というのはいただけませんからねぇ。