Форум

Как запретить запуск одной проги несколько раз ?

Dima: Есть какая то функция в Xharbour ? PS Вроде был такой вопрос , но пока не найду........

Ответов - 34, стр: 1 2 All

gustow: Понял. Напишу, как получится. "Кто любит более тебя - напишет более меня" :)

MMK: gustow пишет: Понял. Напишу В связке харбор+FWH многие используют UEStudio По ссылке ниже пример описпния , как ее использовать. Может натолкнет на нвые мысли или чем поможет :)) http://www.atzwanger.com/FWHRAD/FWHRAD.html

Andrey: Dima пишет: Где взять доку по WINAPI на русском ? Могу выслать на ящик.


MMK: Andrey пишет: Могу выслать на ящик Благодарность не будет знать границ .... :)))) mkizev////mail.ru

Dima: Andrey пишет: Могу выслать на ящик Буду ждать тёрк-тёрк////тёрк.ru ;)

Andrey: Dima А кинь пожалуйста примером который ты сделал на чистом хХарборе !

Dima: Andrey пишет: А кинь пожалуйста примером который ты сделал на чистом хХарборе ! Примером чего Андрей ?

Andrey: Dima пишет: Примером чего Андрей ? Примером: "Как запретить запуск одной проги несколько раз ?" или ты его не сделал ?

Dima: Proc Main if isexerunning("test") ? "Прога уже запущена" quit endif return nil #pragma BEGINDUMP #include <windows.h> #include <hbapi.h> #include <shlobj.h> HB_FUNC( ISEXERUNNING ) // ( cExeNameCaseSensitive ) --> lResult { HANDLE hMutex = CreateMutex( NULL, TRUE, (LPTSTR) hb_parc(1) ); hb_retl( GetLastError() == ERROR_ALREADY_EXISTS ); ReleaseMutex( hMutex ); } #pragma ENDDUMP

Andrey: Спасибо Дима ! А как автоматически определять имя проги ? Если она будет не "test" ?

Dima: Andrey пишет: А как автоматически определять имя проги ? Если она будет не "test" ? Ну ты ведь знаешь заранее как ты обзовешь EXE шник ;) Хотя возможно есть такая функция в CT EXENAME()

Dima: Andrey По ходу в присланной тобой докуметации я так и не нашел функции CreateMutex()

Andrey: А что это за функция ? Что ты хочешь сделать ?

Andrey: Сделал прогу, только не могу поднять "запущенную ранее программу" ! Как получить "хендл" запущенной ранее программы ? =========================================================== #define MYPROGRAM " Программа проверки запуска ! " Procedure Main LOCAL nI:=0, nKey, hWnd := GetForegroundWindow() LOCAL cNameWin, cExeRun := SUBSTR(EXENAME(), RAT("\",EXENAME())+1 ) IF hb_gt_version() == "WVT" // Если используется граф.терминал GTWVT.LIB cNameWin := HB_OEMTOANSI( MYPROGRAM ) ELSE cNameWin := MYPROGRAM ENDIF GTInfo( 26, cNameWin ) SETCOLOR("15/2") CLEAR SCREEN ? "Номер окна:", hWnd ? "Имя ЕХЕ-файла: ", cExeRun if isexerunning(cExeRun) ALERT("Прога уже запущена !") // Как сделать переключение на ренее запущенную программу ? MAXIMIZE( hWnd ) // - не работает tone(400,2) quit endif DO WHILE .T. nKey := INKEY(1) IF nKey == 27 // K_ESC EXIT ENDIF @ 4,2 SAY "ESC-выход Режим ожидания:" ?? nI++ ENDDO return #pragma BEGINDUMP #include <windows.h> #include <hbapi.h> #include <shlobj.h> HB_FUNC( ISEXERUNNING ) // ( cExeNameCaseSensitive ) --> lResult HANDLE hMutex = CreateMutex( NULL, TRUE, (LPTSTR) hb_parc(1) ); hb_retl( GetLastError() == ERROR_ALREADY_EXISTS ); ReleaseMutex( hMutex ); HB_FUNC( GETFOREGROUNDWINDOW ) hb_retnl( (LONG) GetForegroundWindow() ); HB_FUNC( MINIMIZE ) ShowWindow( (HWND) hb_parnl(1), SW_MINIMIZE ); HB_FUNC( MAXIMIZE ) ShowWindow( (HWND) hb_parnl(1), SW_RESTORE ); #pragma ENDDUMP ==================================================



полная версия страницы