🚀 go-pugleaf

RetroBBS NetNews Server

Inspired by RockSolid Light RIP Retro Guy

Thread View: fj.lang.visualbasic
6 messages
6 total messages Started by hiroko kumagai Wed, 25 Feb 1998 00:00
VB4.0$B$G(BCreateMutex$B$O;HMQ$G$-$^$9$+(B
#572
Author: hiroko kumagai
Date: Wed, 25 Feb 1998 00:00
24 lines
1563 bytes
$B7'C+!wIY;NDLElKLDL?.%7%9%F%`$G$9!#(B

VB4.0$B$G:n@.$7$?(Bexe$B$NFs=E5/F0$rKI;_$9$k$?$a!"(BMutex$B$r;H$$$?$$$N$G$9$,!"(B
exe$B$r:n@.$9$k$H!"(BWin32API$B%S%e%o!<$G(BCreateMutex$B4X?t$r@k8@$7$?ItJ,$G!"!W(B
$B!V%f!<%6!<Dj5A$5$l$F$$$^$;$s!W$N%(%i!<$G$F$7$^$$!"(Bexe$B$,:n@.$G$-$^$;$s!#(B

Private Declare Function CreateMutex Lib "kernel32" Alias "CreateMutexA"
   (lpMutexAttributes As SECURITY_ATTRIBUTES, ByVal bInitialOwner As Long, ByVal lpName As String) As Long
Private Declare Function OpenMutex Lib "kernel32" Alias "OpenMutexA" 
   (ByVal dwDesiredAccess As Long, ByVal bInheritHandle As Long, ByVal lpName As String) As Long
Private Declare Function CloseHandle Lib "kernel32" (ByVal hObject As Long) As Long

CreateMutex$B$G;HMQ$7$F$$$k(B"SECURITY_ATTRIBUTES"$B$N7?$,@k8@$5$l$F(B
$B$$$J$$$+$i$@$H;W$&$N$G$9$,!"$3$N7?$NDj5A$r(B
API$B%S%e!<%o!<$G$O8!:w$G$-$^$;$s$G$7$?!#(B

VB4.0$B$G$O(BCreateMutex$B$O;HMQ$G$-$J$$$N$G$7$g$&$+(B?


---
Hiroko Kumagai-Takahashi $BIY;NDLElKLDL?.%7%9%F%`3t!J#T#C#S!K%S%8%M%9?d?J<<(B
e-mail:kuma@tcs.ts.fujitsu.co.jp tel:7386-4110 FAX:7386-4299
nifty:KGF02601
Re: VB4.0でCreateMutexは使用できますか
#574
Author: Kuniyoshi Mohri
Date: Wed, 25 Feb 1998 00:00
27 lines
1794 bytes
こん○○は! モーリ@ITCシステムです。
アプリの二重起動防止なら、APIを使用せずとも下記の方法で出来ると思います。

======================================
===
VB アプリケーションのインスタンスが複数起動されるのを防止する
VB で作るアプリケーションの複数インスタンスの実行を防止するには、プログラム
の起動時に
App オブジェクトの、PrevInstance プロパティをチェックします。

アプリケーションフォームのスタートアップモジュールに、下のコードを書き加えて
みましょう。

If App.PrevInstance Then
    MsgBox "このアプリケーションはすでに開かれています。", vbExclamation, "
ロードエラー"
    Unload Me
End If

これで、あなたのアプリケーションは、二つ目の起動の際に、
エラーメッセージを出して終了するようになります。
======================================
===
http://www.microsoft.com/japan/developer/vbasic/resource/tips.htm より

                毛 利 邦 是  E-mail : mouri@itc-system.co.jp
Re: VB4.0でCreateMutexは使用できますか
#576
Author: AKIYA Saburou
Date: Wed, 25 Feb 1998 00:00
33 lines
1870 bytes
穐谷(あきや)です。

hiroko kumagai  wrote in article
 <6d0r5s$sa3@tusasim.tcs.ts.fujitsu.co.jp>...
> 熊谷@富士通東北通信システムです。
> VB4.0で作成したexeの二重起動を防止するため、Mutexを使いたいのですが、

まずほとんどの場合は、App.PrevInstanceをチェックするだけで大丈夫です。
特殊なケースとして、以前fj.os.ms-windows.programmingで紹介された
ケースもありますが、これは関係がないでしょう。

但し、以上の話は1台のPC上での話ですけど。

そうでなくネットワーク上で、という場合でしたら、私にはわかりません。
その時にfj.os.ms-windows.programmingで出た結論は、VB側でやるようなこと
ではない、といったようなものだったと思います。


> CreateMutexで使用している"SECURITY_ATTRIBUTES"の型が宣言されて
> いないからだと思うのですが、この型の定義を
> APIビューワーでは検索できませんでした。

Win32SDKを調べてみて下さい。少なくともそういうことを仕事にしている
会社でしたらあると思います。

もっとも、"lpMutexAttributes As Any"として、"ByVal 0&" (= NULL)を
渡せば、デフォルトの設定で作製できたと思います。


------------------------------------------------------------
		差出人:	穐谷 三郎
		E-Mail:	akiya@cmpk.or.jp
Re: VB4.0 で CreateMutex は使用できますか
#579
Author: Sato Masahiro
Date: Wed, 25 Feb 1998 00:00
43 lines
2394 bytes
In article <6d0r5s$sa3@tusasim.tcs.ts.fujitsu.co.jp>, hiroko kumagai wrote:
>VB4.0で作成したexeの二重起動を防止するため、Mutexを使いたいのですが、
>exeを作成すると、Win32APIビュワーでCreateMutex関数を宣言した部分で、」
>「ユーザー定義されていません」のエラーでてしまい、exeが作成できません。

CreateMutex 等を通常使用する範囲では、特にセキュリティ属性を指定する
必要はないと思いますが、いかがでしょうか? もし不必要であるならば、
NULL を渡せば良いと思います。具体的には、

>Private Declare Function CreateMutex Lib "kernel32" Alias "CreateMutexA"
>   (lpMutexAttributes As SECURITY_ATTRIBUTES, ByVal bInitialOwner As Long, ByVal lpName As String) As Long

これを、

Private Declare Function CreateMutex Lib "kernel32" Alias "CreateMutexA"
   (Byval lpMutexAttributes As Long, ByVal bInitialOwner As Long, ByVal lpName As String) As Long

などとして、一番目の引数に 0 を指定してみてはどうでしょうか?

>CreateMutexで使用している"SECURITY_ATTRIBUTES"の型が宣言されて
>いないからだと思うのですが、この型の定義を
>APIビューワーでは検索できませんでした。

もし SECURITY_ATTRIBUTE の指定が必要ならば、

Type SECURITY_ATTRIBUTES
        nLength As Long
        lpSecurityDescriptor As Long
        bInheritHandle As Boolean
End Type

としてみてはどうでしょうか。私の使用している API ビューワーでは、
上記の様に定義されていました。

なお二重起動防止に関しては、App オブジェクトの PrevInstance 
プロパティを使用すれば、大抵間に合います。実行ファイルが
コピーされてしまった場合には、コピー元とコピー先の二つを
同時に起動できてしまいますが...。

-- 
Computer Institute of Japan, Ltd.
佐藤正宏 masahiro@cij.co.jp
Re: VB4.0でCreateMutexは使用できますか
#456
Author: Akio Iwasaki
Date: Fri, 27 Feb 1998 00:00
38 lines
1876 bytes
>CreateMutexで使用している"SECURITY_ATTRIBUTES"の型が宣言されて
>いないからだと思うのですが、この型の定義を
>APIビューワーでは検索できませんでした。

以下VC++のBooks Onlinより、引用

typedef struct _SECURITY_ATTRIBUTES { // sa
    DWORD  nLength;
    LPVOID lpSecurityDescriptor;
    BOOL   bInheritHandle;
} SECURITY_ATTRIBUTES;

Members
nLength

Specifies the size, in bytes, of this structure. Set this value to the size
of the SECURITY_ATTRIBUTES structure.

Windows NT: Some functions that use the SECURITY_ATTRIBUTES structure do not
verify the value of the nLength member. However, an application should still
set it properly. That ensures current, future, and cross-platform
compatibility.

lpSecurityDescriptor

Points to a security descriptor for the object that controls the sharing of
it. If NULL is specified for this member, the object may be assigned the
default security descriptor of the calling process.

bInheritHandle

Specifies whether the returned handle is inherited when a new process is
created. If this member is TRUE, the new process inherits the handle


--
By Akio    Email: aiwasaki@pb.highway.ne.jp
Re: VB4.0$B$G(BCreateMutex$B$O;HMQ$G$-$^$9$+(B
#457
Author: hiroko kumagai
Date: Fri, 27 Feb 1998 00:00
57 lines
2879 bytes
$B7'C+$G$9!#(B

> VB4.0$B$G:n@.$7$?(Bexe$B$NFs=E5/F0$rKI;_$9$k$?$a!"(BMutex$B$r;H$$$?$$$N$G$9$,!"(B
> exe$B$r:n@.$9$k$H!"(BWin32API$B%S%e%o!<$G(BCreateMutex$B4X?t$r@k8@$7$?ItJ,$G!"!W(B
> $B!V%f!<%6!<Dj5A$5$l$F$$$^$;$s!W$N%(%i!<$G$F$7$^$$!"(Bexe$B$,:n@.$G$-$^$;$s!#(B

$B@bL@$,$?$j$^$;$s$G$7$?!#<B$O!"(B
VB4.0$B$G:n@.$7$?(Bexe$B$G$O!"(BApp.PrevInstance$B$GFs=E5/F0KI;_$r9T$C$F$$$^$9!#(B
$B$7$+$7!"(BWindowsNT4.0$B$K%5!<%S%9%Q%C%/(B3$B$r$$$l$?4D6-$G$OFs=E5/F0KI;_$,$G$-(B
$B$J$/$J$C$F$7$^$$$^$7$?!#(B
$B$7$i$Y$?$H$3$m!"(BVB$B$N(Bexe$B$r(B
(1)$B%U%!%$%k%^%M!<%8%c$+$i5/F0$7$?>l9g$^$?$O(BVB$B$N(BShell$B4X?t$G5/F0$7$?>l9g(B
(2)CreateProcess,ShellExecute,WinExec$B$G5/F0$7$?>l9g(B

 (1)$B$H(B(2)$B$G$OJL$N%$%s%9%?%s%9(B $B$K8+$i$l$F$7$^$&$h$&$G!"(B(1)$B$G5/F08e!"(B
 (2)$B$G5/F0$9$k$H!"Fs=E5/F0$rKI;_$G$-$^$;$s$G$7$?!#(B

$B$=$l$G!"(BMutex$B$,$D$+$($J$$$+$H;W$C$?<!Bh$G$9!#(B

$B:4F#@59((B masahiro@cij.co.jp$B$5$s$N%"%I%P%$%9$K=>$C$F=$@5$7$?$H$3$m(B
exe$B$r:n@.$G$-$^$7$?$N$G!"(BMutex$B$G;n$7$F$_$^$9!#(B
$B%U%)%m!<$7$F$$$?$@$$$F!"$_$J$5$s$"$j$,$H$&$4$6$$$^$7$?!#(B
 
>CreateMutex $BEy$rDL>o;HMQ$9$kHO0O$G$O!"FC$K%;%-%e%j%F%#B0@-$r;XDj$9$k(B
>$BI,MW$O$J$$$H;W$$$^$9$,!"$$$+$,$G$7$g$&$+(B? $B$b$7ITI,MW$G$"$k$J$i$P!"(B
>NULL $B$rEO$;$PNI$$$H;W$$$^$9!#6qBNE*$K$O!"(B

>>Private Declare Function CreateMutex Lib "kernel32" Alias "CreateMutexA"
>>   (lpMutexAttributes As SECURITY_ATTRIBUTES, ByVal bInitialOwner As Long, ByVal lpName As String) As Long
>
>$B$3$l$r!"(B
>
>Private Declare Function CreateMutex Lib "kernel32" Alias "CreateMutexA"
>   (Byval lpMutexAttributes As Long, ByVal bInitialOwner As Long, ByVal lpName As String) As Long
>
>$B$J$I$H$7$F!"0lHVL\$N0z?t$K(B 0 $B$r;XDj$7$F$_$F$O$I$&$G$7$g$&$+(B?
>
>>CreateMutex$B$G;HMQ$7$F$$$k(B"SECURITY_ATTRIBUTES"$B$N7?$,@k8@$5$l$F(B
>>$B$$$J$$$+$i$@$H;W$&$N$G$9$,!"$3$N7?$NDj5A$r(B
>A>PI$B%S%e!<%o!<$G$O8!:w$G$-$^$;$s$G$7$?!#(B
>
>$B$b$7(B SECURITY_ATTRIBUTE $B$N;XDj$,I,MW$J$i$P!"(B
>
>Type SECURITY_ATTRIBUTES
>        nLength As Long
>        lpSecurityDescriptor As Long
>        bInheritHandle As Boolean
>End Type
>
>$B$H$7$F$_$F$O$I$&$G$7$g$&$+!#;d$N;HMQ$7$F$$$k(B API $B%S%e!<%o!<$G$O!"(B
>$B>e5-$NMM$KDj5A$5$l$F$$$^$7$?!#(B



---
Hiroko Kumagai-Takahashi $BIY;NDLElKLDL?.%7%9%F%`(B($B3t(B)
Thread Navigation

This is a paginated view of messages in the thread with full content displayed inline.

Messages are displayed in chronological order, with the original post highlighted in green.

Use pagination controls to navigate through all messages in large threads.

Back to All Threads