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
Author: hiroko kumagai
Date: Wed, 25 Feb 1998 00:00
Date: Wed, 25 Feb 1998 00:00
24 lines
1563 bytes
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は使用できますか
Author: Kuniyoshi Mohri
Date: Wed, 25 Feb 1998 00:00
Date: Wed, 25 Feb 1998 00:00
27 lines
1794 bytes
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は使用できますか
Author: AKIYA Saburou
Date: Wed, 25 Feb 1998 00:00
Date: Wed, 25 Feb 1998 00:00
33 lines
1870 bytes
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 は使用できますか
Author: Sato Masahiro
Date: Wed, 25 Feb 1998 00:00
Date: Wed, 25 Feb 1998 00:00
43 lines
2394 bytes
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は使用できますか
Author: Akio Iwasaki
Date: Fri, 27 Feb 1998 00:00
Date: Fri, 27 Feb 1998 00:00
38 lines
1876 bytes
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
Author: hiroko kumagai
Date: Fri, 27 Feb 1998 00:00
Date: Fri, 27 Feb 1998 00:00
57 lines
2879 bytes
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