ab.com コミュニティ https://www.activebasic.com/forum/ |
|
WinMainのようなもの https://www.activebasic.com/forum/viewtopic.php?t=2033 |
ページ 1 / 1 |
作成者: | みどるべあ [ 2007年8月24日(金) 18:00 ] |
記事の件名: | 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 |
ページ 1 / 1 | 全ての表示時間は UTC+09:00 です |
Powered by phpBB® Forum Software © phpBB Limited https://www.phpbb.com/ |