ViSiToR
Silver Member | Редактировать | Профиль | Сообщение | ICQ | Цитировать | Сообщить модератору Maza Faka 15:22 12-01-2009 Цитата: механизм функции мне до конца не понятен | Там ничего сложного, см. комментарии: Код: _Singleton("test") Func _Singleton($sOccurenceName, $iFlag = 0) Local Const $ERROR_ALREADY_EXISTS = 183 Local $handle, $lastError, $pSecurityAttributes = 0 ;Создаём Mutex инстанцию $handle = DllCall("kernel32.dll", "int", "CreateMutex", "ptr", $pSecurityAttributes, "long", 1, "str", $sOccurenceName) ;Проверяем последний error вызваны в системе (через API) $lastError = DllCall("kernel32.dll", "int", "GetLastError") ;Если наш error совпадает (надо полагать ошибка повторного создания Mutex?), то завершаем работу If $lastError[0] = $ERROR_ALREADY_EXISTS Then ;Сюда у тебя дело доходит при повторном запуске? If BitAND($iFlag, 1) Then MsgBox(48, "Debug", _ "$iFlag = 1, повторный запуск программы, функция возвращает значение 0 (@error = " & $lastError[0] & ").") Return SetError($lastError[0], $lastError[0], 0) Else MsgBox(48, "Debug", "$iFlag = 0, повторный запуск программы, завершение скрипта.") Exit -1 EndIf EndIf MsgBox(64, "Debug", "Первый запуск программы, функция возвращает значение (" & $handle[0] & ").") Return $handle[0] EndFunc | Я там вырезал флаг 2, ты ведь не с ним используешь функцию? Цитата: Я тут подумал, ведь версии AutoIt-а тоже менялись... | А в какой у тебя не работает?
---------- ViSiToR a.k.a CreatoR CreatoR это не ник, CreatoR это стиль жизни! |
|