PB 電子会議室

コメント

発言No. 更新日 題名(クリックすると発言内容と関連するコメントが表示されます)
12646 00/08/07 15:14:30 RE(12):PB7.0: ShellExecute関数を使ってHP表示ができません。(おまけレス) By ryochan
12644 00/08/07 14:38:06 RE(11):PB7.0: ShellExecute関数を使ってHP表示ができません。(おまけレス) By M.M
12643 00/08/07 14:29:02 RE(10):PB7.0: ShellExecute関数を使ってHP表示ができません。 By Taka
12438 00/07/27 17:38:12 RE(9):PB7.0: ShellExecute関数を使ってHP表示ができません。|最終手段 By Oka
12437 00/07/27 17:36:13 RE(8):PB7.0: ShellExecute関数を使ってHP表示ができません。 By ryochan
12424 00/07/27 14:01:32 RE(7):PB7.0: ShellExecute関数を使ってHP表示ができません。 By STRATOVARIUS
12421 00/07/27 08:48:09 RE(6):PB7.0: ShellExecute関数を使ってHP表示ができません。|最終手段 By ryochan
12417 00/07/26 21:16:48 RE(5):PB7.0: ShellExecute関数を使ってHP表示ができません。 By Oka
12414 00/07/26 20:21:49 RE(4):PB7.0: ShellExecute関数を使ってHP表示ができません。 By ryochan
12412 00/07/26 18:31:22 RE(3):PB7.0: ShellExecute関数を使ってHP表示ができません。 By Oka
12407 00/07/26 16:00:48 RE(2):PB7.0: ShellExecute関数を使ってHP表示ができません。 By ryochan
12404 00/07/26 14:49:56 RE(1):PB7.0: ShellExecute関数を使ってHP表示ができません。 By ryochan
12403 00/07/26 14:28:46 PB7.0: ShellExecute関数を使ってHP表示ができません。 By Oka

カテゴリ:スクリプトの記述
日付:2000年07月27日 17:36 発信者:ryochan
題名:RE(8):PB7.0: ShellExecute関数を使ってHP表示ができません。

STRATOVARIUSさん、こんにちは。

APIで文字列を使用するには以下のことを認識しなければいけません。
1.LPCSTR:const char*   定数文字列への 32 ビット ポインタ。 refはいらない
              →string で宣言できる。
2.LPSTR:char*       文字列への 32 ビット ポインタ。
              →refが必要さらに long型によりアドレスの受け渡しが必要。
3.LPCTSTR:const wchar_t*  Unicode と DBCS への移植性が高い定数文字列への
              32 ビット ポインタ。→:ref はいらない。stringで宣言できる。
4.LPTSTR:wchar_t*      Unicode と DBCS への移植性が高い文字列への32 ビット ポインタ。
              →ref string で値を取得できるが、最初に領域確保が必要。space関数
(但し、どちらもchar*としてLPCTSTR=LPCSTR、LPTSTR=LPSTRの場合もあります。ここが混乱の元。)

ポインタには定数ポインタと非定数ポインタがあります。
非定数ポインタは参照渡しでアドレスでやりとりしなければいけません。
アドレスで受け取ったのをstring型変数に格納するには
RtlMoveMemory APIを使用します。
LPTSTRにかぎっては上記に述べましたがstring型でも参照渡しが行えます。
ただし、上記にも書いたようにできないこともあります。
定数ポインタに関してはstringでそのまま値渡しでかまいません。
(多分PBが自動でnull終端文字列に変換しているかな。どうなのでしょう?)
ここで、shellexecuteAなのですが、最後のAというのは32ビット用という意味です。

MSDNではこのように宣言されています。
HINSTANCE ShellExecute(
    HWND hwnd,
    LPCTSTR lpOperation,
    LPCTSTR lpFile,
    LPCTSTR lpParameters,
    LPCTSTR lpDirectory,
    INT nShowCmd
);
よってLPCTSTRは定数ポインタなのでrefは必要ありません。
上記の説明で間違っているところがあれば、指摘をお願いします。

付加情報:

PowerBuilder Version (記載なし)

Client SoftWare

OS Windows NT 4.0
DBMS (記載なし)
Browser InternetExplorer5.X

Server SoftWare

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

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