На главную Наши проекты:
Журнал   ·   Discuz!ML   ·   Wiki   ·   DRKB   ·   Помощь проекту
ПРАВИЛА FAQ Помощь Участники Календарь Избранное RSS
msm.ru
! Правила раздела Visual Basic: Общие вопросы
Здесь обсуждаются вопросы по языку Visual Basic 1-6 (а так же по схожим языкам, как, например, PowerBASIC).
Вопросы по Visual Basic .NET (это который входит в состав Visual Studio 2002/2003/2005/2008+, для тех, кто не в курсе) обсуждаются в разделе .NET.

Обратите внимание:
1. Прежде чем начать новую тему или отправить сообщение, убедитесь, что Вы не нарушаете правил форума!
2. Обязательно воспользуйтесь поиском. Возможно, Ваш вопрос уже обсуждали. Полезные ссылки приведены ниже.
3. Темы с просьбой выполнить какую-либо работу за автора в этом разделе не обсуждаются. Студенты, вам сюда: ПОМОЩЬ СТУДЕНТАМ!
4. Используйте теги [ code=vba ] ...текст программы... [ /code ] для выделения текста программы подсветкой.
5. Помните, здесь телепатов нет. Формулируйте свой вопрос максимально грамотно и чётко: Как правильно задавать вопросы
6. Запрещено отвечать в темы месячной (и более) давности, без веских на то причин.

Полезные ссылки:
user posted image FAQ Сайта user posted image FAQ Раздела user posted image Кладовка user posted image Наши Исходники user posted image API-Guide user posted image Поиск по Разделу user posted image MSDN Library Online user posted image Google

Ваше мнение о модераторах: user posted image SCINER, user posted image B.V.
Модераторы: SCINER, B.V.
  
> Народ! как правильно включить мутекс?
    Народ, если кто знает - подскажите, ежели не в лом!
    Lamer, будь человеком!
      Ну, мутекс не подключается, он создаётся в памяти! Тем более это было лишь предложение. Можно сполне обойтись без мутекса. Например, главная программа, которая содержит све нужные ей компоненты, запускает раза три маленькую прогу, задача которой лишь проверять запущена ли главная программа. Вот реальная экономия памяти. Можно также, чтобы одинаковые экземпляры обращались в главную библиотеку, ф-ии которой вызывались бы как АПИ ф-ии. Это тоже реальная экономия! Наконец, все экземпляры были бы по коду уникальны и содержали несвязанные между собой операции, например, один экзешник проверяет, нажат ли пробел, вторая отображает форму, третий - проверяет почту на ящике и т. п. Кстати, с помощью мутекса, эти проги могли бы даже обмениваться информацией.
      Ну я постараюсь найти что-нибудь по мутексам и семафорам, может сам чего наберу! Ну в общем скоро я сюда эту доку закину. Но на твоём месте я бы подумал над другими предложенными мной вариантами.

        короче, я нашел пример создания мутекса на си, и представил себе, что на басике
        это должно выглядеть приблизительно так:
        Type SECURITY_ATTRIBUTES
        nLength As Long
        lpSecurityDescriptor As Long
        bInheritHandle As Long
        End Type
        Declare Function CreateMutex Lib "kernel32" Alias "CreateMutexA" (lpMutexAttributes As SECURITY_ATTRIBUTES, ByVal bInitialOwner As Long, ByVal lpName As String) As Long
        Dim hMutex As Long
        Dim x As SECURITY_ATTRIBUTES
        hMutex = CreateMutex(x, False, "fuckingшицмазафака_mutex")
        получаю hMutex=0. Позвольте, а где же яйца? В смысле мутекс?
        УУУ как все запущенооооо!!!!!!
          Во чего нашел!!
          http://www.allapi.net/agnet/apiguide.php
          'This code must be pasted into a module
          'Set the project's startup object to 'Sub Main' (-> Project -> Project Properties -> General Tab -> Startup Object)
          Public Declare Function CreateMutex Lib "kernel32" Alias "CreateMutexA" (lpMutexAttributes As SECURITY_ATTRIBUTES, ByVal bInitialOwner As Long, ByVal lpName As String) As Long
          Public Type SECURITY_ATTRIBUTES
          nLength As Long
          lpSecurityDescriptor As Long
          bInheritHandle As Long
          End Type
          Public Const ERROR_ALREADY_EXISTS = 183&
          Private Sub Main()
          'KPD-Team 1999
          'URL: http://www.allapi.net/
          'E-Mail: KPDTeam@Allapi.net
          ' -> code by Raist Lin
          Dim sa As SECURITY_ATTRIBUTES
          sa.bInheritHandle = 1
          sa.lpSecurityDescriptor = 0
          sa.nLength = Len(sa)
          'Try to create a new Mutex
          Debug.Print CreateMutex(sa, 1, App.Title)
          Debug.Print Err.LastDllError
          'Check if the function was succesfull
          If (Err.LastDllError = ERROR_ALREADY_EXISTS) Then
          'More than one instance detected
          MsgBox "More than one instance"
          Else
          'No other instance detected...
          'Your program-load code here
          End If
          End Sub
            ну ладно. мутекс я создал. хендел его знаю, и как зовут тоже, а дальше-то что???
              А дальше вот что - надо создать поток, который дождется освобождения мутекса:
              WaitForSingleObject hMutex, INFINITE
              и выполнит нужны нам код.
              спасибо тебе Lamer!
              если возникнут вопросы - мыльте, покажу исходники )))
                Блин, а я уже доку собрался сюда выкидовать! Ну ладно, я рад, что ты сам доехал до создания мутекса!
                0 пользователей читают эту тему (0 гостей и 0 скрытых пользователей)
                0 пользователей:


                Рейтинг@Mail.ru
                [ Script execution time: 0,0296 ]   [ 16 queries used ]   [ Generated: 27.04.24, 22:00 GMT ]