inververs
AutoIT Гуру
- Сообщения
- 2,135
- Репутация
- 465
Никак не пойму как с ним работать, набросал утилиту с 3 кнопками, создать проверить и удалить.
Но удалить не работает? Почему после того как я нажимаю на удалить а затем проверить, все равно пишет что уже существует?
Мне это нужно, что бы как минимум 2 программы могли понимать, когда mutex с определенным именем занят или свободен.
Но удалить не работает? Почему после того как я нажимаю на удалить а затем проверить, все равно пишет что уже существует?
Мне это нужно, что бы как минимум 2 программы могли понимать, когда mutex с определенным именем занят или свободен.
Код:
#include <WinAPIProc.au3>
#include <WinAPI.au3>
#include <ButtonConstants.au3>
#include <EditConstants.au3>
#include <GUIConstantsEx.au3>
#include <StaticConstants.au3>
#include <WindowsConstants.au3>
#Region ### START Koda GUI section ### Form=
$Form1 = GUICreate("Form1", 290, 79, -1, Random(100, 500, 1))
$Label1 = GUICtrlCreateLabel("Мутекс имя:", 8, 6, 67, 17)
$Input1 = GUICtrlCreateInput("[868860008249466]", 8, 24, 193, 21)
$Button1 = GUICtrlCreateButton("Создать", 208, 0, 75, 25)
$Button2 = GUICtrlCreateButton("Проверить", 208, 24, 75, 25)
$Button3 = GUICtrlCreateButton("Удалить", 208, 48, 75, 25)
GUISetState(@SW_SHOW)
#EndRegion ### END Koda GUI section ###
Global $hMutex
Local Const $ERROR_ALREADY_EXISTS = 183
While 1
$nMsg = GUIGetMsg()
Switch $nMsg
Case $GUI_EVENT_CLOSE
Exit
Case $Button1 ;Создать
$sName = GUICtrlRead($Input1)
$hMutex = _WinAPI_CreateMutex ( $sName)
If _WinAPI_GetLastError() = $ERROR_ALREADY_EXISTS Then
MsgBox(0,$hMutex,'Уже существует')
_WinAPI_CloseHandle($hMutex)
EndIf
Case $Button2
$sName = GUICtrlRead($Input1)
$hMutex = _WinAPI_CreateMutex ( $sName)
If _WinAPI_GetLastError() = $ERROR_ALREADY_EXISTS Then
MsgBox(0,$hMutex,'Уже существует')
Else
MsgBox(0, '', 'Свободен')
EndIf
_WinAPI_ReleaseMutex ($hMutex)
_WinAPI_CloseHandle($hMutex)
Case $Button3
_WinAPI_ReleaseMutex ($hMutex)
_WinAPI_CloseHandle($hMutex)
EndSwitch
WEnd