PB 電子会議室
発言No. | 更新日 | 題名(クリックすると発言内容と関連するコメントが表示されます) |
---|---|---|
18831 | 03/02/07 23:24:10 | RE(2):自分のEXEの在り処 By isii |
18827 | 03/02/07 17:39:20 | RE(1):自分のEXEの在り処 By coo |
18825 | 03/02/07 16:54:49 | 自分のEXEの在り処 By namahamu21 |
カテゴリ:スクリプトの記述
日付:2003年02月07日 23:24 発信者:isii
題名:RE(2):自分のEXEの在り処
namahamu21さん、cooさん、こんばんは。
>>自分のEXEファイルのフォルダパスを知りたいのですが、
>>どのように取得するのでしょうか?
>>どなたかご存知ないですか、凄く急いでます。
>>よろいくお願いします。
>
>API関数で取得出来たと思います。
>外部関数定義は、PBでは下記でOKだと思います。
>
>Function Long GetCurrentDirectory(Long BuffLen, ref string dir) &
> LIBRARY \"kernel32\" Alias for \"GetCurrentDirectoryA\"
>Function Long SetCurrentDirectory(String PathName) &
> LIBRARY \"kernel32\" Alias for \"SetCurrentDirectoryA\"
基本的には、GetCurrentDirectoryA()でいいのですが、SetCurrentDirectoryA()、
GetFileOpenName()、GetFileSaveName()を使用した後等で、カレントが変わって
いる可能性がありますので、私は、GetModuleFileNameA()から求めるようにしてい
ます。
以下に、例を記述します。
記述例の仕様
・EXEファイルは[アプリケーション名].EXEとする。
・PBから実行(PBLの状態で)した場合は、カレントディレクトリとする。
・グローバル外部関数の定義
function ulong GetCurrentDirectoryA(ulong lBuf, ref string CurDir) &
library \"kernel32.dll\"
function ulong GetModuleFileNameA(ulong hWnd, ref string Fname, ulong lBuf) &
library \"kernel32.dll\"
・スクリプト
// アプリケーション名を求める
Application app
app = GetApplication()
// カレントディレクトリを求める
ulong lBuf
string CurDir
lBuf = 260
CurDir = Space( lBuf + 1 )
GetCurrentDirectoryA( lBuf, CurDir )
// 実行ファイル名を求める
string FileName, work
FileName = Space( lBuf + 1 )
GetModuleFileNameA( Handle( this ), FileName, lBuf )
work = Upper( FileName )
// 実行ディレクトリを求める
string PathName
long index
index = Pos( work, \"\\\" + Upper( app.AppName ) + \".EXE\" )
if index > 0 then
PathName = Left( FileName, index - 1 )
else
PathName = CurDir
end if
付加情報:
PowerBuilder Version (記載なし)
Client SoftWare
OS Windows 2000
DBMS Oracle SQL*Net 8
Browser (記載なし)
Server SoftWare
OS Windows 2000
DBMS Oracle 8.0
WebServer (記載なし)
Copyright © 2013 Power Future Co., Ltd.