PB 電子会議室

コメント

発言No. 更新日 題名(クリックすると発言内容と関連するコメントが表示されます)
20551 03/11/10 12:31:09 RE(2):PB7.0: FindExecutableについて By georgi
20548 03/11/07 22:58:38 RE(1):PB7.0: FindExecutableについて By isii
20547 03/11/07 20:41:20 PB7.0: FindExecutableについて By georgi

カテゴリ:PowerBuilderの開発環境
日付:2003年11月07日 22:58 発信者:isii
題名:RE(1):PB7.0: FindExecutableについて

georgiさん、こんばんは。

>いつも参考にさせていただいております。

>今、PowerBuilder 7.0.2のグローバル外部関数「FindExecutable」(shell32.dll)を使用したい
>と思っています。
>これは指定の拡張子と関連付けられている実行プログラム名を取得する関数で
>関数仕様は
>---------------------------------------------------------------------------------
>Function Long FindExecutable(String lpFile, String lpDirectory, String lpResult) 
>Library \"shell32.dll\" Alias for \"FindExecutableA\"
>lpFile:拡張子を持つファイル名
>lpDirectory:デフォルトのディレクトリ
>lpResult:プログラム名を受け取るバッファ
>戻り値 32以上なら成功
>---------------------------------------------------------------------------------
>となっております。

>実際下記のようにロジックを組み実行してみました。

>String l_exe
>Long l_rtn
>l_rtn = FindExecutable(\"test.doc\", \"C:\\test\", l_exe)

>l_rtnには32以上の数値が入り、成功したようにみえるのですが実際l_exeには
>空文字しかはいっていません。test.docはC:\\test内に存在します。

>そこで調べた所、lpResultは固定長文字列で宣言しなければいけないみたいなので
>Char l_exe[256]
>と宣言して実行してみたのですけど、今度はアプリケーションエラーがでてしまいます。(涙)

>どなたかPowerBuilderでFindExecutableの使用方法を知っている方
>ご教授お願いしてもよろしいでしょうか?
>よろしくお願いします。
FindExecutable()は使用したことがないのですが、誤りが2箇所存在すると思います。

1.グローバル外部関数の宣言
3番目の引数は、ポインタ渡しなので\"ref\"を付ける必要があります。
Function Long FindExecutable(String lpFile, String lpDirectory, ref String lpResult) 
Library \"shell32.dll\" Alias for \"FindExecutableA\"

2.スクリプト
FindExecutable()を呼ぶ前に変数をスペースで埋めておく必要があります。
String l_exe
Long l_rtn
l_exe = Space( 256 )
l_rtn = FindExecutable(\"test.doc\", \"C:\\test\", l_exe)

付加情報:

PowerBuilder Version (記載なし)

Client SoftWare

OS Windows 2000
DBMS (記載なし)
Browser (記載なし)

Server SoftWare

OS (記載なし)
DBMS (記載なし)
WebServer (記載なし)

PowerSpaceの運営は、パワーフューチャー株式会社が行っております。
Copyright © 2013 Power Future Co., Ltd.