ab.com コミュニティ

ActiveBasicを通したコミュニケーション
現在時刻 - 2024年3月29日(金) 01:15

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




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

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

トピックのレビュー - WinMainのようなもの
作成者 メッセージ
  記事の件名:  WinMainのようなもの  引用付きで返信する
お久しぶりです.
最近ABとCを併用することが多いのですがそのときに無性にWinMainが欲しくなる(コマンドラインとかnCmdShowとか)ので作りました.
留意点はPathGetArgsが何故か先頭にスペースがあるのにそのままにする場合があるのでWhileで進ませています.
あと最初にSysWinMainと書かなくては動かないのが個人的に不満です.
参考元: http://hp.vector.co.jp/authors/VA016117/tinyexe.html

ABでもC++のUnicodeとかみたくStringとBytePtrの切り替えができたらいいのにな…と思ったり

(AB4.23で動作確認)
コード:
Declare Function PathGetArgs Lib "shlwapi" Alias "PathGetArgsA" (ByVal p As BytePtr) As BytePtr

SysWinMain()

Function WinMain(ByVal hInstance As HINSTANCE, ByVal Reserved As HINSTANCE, ByVal sCmdLine As String, ByVal nCmdShow As Long) As DWord
	MessageBox(0, StrPtr(sCmdLine), "WinMain test", MB_OK)
	WinMain = 0
End Function

Sub SysWinMain()
	Dim szCmdLine As BytePtr
	szCmdLine = PathGetArgs(GetCommandLine())
	While GetByte(szCmdLine) = &H20 '&H20=半角スペース
		szCmdLine++
	WEnd
	Dim sinfo As STARTUPINFO
    sinfo.dwFlags = 0
    GetStartupInfo(sinfo)
	If Not(sinfo.dwFlags and STARTF_USESHOWWINDOW) Then sinfo.dwFlags = SW_SHOWDEFAULT
	Dim ret As DWord
	ret = WinMain(GetModuleHandle(0), 0, MakeStr(szCmdLine), sinfo.dwFlags)
	If ret = 0 Then End
	ExitProcess(ret)
End Sub
投稿記事 Posted: 2007年8月24日(金) 18:00

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


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