Jump to content

_Singleton_V2


SimpsoN_Bart
 Share

Recommended Posts

[font="Tahoma"]_Singleton fonksiyonu biraz uzun olduğu için üzerinde inceleme ve araştırma yaparak bu fonksiyonu geliştirdim. Bu fonksiyon Thread'lerin çakışmasını önler ve bu mutex sayesinde olur Mutex,
Process Control Block’un içinde bulunan bir çeşit global değişkendir; açılımı mutual exclusion dur [size=2]ve deadlock (işlemler düğümünü) önlemek için threadlerinkullandığı bir değişkendir. Bir thread CPU, I/O vb. gibi bir yerde işlemyapacağı zaman mutex değişkenine değer atarak o alanı kullanıldığını ifadeeder. Bu sırada başka bir thread tarafından o alanda işlem yapılacaksa mutexinsıfırlanmasını bekler ve daha sonra kendisi mutex’e değer atarak işleminigerçekleştirir.Özet olarak aynı işlemden ancak bir tane açmanızı sağlar.[/size][/font][size=2][/size]


[font="Tahoma"][size=2]
[/size][/font]
[font="Tahoma"][size=2][codebox]If _SINGLETON_V2(@ScriptName, 1) Then Exit MsgBox(16, "Hata!", " " & @ScriptName & " zaten çalışıyor! ", 5)
_SINGLETON_V2(@ScriptName, 0)

$GUI = GUICreate("Form1", 370, 146, 192, 124)
GUISetState()
While 1
If GUIGetMsg() = -3 Then Exit
WEnd



Func _SINGLETON_V2($SCRIPTNAME, $PARAM)
Local Const $MUTEX_ALL_ACCESS = 0x1F0001
If $PARAM = 1 Then
Local $RTN = DllCall("kernel32.dll", "hwnd", "OpenMutex", _
"int", $MUTEX_ALL_ACCESS, _
"int", False, _
"str", $SCRIPTNAME)
Return $RTN[0]
ElseIf $PARAM <> 1 Then
DllCall("kernel32.dll", "hwnd", "CreateMutex", _
"int", 0, _
"int", False, _
"str", $SCRIPTNAME)
Return 1
EndIf
Return 0
EndFunc ;==>_SINGLETON_V2
[/codebox]
[/size][/font]
Link to comment
Share on other sites

kardeş çalışmalarını mükemmel ve beyenerek takip ediyorum.Bu arada emeginize saygı duyuyorum.
yazmış olduğun kodda,
@ScriptName yazdığımızda tekrar aynı proğram çalışmıyor ama aynı proğramın kopyasını yapıp adını değiştirip çalıştırdığımızda farklı bir proğram gibi çalışıyor.
benim aklıma bir şey geldi
kodu bu şekil yaptığımızda ,kendisi 2 defa çalışmıyor ve kopyasıda çalışmıyor yani çalışan bir program oluyor.

[code]If _SINGLETON_V2('SINGLETON_V2', 1) Then Exit MsgBox(16, "Hata!", " " &'SINGLETON_V2' & " zaten çalışıyor! ", 5)
_SINGLETON_V2('SINGLETON_V2', 0)

$GUI = GUICreate("SINGLETON_V2", 370, 146, 192, 124)
GUISetState()
While 1
If GUIGetMsg() = -3 Then Exit
WEnd



Func _SINGLETON_V2($SCRIPTNAME, $PARAM)
Local Const $MUTEX_ALL_ACCESS = 0x1F0001
If $PARAM = 1 Then
Local $RTN = DllCall("kernel32.dll", "hwnd", "OpenMutex", _
"int", $MUTEX_ALL_ACCESS, _
"int", False, _
"str", $SCRIPTNAME)
Return $RTN[0]
ElseIf $PARAM <> 1 Then
DllCall("kernel32.dll", "hwnd", "CreateMutex", _
"int", 0, _
"int", False, _
"str", $SCRIPTNAME)
Return 1
EndIf
Return 0
EndFunc ;==>_SINGLETON_V2

[/code]
[code]Local $list = ProcessList()
For $i = 1 To $list[0][0]
MsgBox(0, $list[$i][0], $list[$i][1])
Next

; List just notepad.exe processes
$list = ProcessList("notepad.exe")
For $i = 1 To $list[0][0]
MsgBox(0, $list[$i][0], $list[$i][1])
Next
[/code]


bunu kullanmalıyım yoksa farklı bir yöntem varmı?
proğram monitor ,yada çalışan proğram listesi yapmak istiyorum,her hangi proğram çalıştığında proğram adı çalışma saati ve kapanış saati log tutması nasıl yaparız.
regstry de bir yere böyle bir kayıt yapıyormu buna benzer regstryda kaydı gördüm shellrun altındaydı galiba
ellerine sağlık hayırlı çalışmalar

Edited by mesale0077
Link to comment
Share on other sites

[font="Tahoma"]Orda fonksiyonda macro yazdığım yere scriptin değişmez adını yazarsan sorun olamaz yani ben genel olarak makro kullandım.Bu arada pid değeri için ProcessExists komutunu kullabilirsin diğer sorun için sence doğru yere burası mı ?[/font]

Link to comment
Share on other sites

Join the conversation

You can post now and register later. If you have an account, sign in now to post with your account.
Note: Your post will require moderator approval before it will be visible.

Guest
Reply to this topic...

×   Pasted as rich text.   Paste as plain text instead

  Only 75 emoji are allowed.

×   Your link has been automatically embedded.   Display as a link instead

×   Your previous content has been restored.   Clear editor

×   You cannot paste images directly. Upload or insert images from URL.

 Share

  • Recently Browsing   0 members

    No registered users viewing this page.

×
×
  • Create New...