mieki256's diary



2024/02/03() [n年前の日記]

#1 [basic] FreeBASICで多重起動禁止

Windows10 x64 22H2 + FreeBASIC 1.10.1 32bit で、多重起動禁止ができるのかどうか動作確認。

以下が参考になった。

_Mutex instances - freebasic.net
_Mutex Troubles [Solved] - freebasic.net
_Windows上で多重起動を防止する方法

Windowsに特化した方法になってしまうけど、CreateMutex() を使えば多重起動禁止ができるはず。

サンプルソースを書いてみた。

_mutex.bas
#include once "windows.bi"

Const mutex_name = "MyProgramName"

Dim As HANDLE hMsp

hMsp = CreateMutex(NULL, TRUE, strptr(mutex_name))
If hMsp <> 0 Then
    Dim As DWORD ret = GetLastError()
    If ret = ERROR_ALREADY_EXISTS Or ret = ERROR_ACCESS_DENIED Then
        ' Already
        Print "Already running. Exit."
        ReleaseMutex(hMsp)
        CloseHandle(hMsp)
        end
    End If
End If

Print "Running ... "
Print "Push Any Key"
sleep

ReleaseMutex(hMsp)
CloseHandle(hMsp)

fbc mutex.bas で、mutex.exe を生成できる。

実行すると、最初の起動時は以下になる。
> mutex.exe
Running ...
Push Any Key

1つ目のプログラムがまだ実行されている間に、別のDOS窓で同じプログラムを実行すると、以下の表示になって終了する。
> mutex.exe
Already running. Exit.

多重起動禁止になっているようだなと…。

以上です。

過去ログ表示

Prev - 2024/02 - Next
1 2 3
4 5 6 7 8 9 10
11 12 13 14 15 16 17
18 19 20 21 22 23 24
25 26 27 28 29

カテゴリで表示

検索機能は Namazu for hns で提供されています。(詳細指定/ヘルプ


注意: 現在使用の日記自動生成システムは Version 2.19.6 です。
公開されている日記自動生成システムは Version 2.19.5 です。

Powered by hns-2.19.6, HyperNikkiSystem Project