Помогите разобратся почему не выполняется условие во втором Timer2? Принцип работы приложения такой: запускаем первое начинают работать часы...затем запускаем второе...часы там не работают так как запущены в перво приложении. Как только нажимаю кнопку в первом,часы останавливаются и начинают работать часы во втором. Идея моя такая: Когда открывается форма на событие on create() создаётся мьютекс если он уже создан то ничего не происходит. Установлен второй таймер который работает всегда и проверяет есть ли мьютекс или нет. По нажатию на кнопку останавливаются часы, удаляется мьютекс.
| Код |
#include <vcl.h> #pragma hdrstop
#include "Unit3.h" //--------------------------------------------------------------------------- #pragma package(smart_init) #pragma resource "*.dfm" TForm3 *Form3; int s=0; int m=0; int h=0; int x=0; HANDLE H; HANDLE hx; //--------------------------------------------------------------------------- __fastcall TForm3::TForm3(TComponent* Owner) : TForm(Owner) { } //--------------------------------------------------------------------------- void __fastcall TForm3::Timer1Timer(TObject *Sender) { Panel3->Caption=s; Panel2->Caption=m; Panel1->Caption=h; s++; if(s==60) {m++; s=0;} if(m==60) {h++; m=0;} if(h==24) h=0;
} //--------------------------------------------------------------------------- void __fastcall TForm3::Button1Click(TObject *Sender) { Timer1->Enabled=false; ReleaseMutex(H); CloseHandle(H); // удаляем мьютекс , а не освобождаем его Sleep(3000); } //--------------------------------------------------------------------------- void __fastcall TForm3::Timer2Timer(TObject *Sender) {
if (OpenMutex(SYNCHRONIZE, true, "MyMutex")) // есть? Значит, другое приложение открыло диалог { Panel4->Caption=x; x++; } else{ H=CreateMutex(NULL, true, "MyMutex"); Timer1->Enabled=true; } } //--------------------------------------------------------------------------- void __fastcall TForm3::FormCreate(TObject *Sender) { if(OpenMutex(SYNCHRONIZE, true, "MyMutex")) { Timer1->Enabled=false;; } else{ H=CreateMutex(NULL, true, "MyMutex"); } } //---------------------------------------------------------------------------
|
|