ab.com コミュニティ

ActiveBasicを通したコミュニケーション
現在時刻 - 2024年4月18日(木) 13:56

全ての表示時間は UTC+09:00 です




返信する
ユーザー名:
件名:
メッセージ本文:
メッセージを入力してください。60000 字まで入力できます。 

フォントサイズ:
フォントカラー
オプション:
BBCode: ON
[img]: ON
[flash]: OFF
[url]: ON
スマイリー: OFF
BBCode を無効にする
URL を自動的にパースしない
クイズ
お手数ですがカタカナで「エービー」と4文字を入力してください。:
答えを正確に入力してください。答えられるかどうかでスパムボットか否かを判定します。
   

トピックのレビュー - コマンドラインの引数,ドラッグ&ドロップのファイルパス取得
作成者 メッセージ
  記事の件名:  Re: コマンドラインの(略)  引用付きで返信する
別のつっこみですけど、
>負けイヌ氏
ではなく、「まけイヌ氏」だと思います。
投稿記事 Posted: 2005年7月28日(木) 21:25
  記事の件名:  コマンドラインの引数,ドラッグ&ドロップのファイルパス取得  引用付きで返信する
コマンドラインの引数を分解して取得したり、ドラッグアンドドロップ、関連付けのファイルパスを取得するものです。
負けイヌ氏のプログラムをstring変数を使わないように変更し、さらに改良したものです。負けイヌ氏に感謝。
以下がプログラムです。

Dim s As BytePtr
Dim cmd[MAX_PATH-1] As Byte
Dim iti as dword
Dim j as dword

s=GetCommandLine()
j=0
iti=0
While CutCommandLine(cmd,s,iti)
MessageBox(GetForegroundWindow(),cmd,Str$(j)+"個目",MB_OK)
j=j+1
WEND
END

'コマンドライン引数を1つずつ順に切り出す(ドラッグアンドドロップや関連付けにも対応)
Function CutCommandLine(ByVal cmd As BytePtr, ByVal s As BytePtr,ByRef iti as dword) As Long
Dim FLG As Long
Dim max As Long
Dim i As Long
max=lstrlen(s)-1
IF iti>max Then
CutCommandLine=FALSE
Exit Function
END IF
'ループ変数を初期化
CutCommandLine=TRUE
ZeroMemory(cmd,MAX_PATH)
FLG=0 'なくても可
i=0 'なくても可

's(iti)を1バイトずつ調べる
While iti<=max
IF IsDBCSLeadByte(s(iti))=0 Then '半角文字の場合、IsDBCSLeadByte(s(iti))=0
IF s(iti)=&H22 Then 's(iti)がダブルクォーテーション
IF FLG=0 Then FLG=1 else FLG=0 'FLGの0,1で反転させる
ElseIF (s(iti)=&H20 And FLG=0) Then 'ダブルクォーテーションの外側のスペースの場合
IF cmd(0)<>0 Then 'スペースが2つ以上続く場合に対応
iti=iti+1 '関数を終了する時も1バイト進める
Exit While
END IF
Else 'それ以外の半角文字の場合
cmd(i)=s(iti)
i=i+1
END IF
iti=iti+1 '1バイト進める
Else '全角文字の場合
cmd(i)=s(iti)
cmd(i+1)=s(iti+1)
iti =iti+2 '全角文字なので2バイト進める
i=i+2
END IF
WEND
END Function
投稿記事 Posted: 2005年7月28日(木) 21:11

全ての表示時間は UTC+09:00 です


ページ移動:  
Powered by phpBB® Forum Software © phpBB Limited
Japanese translation principally by ocean