ab.com コミュニティ https://www.activebasic.com/forum/ |
|
コマンドラインの引数,ドラッグ&ドロップのファイルパス取得 https://www.activebasic.com/forum/viewtopic.php?t=244 |
ページ 1 / 1 |
作成者: | H.K. [ 2005年7月28日(木) 21:11 ] |
記事の件名: | コマンドラインの引数,ドラッグ&ドロップのファイルパス取得 |
コマンドラインの引数を分解して取得したり、ドラッグアンドドロップ、関連付けのファイルパスを取得するものです。 負けイヌ氏のプログラムを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 |
作成者: | Mario2 [ 2005年7月28日(木) 21:25 ] |
記事の件名: | Re: コマンドラインの(略) |
別のつっこみですけど、 >負けイヌ氏 ではなく、「まけイヌ氏」だと思います。 |
ページ 1 / 1 | 全ての表示時間は UTC+09:00 です |
Powered by phpBB® Forum Software © phpBB Limited https://www.phpbb.com/ |